{$router->__toString()}";
}
$router->get('/routes', 'dump_routes');
+$router->any('*', 'main_handler');
/** @var array $routes */
$routes = require __DIR__ . '/some-routes.php';
-
foreach ($routes as $route) {
// group
if (is_array($route[1])) {
$rs = $route[1];
- $router->group($route[0], function (CachedRouter $router) use($rs){
+ $router->group($route[0], function (RouterInterface $router) use ($rs) {
foreach ($rs as $r) {
// cannot cache the \Closure
if (is_object($r[2])) {
continue;
}
- $router->map($r[0], $r[1], $r[2], isset($r[3]) ? $r[3] : []);
+ $router->map($r[0], $r[1], $r[2], $r[3] ?? [], $r[4] ?? []);
}
});
@@ -74,8 +64,9 @@ function dump_routes() {
continue;
}
- $router->map($route[0], $route[1], $route[2], isset($route[3]) ? $route[3] : []);
+ $router->map($route[0], $route[1], $route[2], $route[3] ?? [], $route[4] ?? []);
}
+$router->completed();
$dispatcher = new Dispatcher([
'dynamicAction' => true,
@@ -86,7 +77,12 @@ function dump_routes() {
echo "the page $path not found!";
});
-// $dispatcher->dispatch();
+$dispatcher->setRouter($router);
// var_dump($router->getConfig(),$router);die;
-$router->dispatch($dispatcher);
+try {
+ // $router->dispatch($dispatcher);
+ $dispatcher->dispatchUri();
+} catch (Throwable $e) {
+ var_dump($e);
+}
diff --git a/example/cached/bench-routes-cache.php b/example/cached/bench-routes-cache.php
new file mode 100644
index 0000000..8d5dbe4
--- /dev/null
+++ b/example/cached/bench-routes-cache.php
@@ -0,0 +1,19309 @@
+ [
+ 'GET /h/akjnpgrn' => [
+ 'name' => '',
+ 'path' => '/h/akjnpgrn',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /qm/mnkkaosj/f/oyfciidad/' => [
+ 'name' => '',
+ 'path' => '/qm/mnkkaosj/f/oyfciidad/',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /i/hk/dikhdhtaccbethew' => [
+ 'name' => '',
+ 'path' => '/i/hk/dikhdhtaccbethew',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /p/lfezeldnk' => [
+ 'name' => '',
+ 'path' => '/p/lfezeldnk',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /qj/gjiqcq/jj/' => [
+ 'name' => '',
+ 'path' => '/qj/gjiqcq/jj/',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /ea/qsk/dtu' => [
+ 'name' => '',
+ 'path' => '/ea/qsk/dtu',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /qxvrbtprga' => [
+ 'name' => '',
+ 'path' => '/qxvrbtprga',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /hz/ccbnpuxahzraiwh/rn/' => [
+ 'name' => '',
+ 'path' => '/hz/ccbnpuxahzraiwh/rn/',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /bhmilprlw' => [
+ 'name' => '',
+ 'path' => '/bhmilprlw',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /tdqfbxyy/jnqjxcoxhnhc/' => [
+ 'name' => '',
+ 'path' => '/tdqfbxyy/jnqjxcoxhnhc/',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /yeu/trbfg' => [
+ 'name' => '',
+ 'path' => '/yeu/trbfg',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /dogykdvls' => [
+ 'name' => '',
+ 'path' => '/dogykdvls',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /goods/wvhfzwtbwdwbhwg' => [
+ 'name' => '',
+ 'path' => '/goods/wvhfzwtbwdwbhwg',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /user/vblohh' => [
+ 'name' => '',
+ 'path' => '/user/vblohh',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /g/nsfeyzcrmzniqok' => [
+ 'name' => '',
+ 'path' => '/g/nsfeyzcrmzniqok',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /dbilirn/m/' => [
+ 'name' => '',
+ 'path' => '/dbilirn/m/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /vvjsxj/gj' => [
+ 'name' => '',
+ 'path' => '/vvjsxj/gj',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /user/yanntcpigcuqthy' => [
+ 'name' => '',
+ 'path' => '/user/yanntcpigcuqthy',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /eq/hraam/' => [
+ 'name' => '',
+ 'path' => '/eq/hraam/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /ugsstkmj' => [
+ 'name' => '',
+ 'path' => '/ugsstkmj',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /aighibehu/c/tms' => [
+ 'name' => '',
+ 'path' => '/aighibehu/c/tms',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /qgccl/neg/zfb/jmknhw' => [
+ 'name' => '',
+ 'path' => '/qgccl/neg/zfb/jmknhw',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /goods/dvbjygazdmsmlry' => [
+ 'name' => '',
+ 'path' => '/goods/dvbjygazdmsmlry',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /qnskmrpmfkq' => [
+ 'name' => '',
+ 'path' => '/qnskmrpmfkq',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /fqozwgghmypmrztj' => [
+ 'name' => '',
+ 'path' => '/fqozwgghmypmrztj',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /aljdbj/jildsmw/auks' => [
+ 'name' => '',
+ 'path' => '/aljdbj/jildsmw/auks',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /rc/fratzt/pn/opdb/sd/' => [
+ 'name' => '',
+ 'path' => '/rc/fratzt/pn/opdb/sd/',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /fdqtzimyhqtpfi/znvp/a/k' => [
+ 'name' => '',
+ 'path' => '/fdqtzimyhqtpfi/znvp/a/k',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /lzyqbdb/oivfbb' => [
+ 'name' => '',
+ 'path' => '/lzyqbdb/oivfbb',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /tjnwyuidrw/epiqjx/pij' => [
+ 'name' => '',
+ 'path' => '/tjnwyuidrw/epiqjx/pij',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /user/koqwcgyfucfq' => [
+ 'name' => '',
+ 'path' => '/user/koqwcgyfucfq',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /y/kubale/' => [
+ 'name' => '',
+ 'path' => '/y/kubale/',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /zbuyrkvhuybvvurwitw' => [
+ 'name' => '',
+ 'path' => '/zbuyrkvhuybvvurwitw',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /api/bhpusfjhpuag' => [
+ 'name' => '',
+ 'path' => '/api/bhpusfjhpuag',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /user/nsnsyakwxfikuee' => [
+ 'name' => '',
+ 'path' => '/user/nsnsyakwxfikuee',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /v2/eulqauqocyrfmmx' => [
+ 'name' => '',
+ 'path' => '/v2/eulqauqocyrfmmx',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /qmlwpeg' => [
+ 'name' => '',
+ 'path' => '/qmlwpeg',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /jvsyg/nr/fxj/guduixx' => [
+ 'name' => '',
+ 'path' => '/jvsyg/nr/fxj/guduixx',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /e/ifxbkyrts/vghwqwkuqm' => [
+ 'name' => '',
+ 'path' => '/e/ifxbkyrts/vghwqwkuqm',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /mxkrsynthu' => [
+ 'name' => '',
+ 'path' => '/mxkrsynthu',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /ik/hyqjb/dljm' => [
+ 'name' => '',
+ 'path' => '/ik/hyqjb/dljm',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /my/sbyegp/eaw' => [
+ 'name' => '',
+ 'path' => '/my/sbyegp/eaw',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /zgi/uwzh' => [
+ 'name' => '',
+ 'path' => '/zgi/uwzh',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /cj/l/t/xjct' => [
+ 'name' => '',
+ 'path' => '/cj/l/t/xjct',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /ec/gbrg/lwqlp/du/jch/i/' => [
+ 'name' => '',
+ 'path' => '/ec/gbrg/lwqlp/du/jch/i/',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /ikekc/dk/ycpqc/rpsnvrua' => [
+ 'name' => '',
+ 'path' => '/ikekc/dk/ycpqc/rpsnvrua',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /lsqhrqj/ktwqg/e' => [
+ 'name' => '',
+ 'path' => '/lsqhrqj/ktwqg/e',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /goods/augmqstkrnxpsxjkvb' => [
+ 'name' => '',
+ 'path' => '/goods/augmqstkrnxpsxjkvb',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /krokzzizl' => [
+ 'name' => '',
+ 'path' => '/krokzzizl',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /api/ygpjan' => [
+ 'name' => '',
+ 'path' => '/api/ygpjan',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /wpnrlq/jmffnlk/xhpk/ggv' => [
+ 'name' => '',
+ 'path' => '/wpnrlq/jmffnlk/xhpk/ggv',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /wqqivdv/' => [
+ 'name' => '',
+ 'path' => '/wqqivdv/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /v2/djjevmlptjwklbv' => [
+ 'name' => '',
+ 'path' => '/v2/djjevmlptjwklbv',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /api/tkdgtdtgbqyicak' => [
+ 'name' => '',
+ 'path' => '/api/tkdgtdtgbqyicak',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /b/baz/w/iim' => [
+ 'name' => '',
+ 'path' => '/b/baz/w/iim',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /fre/iat/ulu/mjaev' => [
+ 'name' => '',
+ 'path' => '/fre/iat/ulu/mjaev',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /edvo/dynqnnh/dpnwkw' => [
+ 'name' => '',
+ 'path' => '/edvo/dynqnnh/dpnwkw',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /v/cpy/ls/hrprf' => [
+ 'name' => '',
+ 'path' => '/v/cpy/ls/hrprf',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /goods/bakvga' => [
+ 'name' => '',
+ 'path' => '/goods/bakvga',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /lsefkvozx/gljcbioeemk' => [
+ 'name' => '',
+ 'path' => '/lsefkvozx/gljcbioeemk',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /giwqnmfxihb/' => [
+ 'name' => '',
+ 'path' => '/giwqnmfxihb/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /sgdnlozjhho/rq/' => [
+ 'name' => '',
+ 'path' => '/sgdnlozjhho/rq/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /smizgtam' => [
+ 'name' => '',
+ 'path' => '/smizgtam',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /qdgjr' => [
+ 'name' => '',
+ 'path' => '/qdgjr',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /aiaienfnp/d/rqlgsd' => [
+ 'name' => '',
+ 'path' => '/aiaienfnp/d/rqlgsd',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /v2/hodaykhuqscg' => [
+ 'name' => '',
+ 'path' => '/v2/hodaykhuqscg',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /xadpq' => [
+ 'name' => '',
+ 'path' => '/xadpq',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /uoqbc' => [
+ 'name' => '',
+ 'path' => '/uoqbc',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /api/qpsvpcicgzbiarg' => [
+ 'name' => '',
+ 'path' => '/api/qpsvpcicgzbiarg',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /mcbdp' => [
+ 'name' => '',
+ 'path' => '/mcbdp',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /uucse/' => [
+ 'name' => '',
+ 'path' => '/uucse/',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /sqfdrmpb/ohvqyo' => [
+ 'name' => '',
+ 'path' => '/sqfdrmpb/ohvqyo',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /dzafkazfhx' => [
+ 'name' => '',
+ 'path' => '/dzafkazfhx',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /stx/bphtk' => [
+ 'name' => '',
+ 'path' => '/stx/bphtk',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /jsmjgyjquxiyvl/lp' => [
+ 'name' => '',
+ 'path' => '/jsmjgyjquxiyvl/lp',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /user/zpjaxcuwpqhi' => [
+ 'name' => '',
+ 'path' => '/user/zpjaxcuwpqhi',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /v2/swobnj' => [
+ 'name' => '',
+ 'path' => '/v2/swobnj',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /mjplivkj' => [
+ 'name' => '',
+ 'path' => '/mjplivkj',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /otx/ll' => [
+ 'name' => '',
+ 'path' => '/otx/ll',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /goods/ljgvmxztjsrogni' => [
+ 'name' => '',
+ 'path' => '/goods/ljgvmxztjsrogni',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /ccbbp' => [
+ 'name' => '',
+ 'path' => '/ccbbp',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /user/fpduszgwvtkl' => [
+ 'name' => '',
+ 'path' => '/user/fpduszgwvtkl',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /kb/amjvvn/cv/rxcgkmt' => [
+ 'name' => '',
+ 'path' => '/kb/amjvvn/cv/rxcgkmt',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /vchoy/hmityjttuth/m' => [
+ 'name' => '',
+ 'path' => '/vchoy/hmityjttuth/m',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /zhqsqdygnvomzhyhtgww' => [
+ 'name' => '',
+ 'path' => '/zhqsqdygnvomzhyhtgww',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /otqwz/fsqvsts/f' => [
+ 'name' => '',
+ 'path' => '/otqwz/fsqvsts/f',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /yq/uhrlc' => [
+ 'name' => '',
+ 'path' => '/yq/uhrlc',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /loln/hboxfokqlrjpmwz/w' => [
+ 'name' => '',
+ 'path' => '/loln/hboxfokqlrjpmwz/w',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /oejea/cay' => [
+ 'name' => '',
+ 'path' => '/oejea/cay',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /tyaih/rnjcwxia' => [
+ 'name' => '',
+ 'path' => '/tyaih/rnjcwxia',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /user/sjuskk' => [
+ 'name' => '',
+ 'path' => '/user/sjuskk',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /knodhaturp' => [
+ 'name' => '',
+ 'path' => '/knodhaturp',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /fv/qvnbblw/' => [
+ 'name' => '',
+ 'path' => '/fv/qvnbblw/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /api/pfttrhshavuxnwjhlh' => [
+ 'name' => '',
+ 'path' => '/api/pfttrhshavuxnwjhlh',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /api/gbuukv' => [
+ 'name' => '',
+ 'path' => '/api/gbuukv',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /efdzykvzn' => [
+ 'name' => '',
+ 'path' => '/efdzykvzn',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /cbsvhdikmxjoy' => [
+ 'name' => '',
+ 'path' => '/cbsvhdikmxjoy',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /goods/obluhxpghgmgexjnbi' => [
+ 'name' => '',
+ 'path' => '/goods/obluhxpghgmgexjnbi',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /ghyoefd' => [
+ 'name' => '',
+ 'path' => '/ghyoefd',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /fz/p/vtnvhzhfklhibf' => [
+ 'name' => '',
+ 'path' => '/fz/p/vtnvhzhfklhibf',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /t/o/e/ypn/uau' => [
+ 'name' => '',
+ 'path' => '/t/o/e/ypn/uau',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /zfsqtol/igmgjndy/nfn/th' => [
+ 'name' => '',
+ 'path' => '/zfsqtol/igmgjndy/nfn/th',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /hij/ex/sanbqumjz' => [
+ 'name' => '',
+ 'path' => '/hij/ex/sanbqumjz',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /ktoyxkb' => [
+ 'name' => '',
+ 'path' => '/ktoyxkb',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /zxne/ytaj/t' => [
+ 'name' => '',
+ 'path' => '/zxne/ytaj/t',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /xhq/goze/ttyv/jms/' => [
+ 'name' => '',
+ 'path' => '/xhq/goze/ttyv/jms/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /fcbkoocki/' => [
+ 'name' => '',
+ 'path' => '/fcbkoocki/',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /goods/arfmwjwowsdecis' => [
+ 'name' => '',
+ 'path' => '/goods/arfmwjwowsdecis',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /k/bfdta/mubtvo/qp/' => [
+ 'name' => '',
+ 'path' => '/k/bfdta/mubtvo/qp/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /goods/nkysxi' => [
+ 'name' => '',
+ 'path' => '/goods/nkysxi',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /davqp' => [
+ 'name' => '',
+ 'path' => '/davqp',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /tihtcogsnh/jk/mr/' => [
+ 'name' => '',
+ 'path' => '/tihtcogsnh/jk/mr/',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /api/myclae' => [
+ 'name' => '',
+ 'path' => '/api/myclae',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /vku/izomjl/at' => [
+ 'name' => '',
+ 'path' => '/vku/izomjl/at',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /doblrqg/forprowbaohxl' => [
+ 'name' => '',
+ 'path' => '/doblrqg/forprowbaohxl',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /kbve/fansycmxro' => [
+ 'name' => '',
+ 'path' => '/kbve/fansycmxro',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /v2/nstkpgshfjwkuhngib' => [
+ 'name' => '',
+ 'path' => '/v2/nstkpgshfjwkuhngib',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /lxvzjrkgi/' => [
+ 'name' => '',
+ 'path' => '/lxvzjrkgi/',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /goods/iltvyo' => [
+ 'name' => '',
+ 'path' => '/goods/iltvyo',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /v2/zdrlnouduygynnv' => [
+ 'name' => '',
+ 'path' => '/v2/zdrlnouduygynnv',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /qakijdmizeaqdf' => [
+ 'name' => '',
+ 'path' => '/qakijdmizeaqdf',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /hosghaiotwfmken/stz/c/' => [
+ 'name' => '',
+ 'path' => '/hosghaiotwfmken/stz/c/',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /bihgp' => [
+ 'name' => '',
+ 'path' => '/bihgp',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /user/eivahqvpihww' => [
+ 'name' => '',
+ 'path' => '/user/eivahqvpihww',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /enw/gl/k/otwaecwbhmc' => [
+ 'name' => '',
+ 'path' => '/enw/gl/k/otwaecwbhmc',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /oql/ybp/dc/i' => [
+ 'name' => '',
+ 'path' => '/oql/ybp/dc/i',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /lizzk/j/nclys/nqw/ibc' => [
+ 'name' => '',
+ 'path' => '/lizzk/j/nclys/nqw/ibc',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /xianps/yqtyp' => [
+ 'name' => '',
+ 'path' => '/xianps/yqtyp',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /goods/ulqmldnkaggqxyr' => [
+ 'name' => '',
+ 'path' => '/goods/ulqmldnkaggqxyr',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /api/dxvryikvcwnazah' => [
+ 'name' => '',
+ 'path' => '/api/dxvryikvcwnazah',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /tnqvdnqjtvrf/mswe/' => [
+ 'name' => '',
+ 'path' => '/tnqvdnqjtvrf/mswe/',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /hrzbgaogcc' => [
+ 'name' => '',
+ 'path' => '/hrzbgaogcc',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /goods/iuyxmduqgspk' => [
+ 'name' => '',
+ 'path' => '/goods/iuyxmduqgspk',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /rqcl/bmwg' => [
+ 'name' => '',
+ 'path' => '/rqcl/bmwg',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /yk/xqlmajvry' => [
+ 'name' => '',
+ 'path' => '/yk/xqlmajvry',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /xaq/b/utvm' => [
+ 'name' => '',
+ 'path' => '/xaq/b/utvm',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /tqwlppkyjgu' => [
+ 'name' => '',
+ 'path' => '/tqwlppkyjgu',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /oopdl/' => [
+ 'name' => '',
+ 'path' => '/oopdl/',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /sjs/wimcyp/' => [
+ 'name' => '',
+ 'path' => '/sjs/wimcyp/',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /u/vqq/qeaavjfrh/' => [
+ 'name' => '',
+ 'path' => '/u/vqq/qeaavjfrh/',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /api/eurnnmvxgdny' => [
+ 'name' => '',
+ 'path' => '/api/eurnnmvxgdny',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /zz/sfyn/gxvdk/mxgdwi/' => [
+ 'name' => '',
+ 'path' => '/zz/sfyn/gxvdk/mxgdwi/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /dmnagbvx/' => [
+ 'name' => '',
+ 'path' => '/dmnagbvx/',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /vfegazr/jzak' => [
+ 'name' => '',
+ 'path' => '/vfegazr/jzak',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /numslh/iaq/rjqilelvw/h' => [
+ 'name' => '',
+ 'path' => '/numslh/iaq/rjqilelvw/h',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /user/vrxgxkfwjfcbddbbph' => [
+ 'name' => '',
+ 'path' => '/user/vrxgxkfwjfcbddbbph',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /mpbht/wwnrfyoc/jyw/g/' => [
+ 'name' => '',
+ 'path' => '/mpbht/wwnrfyoc/jyw/g/',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /mbvc/rd/oqqeqzezrw' => [
+ 'name' => '',
+ 'path' => '/mbvc/rd/oqqeqzezrw',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /ljladkw/nc/l' => [
+ 'name' => '',
+ 'path' => '/ljladkw/nc/l',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /yg/iptyfmwwoi/eg' => [
+ 'name' => '',
+ 'path' => '/yg/iptyfmwwoi/eg',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /sdy/q/zovzakolr/pd/mz' => [
+ 'name' => '',
+ 'path' => '/sdy/q/zovzakolr/pd/mz',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /ofns/wby/o/t' => [
+ 'name' => '',
+ 'path' => '/ofns/wby/o/t',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /gl/hzgf/i/rp/hr/' => [
+ 'name' => '',
+ 'path' => '/gl/hzgf/i/rp/hr/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /ocrqtdbz/bmecjli/ipbbn' => [
+ 'name' => '',
+ 'path' => '/ocrqtdbz/bmecjli/ipbbn',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /goods/sjmpmp' => [
+ 'name' => '',
+ 'path' => '/goods/sjmpmp',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /bfp/xmduw/b' => [
+ 'name' => '',
+ 'path' => '/bfp/xmduw/b',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /p/gqhctjtvyfzrcb/r' => [
+ 'name' => '',
+ 'path' => '/p/gqhctjtvyfzrcb/r',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /api/atwrrftybiyfqaw' => [
+ 'name' => '',
+ 'path' => '/api/atwrrftybiyfqaw',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /goods/pbifjkhikrwh' => [
+ 'name' => '',
+ 'path' => '/goods/pbifjkhikrwh',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /rhdj/eeh' => [
+ 'name' => '',
+ 'path' => '/rhdj/eeh',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /ttuw/cno/jtq' => [
+ 'name' => '',
+ 'path' => '/ttuw/cno/jtq',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /sng/r/kmcdpx' => [
+ 'name' => '',
+ 'path' => '/sng/r/kmcdpx',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /mrrxs' => [
+ 'name' => '',
+ 'path' => '/mrrxs',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /goods/gwlxupxlcbsrbsd' => [
+ 'name' => '',
+ 'path' => '/goods/gwlxupxlcbsrbsd',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /s/roc/ingd/rgb' => [
+ 'name' => '',
+ 'path' => '/s/roc/ingd/rgb',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /zquie/smlszyeqycj' => [
+ 'name' => '',
+ 'path' => '/zquie/smlszyeqycj',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /goods/fzjuajgsyljcwho' => [
+ 'name' => '',
+ 'path' => '/goods/fzjuajgsyljcwho',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /goods/nzyshycafcsk' => [
+ 'name' => '',
+ 'path' => '/goods/nzyshycafcsk',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /wpk/oevns' => [
+ 'name' => '',
+ 'path' => '/wpk/oevns',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /kvovzkralitge/l/u/v/' => [
+ 'name' => '',
+ 'path' => '/kvovzkralitge/l/u/v/',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /p/qjyw/kuqri' => [
+ 'name' => '',
+ 'path' => '/p/qjyw/kuqri',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /kakiklpklau/jiskxqxyc' => [
+ 'name' => '',
+ 'path' => '/kakiklpklau/jiskxqxyc',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /api/bfnmufhfsnhlxny' => [
+ 'name' => '',
+ 'path' => '/api/bfnmufhfsnhlxny',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /tbyqrganxwm/vljojjmbb' => [
+ 'name' => '',
+ 'path' => '/tbyqrganxwm/vljojjmbb',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /uaxp/rpqc' => [
+ 'name' => '',
+ 'path' => '/uaxp/rpqc',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /olrdzxrfxeh' => [
+ 'name' => '',
+ 'path' => '/olrdzxrfxeh',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /c/cmo/r' => [
+ 'name' => '',
+ 'path' => '/c/cmo/r',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /tarzgesyadhly' => [
+ 'name' => '',
+ 'path' => '/tarzgesyadhly',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /yimaf/el' => [
+ 'name' => '',
+ 'path' => '/yimaf/el',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /agi/fg' => [
+ 'name' => '',
+ 'path' => '/agi/fg',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /w/maflacgzfpna/l' => [
+ 'name' => '',
+ 'path' => '/w/maflacgzfpna/l',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /f/z/f/xdmde/lliezvi/xrwwj' => [
+ 'name' => '',
+ 'path' => '/f/z/f/xdmde/lliezvi/xrwwj',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /dcdpwooil' => [
+ 'name' => '',
+ 'path' => '/dcdpwooil',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /v2/oepoibzzgchcxiz' => [
+ 'name' => '',
+ 'path' => '/v2/oepoibzzgchcxiz',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /dmxhjouywdk' => [
+ 'name' => '',
+ 'path' => '/dmxhjouywdk',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /om/x/tnrre/arrwf/u' => [
+ 'name' => '',
+ 'path' => '/om/x/tnrre/arrwf/u',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /lodyb/siggaa' => [
+ 'name' => '',
+ 'path' => '/lodyb/siggaa',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /biysqzjte/xdgqdbwr' => [
+ 'name' => '',
+ 'path' => '/biysqzjte/xdgqdbwr',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /api/fvtaxntjabbc' => [
+ 'name' => '',
+ 'path' => '/api/fvtaxntjabbc',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /b/uw/fu' => [
+ 'name' => '',
+ 'path' => '/b/uw/fu',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /user/gcwjtqtyqljordqipc' => [
+ 'name' => '',
+ 'path' => '/user/gcwjtqtyqljordqipc',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /e/popmanhoj' => [
+ 'name' => '',
+ 'path' => '/e/popmanhoj',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /v2/cuexstrpygurzaj' => [
+ 'name' => '',
+ 'path' => '/v2/cuexstrpygurzaj',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /lnprkjm' => [
+ 'name' => '',
+ 'path' => '/lnprkjm',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /dl/bzxq/forbg/mjwbqe' => [
+ 'name' => '',
+ 'path' => '/dl/bzxq/forbg/mjwbqe',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /ztwz/yfb/dge/wlv' => [
+ 'name' => '',
+ 'path' => '/ztwz/yfb/dge/wlv',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /hziqw/bymy' => [
+ 'name' => '',
+ 'path' => '/hziqw/bymy',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /kcc/cfj/ql' => [
+ 'name' => '',
+ 'path' => '/kcc/cfj/ql',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /v2/pnhbigyuqbkxmhm' => [
+ 'name' => '',
+ 'path' => '/v2/pnhbigyuqbkxmhm',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /izeidmfnmlgrbdhgrtnk' => [
+ 'name' => '',
+ 'path' => '/izeidmfnmlgrbdhgrtnk',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /shcif/ab/s/z/nswuczigoh' => [
+ 'name' => '',
+ 'path' => '/shcif/ab/s/z/nswuczigoh',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /fzazkobuj' => [
+ 'name' => '',
+ 'path' => '/fzazkobuj',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /fklwd' => [
+ 'name' => '',
+ 'path' => '/fklwd',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /xr/t/rn/bfyszexyxhgkwl' => [
+ 'name' => '',
+ 'path' => '/xr/t/rn/bfyszexyxhgkwl',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /qlbjpcrooyw' => [
+ 'name' => '',
+ 'path' => '/qlbjpcrooyw',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /dkhbrtwehy/s/' => [
+ 'name' => '',
+ 'path' => '/dkhbrtwehy/s/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /vkqsoouhlcgyuyzrn' => [
+ 'name' => '',
+ 'path' => '/vkqsoouhlcgyuyzrn',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /zeipmwemmz/eveb/zw' => [
+ 'name' => '',
+ 'path' => '/zeipmwemmz/eveb/zw',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /ycyytqaty/xmqg' => [
+ 'name' => '',
+ 'path' => '/ycyytqaty/xmqg',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /user/jbxhvakysalb' => [
+ 'name' => '',
+ 'path' => '/user/jbxhvakysalb',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /kzyjrdnlw/hht/fpsijgj' => [
+ 'name' => '',
+ 'path' => '/kzyjrdnlw/hht/fpsijgj',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /thpghmpvmpj/gue/oeefgm' => [
+ 'name' => '',
+ 'path' => '/thpghmpvmpj/gue/oeefgm',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /ugikc' => [
+ 'name' => '',
+ 'path' => '/ugikc',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /spukc' => [
+ 'name' => '',
+ 'path' => '/spukc',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /ymil/k/pmhce/j/gmde/wc' => [
+ 'name' => '',
+ 'path' => '/ymil/k/pmhce/j/gmde/wc',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /et/ugxznzd' => [
+ 'name' => '',
+ 'path' => '/et/ugxznzd',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /k/zacee/yp' => [
+ 'name' => '',
+ 'path' => '/k/zacee/yp',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /k/mw/pv' => [
+ 'name' => '',
+ 'path' => '/k/mw/pv',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /cezcbys' => [
+ 'name' => '',
+ 'path' => '/cezcbys',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /user/tnseoepgynwsctwsya' => [
+ 'name' => '',
+ 'path' => '/user/tnseoepgynwsctwsya',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /api/rcmqsdfyrrkqcdhjal' => [
+ 'name' => '',
+ 'path' => '/api/rcmqsdfyrrkqcdhjal',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /h/kfqs' => [
+ 'name' => '',
+ 'path' => '/h/kfqs',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /user/patjob' => [
+ 'name' => '',
+ 'path' => '/user/patjob',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /lpbodyc' => [
+ 'name' => '',
+ 'path' => '/lpbodyc',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /nrhz/qzyfuxoj/g' => [
+ 'name' => '',
+ 'path' => '/nrhz/qzyfuxoj/g',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /jhianp/fgonfma/yds' => [
+ 'name' => '',
+ 'path' => '/jhianp/fgonfma/yds',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /v2/dgjovn' => [
+ 'name' => '',
+ 'path' => '/v2/dgjovn',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /yj/leblysnumosx' => [
+ 'name' => '',
+ 'path' => '/yj/leblysnumosx',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /mvzkpfevwqnyiswv/bxw/' => [
+ 'name' => '',
+ 'path' => '/mvzkpfevwqnyiswv/bxw/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /drunk/' => [
+ 'name' => '',
+ 'path' => '/drunk/',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /jclzq/mz/y/' => [
+ 'name' => '',
+ 'path' => '/jclzq/mz/y/',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /user/ehgshp' => [
+ 'name' => '',
+ 'path' => '/user/ehgshp',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /mckx/trsseeb/qvmiasrw' => [
+ 'name' => '',
+ 'path' => '/mckx/trsseeb/qvmiasrw',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /csjqbembvvlbfsjy' => [
+ 'name' => '',
+ 'path' => '/csjqbembvvlbfsjy',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /zaiitrwgy/' => [
+ 'name' => '',
+ 'path' => '/zaiitrwgy/',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /jsfstufn/' => [
+ 'name' => '',
+ 'path' => '/jsfstufn/',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /ffndbm/oaavz/dsxdmn/fy' => [
+ 'name' => '',
+ 'path' => '/ffndbm/oaavz/dsxdmn/fy',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /api/pjrssykihlzyros' => [
+ 'name' => '',
+ 'path' => '/api/pjrssykihlzyros',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /gepktd/edonyqvrzb/' => [
+ 'name' => '',
+ 'path' => '/gepktd/edonyqvrzb/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /x/vgxmhb' => [
+ 'name' => '',
+ 'path' => '/x/vgxmhb',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /goods/nenuzfxmfnisbbogxl' => [
+ 'name' => '',
+ 'path' => '/goods/nenuzfxmfnisbbogxl',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /goods/omwloh' => [
+ 'name' => '',
+ 'path' => '/goods/omwloh',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /user/desrxkhmfoxmgmvphu' => [
+ 'name' => '',
+ 'path' => '/user/desrxkhmfoxmgmvphu',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /user/yjhmisiwxheegwk' => [
+ 'name' => '',
+ 'path' => '/user/yjhmisiwxheegwk',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /srwnke/ntsso' => [
+ 'name' => '',
+ 'path' => '/srwnke/ntsso',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /cjcs/znckp' => [
+ 'name' => '',
+ 'path' => '/cjcs/znckp',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /edd/yztacid/' => [
+ 'name' => '',
+ 'path' => '/edd/yztacid/',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /v2/pfmzoihkjwytmtf' => [
+ 'name' => '',
+ 'path' => '/v2/pfmzoihkjwytmtf',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /v2/etmtzr' => [
+ 'name' => '',
+ 'path' => '/v2/etmtzr',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /goods/ogdxsexfeydpfcv' => [
+ 'name' => '',
+ 'path' => '/goods/ogdxsexfeydpfcv',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /llaqvjocsp/hjuw' => [
+ 'name' => '',
+ 'path' => '/llaqvjocsp/hjuw',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /p/zokffwu' => [
+ 'name' => '',
+ 'path' => '/p/zokffwu',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /uu/eahuwvnp/z' => [
+ 'name' => '',
+ 'path' => '/uu/eahuwvnp/z',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /hihlqwhnj/uhsac' => [
+ 'name' => '',
+ 'path' => '/hihlqwhnj/uhsac',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /ctjp/hlcnguqzgnoa' => [
+ 'name' => '',
+ 'path' => '/ctjp/hlcnguqzgnoa',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /rcjrdbxokx' => [
+ 'name' => '',
+ 'path' => '/rcjrdbxokx',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /brw/zwoxbdfnkzstboxg/' => [
+ 'name' => '',
+ 'path' => '/brw/zwoxbdfnkzstboxg/',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /yveskgwdu' => [
+ 'name' => '',
+ 'path' => '/yveskgwdu',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /qt/hshaoea' => [
+ 'name' => '',
+ 'path' => '/qt/hshaoea',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /jtzomdxoh' => [
+ 'name' => '',
+ 'path' => '/jtzomdxoh',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /orhlrfy' => [
+ 'name' => '',
+ 'path' => '/orhlrfy',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /b/t/lpmba/myz/' => [
+ 'name' => '',
+ 'path' => '/b/t/lpmba/myz/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /jr/higwlnjo' => [
+ 'name' => '',
+ 'path' => '/jr/higwlnjo',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /mzzwacrbmdpps' => [
+ 'name' => '',
+ 'path' => '/mzzwacrbmdpps',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /uyoonssudh/pmg' => [
+ 'name' => '',
+ 'path' => '/uyoonssudh/pmg',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /cs/pspaic/aulfwro/grzkl' => [
+ 'name' => '',
+ 'path' => '/cs/pspaic/aulfwro/grzkl',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /initweoe/kpx/dor/lht' => [
+ 'name' => '',
+ 'path' => '/initweoe/kpx/dor/lht',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /kajgxeiyv/p/iwbosm/' => [
+ 'name' => '',
+ 'path' => '/kajgxeiyv/p/iwbosm/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /gmjdqdmn' => [
+ 'name' => '',
+ 'path' => '/gmjdqdmn',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /goods/vyfzohtiexmq' => [
+ 'name' => '',
+ 'path' => '/goods/vyfzohtiexmq',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /oolbmex/e' => [
+ 'name' => '',
+ 'path' => '/oolbmex/e',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /lkjd/sd/rynkh/fj/ahk/bix' => [
+ 'name' => '',
+ 'path' => '/lkjd/sd/rynkh/fj/ahk/bix',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /yrt/cq/gzgzcn' => [
+ 'name' => '',
+ 'path' => '/yrt/cq/gzgzcn',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /ohunzib' => [
+ 'name' => '',
+ 'path' => '/ohunzib',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /rnevuk/fxq' => [
+ 'name' => '',
+ 'path' => '/rnevuk/fxq',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /tksmgqh' => [
+ 'name' => '',
+ 'path' => '/tksmgqh',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /veytgylrkjt' => [
+ 'name' => '',
+ 'path' => '/veytgylrkjt',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /user/ojiudhvuqmbanvwkek' => [
+ 'name' => '',
+ 'path' => '/user/ojiudhvuqmbanvwkek',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /goods/iybxsb' => [
+ 'name' => '',
+ 'path' => '/goods/iybxsb',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /v/obkgpvyq/gq/sgf/dh/agv/l' => [
+ 'name' => '',
+ 'path' => '/v/obkgpvyq/gq/sgf/dh/agv/l',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /api/yefwyt' => [
+ 'name' => '',
+ 'path' => '/api/yefwyt',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /ufpimae' => [
+ 'name' => '',
+ 'path' => '/ufpimae',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /user/tqelbx' => [
+ 'name' => '',
+ 'path' => '/user/tqelbx',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /api/cufxor' => [
+ 'name' => '',
+ 'path' => '/api/cufxor',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /twinzaoshipuljvjevj' => [
+ 'name' => '',
+ 'path' => '/twinzaoshipuljvjevj',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /uavauvleht' => [
+ 'name' => '',
+ 'path' => '/uavauvleht',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /v/dch/idl/ln/esbe' => [
+ 'name' => '',
+ 'path' => '/v/dch/idl/ln/esbe',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /xlvbi/ps/j/jc/zhk' => [
+ 'name' => '',
+ 'path' => '/xlvbi/ps/j/jc/zhk',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /wwacyspapmp' => [
+ 'name' => '',
+ 'path' => '/wwacyspapmp',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /ohifjlubnfaqgr/glintd' => [
+ 'name' => '',
+ 'path' => '/ohifjlubnfaqgr/glintd',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /v/g/mklddjl/tf' => [
+ 'name' => '',
+ 'path' => '/v/g/mklddjl/tf',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /cnuawxaf/okodv/s' => [
+ 'name' => '',
+ 'path' => '/cnuawxaf/okodv/s',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /ev/nnynql/cnllw/vktyqzc' => [
+ 'name' => '',
+ 'path' => '/ev/nnynql/cnllw/vktyqzc',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /ljdntlgbr' => [
+ 'name' => '',
+ 'path' => '/ljdntlgbr',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /kveethxc/njzd/xggx' => [
+ 'name' => '',
+ 'path' => '/kveethxc/njzd/xggx',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /vt/txkidnptrs/my' => [
+ 'name' => '',
+ 'path' => '/vt/txkidnptrs/my',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /c/jllwqswklupj/jqtkb/p/e' => [
+ 'name' => '',
+ 'path' => '/c/jllwqswklupj/jqtkb/p/e',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /t/xaxsdlse/m' => [
+ 'name' => '',
+ 'path' => '/t/xaxsdlse/m',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /djl/sbrtukev/fgfqjwpe' => [
+ 'name' => '',
+ 'path' => '/djl/sbrtukev/fgfqjwpe',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /smgocb/tzxvp' => [
+ 'name' => '',
+ 'path' => '/smgocb/tzxvp',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /v2/txgmnxngeptuyvwwno' => [
+ 'name' => '',
+ 'path' => '/v2/txgmnxngeptuyvwwno',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /ktlspeycsksiljcwaey' => [
+ 'name' => '',
+ 'path' => '/ktlspeycsksiljcwaey',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /feqcaaxhejw' => [
+ 'name' => '',
+ 'path' => '/feqcaaxhejw',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /xdyfjeft/g/lf' => [
+ 'name' => '',
+ 'path' => '/xdyfjeft/g/lf',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /api/fvjixk' => [
+ 'name' => '',
+ 'path' => '/api/fvjixk',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /h/lit/uylpzto' => [
+ 'name' => '',
+ 'path' => '/h/lit/uylpzto',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /itbesk/leax' => [
+ 'name' => '',
+ 'path' => '/itbesk/leax',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /yheprqnczk/tdg/' => [
+ 'name' => '',
+ 'path' => '/yheprqnczk/tdg/',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /msyhnto/' => [
+ 'name' => '',
+ 'path' => '/msyhnto/',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /xdejnla' => [
+ 'name' => '',
+ 'path' => '/xdejnla',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /tqmzchvmklwb/k' => [
+ 'name' => '',
+ 'path' => '/tqmzchvmklwb/k',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /cogdmvjmt/h/nvvwqy' => [
+ 'name' => '',
+ 'path' => '/cogdmvjmt/h/nvvwqy',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /user/rabwjzmxcwvftyvdul' => [
+ 'name' => '',
+ 'path' => '/user/rabwjzmxcwvftyvdul',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /ysfjzff' => [
+ 'name' => '',
+ 'path' => '/ysfjzff',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /xmf/wh/idd/l/ejmvvgdlojj' => [
+ 'name' => '',
+ 'path' => '/xmf/wh/idd/l/ejmvvgdlojj',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /hplxhstclfzyvn/wb/mjm' => [
+ 'name' => '',
+ 'path' => '/hplxhstclfzyvn/wb/mjm',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /qc/noo/kxyolv' => [
+ 'name' => '',
+ 'path' => '/qc/noo/kxyolv',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /v2/upraviusoxrpqsb' => [
+ 'name' => '',
+ 'path' => '/v2/upraviusoxrpqsb',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /qhlrjnuc/' => [
+ 'name' => '',
+ 'path' => '/qhlrjnuc/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /tkmawhwgxv/l/f/ndqo/y' => [
+ 'name' => '',
+ 'path' => '/tkmawhwgxv/l/f/ndqo/y',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /goods/vbnats' => [
+ 'name' => '',
+ 'path' => '/goods/vbnats',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /wo/in/xfd/zfco/xic/cqjhr' => [
+ 'name' => '',
+ 'path' => '/wo/in/xfd/zfco/xic/cqjhr',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /api/cacwyr' => [
+ 'name' => '',
+ 'path' => '/api/cacwyr',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /s/wndawyqymw' => [
+ 'name' => '',
+ 'path' => '/s/wndawyqymw',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /twtp/jke' => [
+ 'name' => '',
+ 'path' => '/twtp/jke',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /dhcmz/gzloukyq/w/btihxa' => [
+ 'name' => '',
+ 'path' => '/dhcmz/gzloukyq/w/btihxa',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /axdf/osdgcoj' => [
+ 'name' => '',
+ 'path' => '/axdf/osdgcoj',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /z/rqlmjkct/' => [
+ 'name' => '',
+ 'path' => '/z/rqlmjkct/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /fz/qfpi/y/lnx/ocieov' => [
+ 'name' => '',
+ 'path' => '/fz/qfpi/y/lnx/ocieov',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /unmghaiabjiofhgklx/c/w' => [
+ 'name' => '',
+ 'path' => '/unmghaiabjiofhgklx/c/w',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /rpagiy/ehqr' => [
+ 'name' => '',
+ 'path' => '/rpagiy/ehqr',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /v2/mmgwfwmxwgbcrsq' => [
+ 'name' => '',
+ 'path' => '/v2/mmgwfwmxwgbcrsq',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /tdlgfnjou' => [
+ 'name' => '',
+ 'path' => '/tdlgfnjou',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /nwgzub/x' => [
+ 'name' => '',
+ 'path' => '/nwgzub/x',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /goods/lmpiihzracbs' => [
+ 'name' => '',
+ 'path' => '/goods/lmpiihzracbs',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /bbpqqqoir' => [
+ 'name' => '',
+ 'path' => '/bbpqqqoir',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /xiuioanvo/cesb' => [
+ 'name' => '',
+ 'path' => '/xiuioanvo/cesb',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /api/zwzuvksjdhjfikt' => [
+ 'name' => '',
+ 'path' => '/api/zwzuvksjdhjfikt',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /ter/dhsa/llcayss' => [
+ 'name' => '',
+ 'path' => '/ter/dhsa/llcayss',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /user/twowxy' => [
+ 'name' => '',
+ 'path' => '/user/twowxy',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /rxxb/b/vjjmin' => [
+ 'name' => '',
+ 'path' => '/rxxb/b/vjjmin',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /qinxtmpkecrp/j/t' => [
+ 'name' => '',
+ 'path' => '/qinxtmpkecrp/j/t',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /v/uancplqhio' => [
+ 'name' => '',
+ 'path' => '/v/uancplqhio',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /e/n/qrxfybzrfbk' => [
+ 'name' => '',
+ 'path' => '/e/n/qrxfybzrfbk',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /lpbyauwero/lwe' => [
+ 'name' => '',
+ 'path' => '/lpbyauwero/lwe',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /api/zbhrkk' => [
+ 'name' => '',
+ 'path' => '/api/zbhrkk',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /h/jzvfwsmxelhmob/azoi' => [
+ 'name' => '',
+ 'path' => '/h/jzvfwsmxelhmob/azoi',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /v2/jbjhbs' => [
+ 'name' => '',
+ 'path' => '/v2/jbjhbs',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /atyxd/eanyt' => [
+ 'name' => '',
+ 'path' => '/atyxd/eanyt',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /nixyjr/gqnhsqhrep' => [
+ 'name' => '',
+ 'path' => '/nixyjr/gqnhsqhrep',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /v2/wbnfkm' => [
+ 'name' => '',
+ 'path' => '/v2/wbnfkm',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /jzjaxrqh/' => [
+ 'name' => '',
+ 'path' => '/jzjaxrqh/',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /cb/oprxoes' => [
+ 'name' => '',
+ 'path' => '/cb/oprxoes',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /user/joiqbi' => [
+ 'name' => '',
+ 'path' => '/user/joiqbi',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /jcr/tagvxzn' => [
+ 'name' => '',
+ 'path' => '/jcr/tagvxzn',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /bcqaocs/n/' => [
+ 'name' => '',
+ 'path' => '/bcqaocs/n/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /vpluonodjbmuti/sde/' => [
+ 'name' => '',
+ 'path' => '/vpluonodjbmuti/sde/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /goods/sdtzweyrhhec' => [
+ 'name' => '',
+ 'path' => '/goods/sdtzweyrhhec',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /glaaavrztmmozqz/fzji' => [
+ 'name' => '',
+ 'path' => '/glaaavrztmmozqz/fzji',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /pr/wbr/' => [
+ 'name' => '',
+ 'path' => '/pr/wbr/',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /mpwvqegi/o/rohtzg/x/' => [
+ 'name' => '',
+ 'path' => '/mpwvqegi/o/rohtzg/x/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /api/iebgufwfffbt' => [
+ 'name' => '',
+ 'path' => '/api/iebgufwfffbt',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /blknvhxi' => [
+ 'name' => '',
+ 'path' => '/blknvhxi',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /crlt/hapd' => [
+ 'name' => '',
+ 'path' => '/crlt/hapd',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /piy/fixz' => [
+ 'name' => '',
+ 'path' => '/piy/fixz',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /esjqy/pqkqxuxsgu/abc/u' => [
+ 'name' => '',
+ 'path' => '/esjqy/pqkqxuxsgu/abc/u',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /ylakyuyafq/chbx' => [
+ 'name' => '',
+ 'path' => '/ylakyuyafq/chbx',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /v2/uuqcjrpvfcmyzoe' => [
+ 'name' => '',
+ 'path' => '/v2/uuqcjrpvfcmyzoe',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /goods/xehrwhlbaopr' => [
+ 'name' => '',
+ 'path' => '/goods/xehrwhlbaopr',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /luxujm/jj/rtbftakcd' => [
+ 'name' => '',
+ 'path' => '/luxujm/jj/rtbftakcd',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /dxdklygwk' => [
+ 'name' => '',
+ 'path' => '/dxdklygwk',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /lcgphyoc' => [
+ 'name' => '',
+ 'path' => '/lcgphyoc',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /sa/xffocy/mu/lweudsd/yf' => [
+ 'name' => '',
+ 'path' => '/sa/xffocy/mu/lweudsd/yf',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /rbxix/xfqjh' => [
+ 'name' => '',
+ 'path' => '/rbxix/xfqjh',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /jhikwrrla' => [
+ 'name' => '',
+ 'path' => '/jhikwrrla',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /neojabgrf/' => [
+ 'name' => '',
+ 'path' => '/neojabgrf/',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /user/ukgjhxfjhnuspuomum' => [
+ 'name' => '',
+ 'path' => '/user/ukgjhxfjhnuspuomum',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /xwkomj/nbr' => [
+ 'name' => '',
+ 'path' => '/xwkomj/nbr',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /mhzogdoxymlg/pyavyo/mi' => [
+ 'name' => '',
+ 'path' => '/mhzogdoxymlg/pyavyo/mi',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /v2/eqmpzsfcsjpbdvs' => [
+ 'name' => '',
+ 'path' => '/v2/eqmpzsfcsjpbdvs',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /fheaya/ugeengsa/mp' => [
+ 'name' => '',
+ 'path' => '/fheaya/ugeengsa/mp',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /api/thxllneirhvnlrj' => [
+ 'name' => '',
+ 'path' => '/api/thxllneirhvnlrj',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /diipmxhddag' => [
+ 'name' => '',
+ 'path' => '/diipmxhddag',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /odj/vihv/lu/rt/jqqudest' => [
+ 'name' => '',
+ 'path' => '/odj/vihv/lu/rt/jqqudest',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /xeixj/tbseufgwh/qfrp/j/' => [
+ 'name' => '',
+ 'path' => '/xeixj/tbseufgwh/qfrp/j/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /m/wfgjvigyobhrj' => [
+ 'name' => '',
+ 'path' => '/m/wfgjvigyobhrj',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /zagh/dl/x/cvq' => [
+ 'name' => '',
+ 'path' => '/zagh/dl/x/cvq',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /ovc/geebze' => [
+ 'name' => '',
+ 'path' => '/ovc/geebze',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /v2/gzfmbacuhclnpeo' => [
+ 'name' => '',
+ 'path' => '/v2/gzfmbacuhclnpeo',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /ata/ayiynrnmjlae/z/dy/e' => [
+ 'name' => '',
+ 'path' => '/ata/ayiynrnmjlae/z/dy/e',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /u/lqrfteyw/' => [
+ 'name' => '',
+ 'path' => '/u/lqrfteyw/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /eb/s/bnzbvgsgltzdr/g' => [
+ 'name' => '',
+ 'path' => '/eb/s/bnzbvgsgltzdr/g',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /pinqfgkrjzkxza/h/utlnj' => [
+ 'name' => '',
+ 'path' => '/pinqfgkrjzkxza/h/utlnj',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /ctcmxmkgy' => [
+ 'name' => '',
+ 'path' => '/ctcmxmkgy',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /lfqudob' => [
+ 'name' => '',
+ 'path' => '/lfqudob',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /user/gsgsmrvzupcbilscco' => [
+ 'name' => '',
+ 'path' => '/user/gsgsmrvzupcbilscco',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /t/tknquh' => [
+ 'name' => '',
+ 'path' => '/t/tknquh',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /api/tmksgc' => [
+ 'name' => '',
+ 'path' => '/api/tmksgc',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /wmaw/l/tjcsq/sphowf' => [
+ 'name' => '',
+ 'path' => '/wmaw/l/tjcsq/sphowf',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /wplh/tczfw/gnck/kqge/ejg' => [
+ 'name' => '',
+ 'path' => '/wplh/tczfw/gnck/kqge/ejg',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /snhxsv/j/zuehgu' => [
+ 'name' => '',
+ 'path' => '/snhxsv/j/zuehgu',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /k/h/ynhokfafup/a' => [
+ 'name' => '',
+ 'path' => '/k/h/ynhokfafup/a',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /xbqmcr/a' => [
+ 'name' => '',
+ 'path' => '/xbqmcr/a',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /om/c/qgxcwbnmqx' => [
+ 'name' => '',
+ 'path' => '/om/c/qgxcwbnmqx',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /api/wvaxjyilienvooicwj' => [
+ 'name' => '',
+ 'path' => '/api/wvaxjyilienvooicwj',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /wwdlmpjbtletqi' => [
+ 'name' => '',
+ 'path' => '/wwdlmpjbtletqi',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /user/aznvlxmdbzwqexv' => [
+ 'name' => '',
+ 'path' => '/user/aznvlxmdbzwqexv',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /dmqezta' => [
+ 'name' => '',
+ 'path' => '/dmqezta',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /rf/mkdtmja/jljofamz/xs' => [
+ 'name' => '',
+ 'path' => '/rf/mkdtmja/jljofamz/xs',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /spjxt/ev/jcr' => [
+ 'name' => '',
+ 'path' => '/spjxt/ev/jcr',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /b/fgy/us/trzfw/ebqowfuw' => [
+ 'name' => '',
+ 'path' => '/b/fgy/us/trzfw/ebqowfuw',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /cdyoafpbhapsah' => [
+ 'name' => '',
+ 'path' => '/cdyoafpbhapsah',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /mbxa/a' => [
+ 'name' => '',
+ 'path' => '/mbxa/a',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /nhcdrcfxybjmrfup/xnog' => [
+ 'name' => '',
+ 'path' => '/nhcdrcfxybjmrfup/xnog',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /api/jsxcte' => [
+ 'name' => '',
+ 'path' => '/api/jsxcte',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /v2/mfcrdnvxldecudgfcd' => [
+ 'name' => '',
+ 'path' => '/v2/mfcrdnvxldecudgfcd',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /rj/jlkfx/wqoo/l/vaf/gv' => [
+ 'name' => '',
+ 'path' => '/rj/jlkfx/wqoo/l/vaf/gv',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /v2/bufdljmbxxbqnae' => [
+ 'name' => '',
+ 'path' => '/v2/bufdljmbxxbqnae',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /ez/oayskuugzvvc/wm/u/ds/k' => [
+ 'name' => '',
+ 'path' => '/ez/oayskuugzvvc/wm/u/ds/k',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /jvww/dsltmkhyi/j/' => [
+ 'name' => '',
+ 'path' => '/jvww/dsltmkhyi/j/',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /b/ekvieft' => [
+ 'name' => '',
+ 'path' => '/b/ekvieft',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /user/znovbcflzqindxi' => [
+ 'name' => '',
+ 'path' => '/user/znovbcflzqindxi',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /goods/ybnmwf' => [
+ 'name' => '',
+ 'path' => '/goods/ybnmwf',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /z/wt/cvnvsa' => [
+ 'name' => '',
+ 'path' => '/z/wt/cvnvsa',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /t/nbljwentimq/f' => [
+ 'name' => '',
+ 'path' => '/t/nbljwentimq/f',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /j/shp/migfj' => [
+ 'name' => '',
+ 'path' => '/j/shp/migfj',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /goods/yqoyto' => [
+ 'name' => '',
+ 'path' => '/goods/yqoyto',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /byybl/' => [
+ 'name' => '',
+ 'path' => '/byybl/',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /z/hnhkzxk/iqgrz/tvzyvi' => [
+ 'name' => '',
+ 'path' => '/z/hnhkzxk/iqgrz/tvzyvi',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /o/lm/vkuwtbr/bvjqz/arbhs' => [
+ 'name' => '',
+ 'path' => '/o/lm/vkuwtbr/bvjqz/arbhs',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /pj/zeagytasvyxz/vw' => [
+ 'name' => '',
+ 'path' => '/pj/zeagytasvyxz/vw',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /wzrscys' => [
+ 'name' => '',
+ 'path' => '/wzrscys',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /he/f/ffqlmvi/vdyeryf' => [
+ 'name' => '',
+ 'path' => '/he/f/ffqlmvi/vdyeryf',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /elvkv/lg/lbk/ryq/nctk' => [
+ 'name' => '',
+ 'path' => '/elvkv/lg/lbk/ryq/nctk',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /chluakwwi' => [
+ 'name' => '',
+ 'path' => '/chluakwwi',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /ri/wd/zwyr' => [
+ 'name' => '',
+ 'path' => '/ri/wd/zwyr',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /f/wxlakx/nkkvtz/a/scxun' => [
+ 'name' => '',
+ 'path' => '/f/wxlakx/nkkvtz/a/scxun',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /v2/xqzpngupqumi' => [
+ 'name' => '',
+ 'path' => '/v2/xqzpngupqumi',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /ppdltfl' => [
+ 'name' => '',
+ 'path' => '/ppdltfl',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /fzw/sfvlxq' => [
+ 'name' => '',
+ 'path' => '/fzw/sfvlxq',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /api/nuypogeejobl' => [
+ 'name' => '',
+ 'path' => '/api/nuypogeejobl',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /v2/zlrwnwinbxdj' => [
+ 'name' => '',
+ 'path' => '/v2/zlrwnwinbxdj',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /hjbojeughxofxa/watym' => [
+ 'name' => '',
+ 'path' => '/hjbojeughxofxa/watym',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /nfwvtfbmvbhvotoqe' => [
+ 'name' => '',
+ 'path' => '/nfwvtfbmvbhvotoqe',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /v2/fafovb' => [
+ 'name' => '',
+ 'path' => '/v2/fafovb',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /goods/nhfvjanxmxcozyl' => [
+ 'name' => '',
+ 'path' => '/goods/nhfvjanxmxcozyl',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /bxrlzjoocl' => [
+ 'name' => '',
+ 'path' => '/bxrlzjoocl',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /a/onwjosnbnjllcmyeut' => [
+ 'name' => '',
+ 'path' => '/a/onwjosnbnjllcmyeut',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /jvoeudlzdmrdx' => [
+ 'name' => '',
+ 'path' => '/jvoeudlzdmrdx',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /e/aqdbbma/svl/' => [
+ 'name' => '',
+ 'path' => '/e/aqdbbma/svl/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /maufxhpiw' => [
+ 'name' => '',
+ 'path' => '/maufxhpiw',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /goods/ftvdtwitpxptcecldu' => [
+ 'name' => '',
+ 'path' => '/goods/ftvdtwitpxptcecldu',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /user/wuiplv' => [
+ 'name' => '',
+ 'path' => '/user/wuiplv',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /yvnyrnzdf' => [
+ 'name' => '',
+ 'path' => '/yvnyrnzdf',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /goods/ngggtwrwindvinn' => [
+ 'name' => '',
+ 'path' => '/goods/ngggtwrwindvinn',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /q/erbckr/l/' => [
+ 'name' => '',
+ 'path' => '/q/erbckr/l/',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /api/kfhhsdecbhvrcbw' => [
+ 'name' => '',
+ 'path' => '/api/kfhhsdecbhvrcbw',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /fyzoqwwwqeu/' => [
+ 'name' => '',
+ 'path' => '/fyzoqwwwqeu/',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /d/zuvagkzmpl' => [
+ 'name' => '',
+ 'path' => '/d/zuvagkzmpl',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /rouktba' => [
+ 'name' => '',
+ 'path' => '/rouktba',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /mmctkfhqlpm/lbcapf' => [
+ 'name' => '',
+ 'path' => '/mmctkfhqlpm/lbcapf',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /u/u/t/yltzdfcs/z/hpk/z/' => [
+ 'name' => '',
+ 'path' => '/u/u/t/yltzdfcs/z/hpk/z/',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /eo/vs/yuegh' => [
+ 'name' => '',
+ 'path' => '/eo/vs/yuegh',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /api/jpgurhmbcimi' => [
+ 'name' => '',
+ 'path' => '/api/jpgurhmbcimi',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /vrqmstssa/zd' => [
+ 'name' => '',
+ 'path' => '/vrqmstssa/zd',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /svxvm' => [
+ 'name' => '',
+ 'path' => '/svxvm',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /cl/uqoid' => [
+ 'name' => '',
+ 'path' => '/cl/uqoid',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /huuchba/gn/hqfi' => [
+ 'name' => '',
+ 'path' => '/huuchba/gn/hqfi',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /kcsystfifmwosetvkif' => [
+ 'name' => '',
+ 'path' => '/kcsystfifmwosetvkif',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /f/jumru/qj' => [
+ 'name' => '',
+ 'path' => '/f/jumru/qj',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /goods/kepyogvunojtxzc' => [
+ 'name' => '',
+ 'path' => '/goods/kepyogvunojtxzc',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /miaumxsx' => [
+ 'name' => '',
+ 'path' => '/miaumxsx',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /ezpruhlobrb/lanvv' => [
+ 'name' => '',
+ 'path' => '/ezpruhlobrb/lanvv',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /api/xcbjpg' => [
+ 'name' => '',
+ 'path' => '/api/xcbjpg',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /v2/cxcpgpygjvccmojegt' => [
+ 'name' => '',
+ 'path' => '/v2/cxcpgpygjvccmojegt',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /irnjhhayds/quemph' => [
+ 'name' => '',
+ 'path' => '/irnjhhayds/quemph',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /pygal/c/ha/ocfmd/ytfx' => [
+ 'name' => '',
+ 'path' => '/pygal/c/ha/ocfmd/ytfx',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /itsuzkktpz' => [
+ 'name' => '',
+ 'path' => '/itsuzkktpz',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /lq/j/op/xhlydfue' => [
+ 'name' => '',
+ 'path' => '/lq/j/op/xhlydfue',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /t/hjjmwrynreha/' => [
+ 'name' => '',
+ 'path' => '/t/hjjmwrynreha/',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /goods/epjsiupvytkn' => [
+ 'name' => '',
+ 'path' => '/goods/epjsiupvytkn',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /lld/uew/qmdxt/xmj/c/tz/' => [
+ 'name' => '',
+ 'path' => '/lld/uew/qmdxt/xmj/c/tz/',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /wwfbonw/ypoflk' => [
+ 'name' => '',
+ 'path' => '/wwfbonw/ypoflk',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /kaebhxo/viap' => [
+ 'name' => '',
+ 'path' => '/kaebhxo/viap',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /rkp/ipsgmyff' => [
+ 'name' => '',
+ 'path' => '/rkp/ipsgmyff',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /goods/eizoxaklqflw' => [
+ 'name' => '',
+ 'path' => '/goods/eizoxaklqflw',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /otcoflcnpns' => [
+ 'name' => '',
+ 'path' => '/otcoflcnpns',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /wcxexwmz' => [
+ 'name' => '',
+ 'path' => '/wcxexwmz',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /nffsxzfpbbz/muff/b/arb' => [
+ 'name' => '',
+ 'path' => '/nffsxzfpbbz/muff/b/arb',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /vchl/subig/' => [
+ 'name' => '',
+ 'path' => '/vchl/subig/',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /bjvkqklnxohxz' => [
+ 'name' => '',
+ 'path' => '/bjvkqklnxohxz',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /nifziogqj' => [
+ 'name' => '',
+ 'path' => '/nifziogqj',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /user/agsgaq' => [
+ 'name' => '',
+ 'path' => '/user/agsgaq',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /vqvbckr/pipzaozr/tbe/y' => [
+ 'name' => '',
+ 'path' => '/vqvbckr/pipzaozr/tbe/y',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /user/ouvifcballqeemclmn' => [
+ 'name' => '',
+ 'path' => '/user/ouvifcballqeemclmn',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PATCH /kg/x/ne/vstypenr' => [
+ 'name' => '',
+ 'path' => '/kg/x/ne/vstypenr',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /goods/ljkhzl' => [
+ 'name' => '',
+ 'path' => '/goods/ljkhzl',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'PUT /kdrddas/' => [
+ 'name' => '',
+ 'path' => '/kdrddas/',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /jkvfezwndyey/anxbv' => [
+ 'name' => '',
+ 'path' => '/jkvfezwndyey/anxbv',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /nqsfo/bk/j' => [
+ 'name' => '',
+ 'path' => '/nqsfo/bk/j',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /ozs/calmk/ay' => [
+ 'name' => '',
+ 'path' => '/ozs/calmk/ay',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'POST /fentih/srzcscb/bzeomh/v' => [
+ 'name' => '',
+ 'path' => '/fentih/srzcscb/bzeomh/v',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'DELETE /bjyhbzwglsqpgmngg/xg' => [
+ 'name' => '',
+ 'path' => '/bjyhbzwglsqpgmngg/xg',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 'GET /gzyeapeu' => [
+ 'name' => '',
+ 'path' => '/gzyeapeu',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ ],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+],
+// regular routes
+'regularRoutes' => [
+ 'GET v2' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/v2/jwdhgwqeoyibhqf/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/v2/jwdhgwqeoyibhqf/([^/]+)$#',
+ 'pathStart' => '/v2/jwdhgwqeoyibhqf/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/v2/wojuqhiwqiopgqnjzs/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/v2/wojuqhiwqiopgqnjzs/([^/]+)$#',
+ 'pathStart' => '/v2/wojuqhiwqiopgqnjzs/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 2 => [
+ 'name' => '',
+ 'path' => '/v2/egeoztblyfan/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/v2/egeoztblyfan/([^/]+)$#',
+ 'pathStart' => '/v2/egeoztblyfan/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 3 => [
+ 'name' => '',
+ 'path' => '/v2/opcllkfduwrczbwwaa/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/v2/opcllkfduwrczbwwaa/([^/]+)$#',
+ 'pathStart' => '/v2/opcllkfduwrczbwwaa/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 4 => [
+ 'name' => '',
+ 'path' => '/v2/zzlxwj/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/v2/zzlxwj/([^/]+)$#',
+ 'pathStart' => '/v2/zzlxwj/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 5 => [
+ 'name' => '',
+ 'path' => '/v2/iiokpjzwxddvfqa/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/v2/iiokpjzwxddvfqa/([^/]+)$#',
+ 'pathStart' => '/v2/iiokpjzwxddvfqa/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH nzmanetsxhgxx' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/nzmanetsxhgxx/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/nzmanetsxhgxx/([^/]+)$#',
+ 'pathStart' => '/nzmanetsxhgxx/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET 50be3774f6' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/50be3774f6/{arg1}/{arg2}/{arg3}/{arg4}/{arg5}/{arg6}/{arg7}/{arg8}/{arg9}/850726135a',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'arg1',
+ 1 => 'arg2',
+ 2 => 'arg3',
+ 3 => 'arg4',
+ 4 => 'arg5',
+ 5 => 'arg6',
+ 6 => 'arg7',
+ 7 => 'arg8',
+ 8 => 'arg9',
+ ],
+ 'pathRegex' => '#^/50be3774f6/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/850726135a$#',
+ 'pathStart' => '/50be3774f6/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET xyoz' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/xyoz/kgptpomrt/rm/w/r/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/xyoz/kgptpomrt/rm/w/r/([^/]+)$#',
+ 'pathStart' => '/xyoz/kgptpomrt/rm/w/r/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET zdvdgdm' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/zdvdgdm/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/zdvdgdm/([^/]+)$#',
+ 'pathStart' => '/zdvdgdm/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH vs' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/vs/ssviv/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/vs/ssviv/([^/]+)$#',
+ 'pathStart' => '/vs/ssviv/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET xl' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/xl/bztzytrw/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/xl/bztzytrw/([^/]+)$#',
+ 'pathStart' => '/xl/bztzytrw/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET user' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/user/ibgqnl/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/ibgqnl/([^/]+)$#',
+ 'pathStart' => '/user/ibgqnl/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/user/vjidfnxfaboxrcioxe/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/vjidfnxfaboxrcioxe/([^/]+)$#',
+ 'pathStart' => '/user/vjidfnxfaboxrcioxe/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 2 => [
+ 'name' => '',
+ 'path' => '/user/wublbbjzmrramokhju/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/wublbbjzmrramokhju/([^/]+)$#',
+ 'pathStart' => '/user/wublbbjzmrramokhju/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 3 => [
+ 'name' => '',
+ 'path' => '/user/dqjwzpazharz/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/dqjwzpazharz/([^/]+)$#',
+ 'pathStart' => '/user/dqjwzpazharz/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 4 => [
+ 'name' => '',
+ 'path' => '/user/neoweyrhursiayy/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/neoweyrhursiayy/([^/]+)$#',
+ 'pathStart' => '/user/neoweyrhursiayy/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 5 => [
+ 'name' => '',
+ 'path' => '/user/qbtqin/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/qbtqin/([^/]+)$#',
+ 'pathStart' => '/user/qbtqin/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 6 => [
+ 'name' => '',
+ 'path' => '/user/juashpjvfyllohvbyx/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/juashpjvfyllohvbyx/([^/]+)$#',
+ 'pathStart' => '/user/juashpjvfyllohvbyx/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 7 => [
+ 'name' => '',
+ 'path' => '/user/jqxgskgpvabqetjvsh/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/jqxgskgpvabqetjvsh/([^/]+)$#',
+ 'pathStart' => '/user/jqxgskgpvabqetjvsh/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 8 => [
+ 'name' => '',
+ 'path' => '/user/ywgdkr/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/ywgdkr/([^/]+)$#',
+ 'pathStart' => '/user/ywgdkr/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 9 => [
+ 'name' => '',
+ 'path' => '/user/euvmcubsdjrtfqgevm/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/euvmcubsdjrtfqgevm/([^/]+)$#',
+ 'pathStart' => '/user/euvmcubsdjrtfqgevm/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 10 => [
+ 'name' => '',
+ 'path' => '/user/qbczljbzmkjc/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/qbczljbzmkjc/([^/]+)$#',
+ 'pathStart' => '/user/qbczljbzmkjc/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 11 => [
+ 'name' => '',
+ 'path' => '/user/zkfjdjzowklk/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/zkfjdjzowklk/([^/]+)$#',
+ 'pathStart' => '/user/zkfjdjzowklk/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 12 => [
+ 'name' => '',
+ 'path' => '/user/vovgloratoop/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/vovgloratoop/([^/]+)$#',
+ 'pathStart' => '/user/vovgloratoop/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 13 => [
+ 'name' => '',
+ 'path' => '/user/yybyag/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/yybyag/([^/]+)$#',
+ 'pathStart' => '/user/yybyag/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 14 => [
+ 'name' => '',
+ 'path' => '/user/spfbldkgvcvhdflomx/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/spfbldkgvcvhdflomx/([^/]+)$#',
+ 'pathStart' => '/user/spfbldkgvcvhdflomx/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 15 => [
+ 'name' => '',
+ 'path' => '/user/xrudzaqroasuetjjfg/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/xrudzaqroasuetjjfg/([^/]+)$#',
+ 'pathStart' => '/user/xrudzaqroasuetjjfg/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE api' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/api/kuokxtsrnujy/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/kuokxtsrnujy/([^/]+)$#',
+ 'pathStart' => '/api/kuokxtsrnujy/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/api/qyetovfaonkb/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/qyetovfaonkb/([^/]+)$#',
+ 'pathStart' => '/api/qyetovfaonkb/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 2 => [
+ 'name' => '',
+ 'path' => '/api/pfafetchcnye/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/pfafetchcnye/([^/]+)$#',
+ 'pathStart' => '/api/pfafetchcnye/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 3 => [
+ 'name' => '',
+ 'path' => '/api/ansxml/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/ansxml/([^/]+)$#',
+ 'pathStart' => '/api/ansxml/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 4 => [
+ 'name' => '',
+ 'path' => '/api/ztqwwjswvomizgz/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/ztqwwjswvomizgz/([^/]+)$#',
+ 'pathStart' => '/api/ztqwwjswvomizgz/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 5 => [
+ 'name' => '',
+ 'path' => '/api/ysemxy/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/ysemxy/([^/]+)$#',
+ 'pathStart' => '/api/ysemxy/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 6 => [
+ 'name' => '',
+ 'path' => '/api/jmtreeiwygxdgmrlnt/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/jmtreeiwygxdgmrlnt/([^/]+)$#',
+ 'pathStart' => '/api/jmtreeiwygxdgmrlnt/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 7 => [
+ 'name' => '',
+ 'path' => '/api/jqbaiwmronqenyspvz/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/jqbaiwmronqenyspvz/([^/]+)$#',
+ 'pathStart' => '/api/jqbaiwmronqenyspvz/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE xksdhqj' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/xksdhqj/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/xksdhqj/([^/]+)$#',
+ 'pathStart' => '/xksdhqj/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET zvu' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/zvu/mq/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/zvu/mq/([^/]+)$#',
+ 'pathStart' => '/zvu/mq/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT cfroxw' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/cfroxw/oir/txa/dgb/u/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/cfroxw/oir/txa/dgb/u/([^/]+)$#',
+ 'pathStart' => '/cfroxw/oir/txa/dgb/u/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET eaqfxpc' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/eaqfxpc/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/eaqfxpc/([^/]+)$#',
+ 'pathStart' => '/eaqfxpc/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET r' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/r/kutlhmpstztwmituwl/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/r/kutlhmpstztwmituwl/([^/]+)$#',
+ 'pathStart' => '/r/kutlhmpstztwmituwl/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/r/oofdopp/erbc/stdq/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/r/oofdopp/erbc/stdq/([^/]+)$#',
+ 'pathStart' => '/r/oofdopp/erbc/stdq/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST ywxlupg' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ywxlupg/eteppq/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ywxlupg/eteppq/([^/]+)$#',
+ 'pathStart' => '/ywxlupg/eteppq/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST uvd' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/uvd/eqfuw/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/uvd/eqfuw/([^/]+)$#',
+ 'pathStart' => '/uvd/eqfuw/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST nyevfudb' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/nyevfudb/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/nyevfudb/([^/]+)$#',
+ 'pathStart' => '/nyevfudb/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE bifgtdezjoo' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/bifgtdezjoo/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/bifgtdezjoo/([^/]+)$#',
+ 'pathStart' => '/bifgtdezjoo/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH iuyqrf' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/iuyqrf/si/mhhmckyzs/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/iuyqrf/si/mhhmckyzs/([^/]+)$#',
+ 'pathStart' => '/iuyqrf/si/mhhmckyzs/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT rrqoq' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/rrqoq/pfuszagqcgks/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/rrqoq/pfuszagqcgks/([^/]+)$#',
+ 'pathStart' => '/rrqoq/pfuszagqcgks/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST ryhdmlp' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ryhdmlp/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ryhdmlp/([^/]+)$#',
+ 'pathStart' => '/ryhdmlp/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH kenusrw' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/kenusrw/nt/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/kenusrw/nt/([^/]+)$#',
+ 'pathStart' => '/kenusrw/nt/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT vrxlnp' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/vrxlnp/limzvc/niht/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/vrxlnp/limzvc/niht/([^/]+)$#',
+ 'pathStart' => '/vrxlnp/limzvc/niht/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET zevzkd' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/zevzkd/g/obcinwkxmyon/g/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/zevzkd/g/obcinwkxmyon/g/([^/]+)$#',
+ 'pathStart' => '/zevzkd/g/obcinwkxmyon/g/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH v2' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/v2/rvphhlrbsrupumeoqd/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/v2/rvphhlrbsrupumeoqd/([^/]+)$#',
+ 'pathStart' => '/v2/rvphhlrbsrupumeoqd/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/v2/mgpukbxuqpcn/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/v2/mgpukbxuqpcn/([^/]+)$#',
+ 'pathStart' => '/v2/mgpukbxuqpcn/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 2 => [
+ 'name' => '',
+ 'path' => '/v2/ikkymmntgftktilgmb/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/v2/ikkymmntgftktilgmb/([^/]+)$#',
+ 'pathStart' => '/v2/ikkymmntgftktilgmb/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE rvwzffmj' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/rvwzffmj/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/rvwzffmj/([^/]+)$#',
+ 'pathStart' => '/rvwzffmj/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST goods' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/goods/sirvjm/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/sirvjm/([^/]+)$#',
+ 'pathStart' => '/goods/sirvjm/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/goods/hkgrfjyxzvoa/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/hkgrfjyxzvoa/([^/]+)$#',
+ 'pathStart' => '/goods/hkgrfjyxzvoa/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 2 => [
+ 'name' => '',
+ 'path' => '/goods/pbmntl/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/pbmntl/([^/]+)$#',
+ 'pathStart' => '/goods/pbmntl/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 3 => [
+ 'name' => '',
+ 'path' => '/goods/ekpxypnvazyoccj/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/ekpxypnvazyoccj/([^/]+)$#',
+ 'pathStart' => '/goods/ekpxypnvazyoccj/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 4 => [
+ 'name' => '',
+ 'path' => '/goods/tbhatnhrrwuboqfhqe/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/tbhatnhrrwuboqfhqe/([^/]+)$#',
+ 'pathStart' => '/goods/tbhatnhrrwuboqfhqe/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 5 => [
+ 'name' => '',
+ 'path' => '/goods/haqwrarcupmu/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/haqwrarcupmu/([^/]+)$#',
+ 'pathStart' => '/goods/haqwrarcupmu/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 6 => [
+ 'name' => '',
+ 'path' => '/goods/fqfsoz/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/fqfsoz/([^/]+)$#',
+ 'pathStart' => '/goods/fqfsoz/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 7 => [
+ 'name' => '',
+ 'path' => '/goods/iuzevn/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/iuzevn/([^/]+)$#',
+ 'pathStart' => '/goods/iuzevn/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 8 => [
+ 'name' => '',
+ 'path' => '/goods/eowkeuikpdakomb/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/eowkeuikpdakomb/([^/]+)$#',
+ 'pathStart' => '/goods/eowkeuikpdakomb/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE lrwnkoj' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/lrwnkoj/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/lrwnkoj/([^/]+)$#',
+ 'pathStart' => '/lrwnkoj/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE p' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/p/dvyfziwuxgnffi/lqnf/i/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/p/dvyfziwuxgnffi/lqnf/i/([^/]+)$#',
+ 'pathStart' => '/p/dvyfziwuxgnffi/lqnf/i/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH cagctzzr' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/cagctzzr/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/cagctzzr/([^/]+)$#',
+ 'pathStart' => '/cagctzzr/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE mucccchbjoqdpwus' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/mucccchbjoqdpwus/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/mucccchbjoqdpwus/([^/]+)$#',
+ 'pathStart' => '/mucccchbjoqdpwus/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST mnwxpthaxrlq' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/mnwxpthaxrlq/ipp/c/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/mnwxpthaxrlq/ipp/c/([^/]+)$#',
+ 'pathStart' => '/mnwxpthaxrlq/ipp/c/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET qhsgc' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/qhsgc/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/qhsgc/([^/]+)$#',
+ 'pathStart' => '/qhsgc/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH user' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/user/adgsqqfhyzikqlh/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/adgsqqfhyzikqlh/([^/]+)$#',
+ 'pathStart' => '/user/adgsqqfhyzikqlh/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/user/dqgogt/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/dqgogt/([^/]+)$#',
+ 'pathStart' => '/user/dqgogt/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH qu' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/qu/nquenyl/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/qu/nquenyl/([^/]+)$#',
+ 'pathStart' => '/qu/nquenyl/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE hbxqxzbup' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/hbxqxzbup/t/rlvdy/juubv/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/hbxqxzbup/t/rlvdy/juubv/([^/]+)$#',
+ 'pathStart' => '/hbxqxzbup/t/rlvdy/juubv/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET gldk' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/gldk/xunysimvrksoror/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/gldk/xunysimvrksoror/([^/]+)$#',
+ 'pathStart' => '/gldk/xunysimvrksoror/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET kb' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/kb/goj/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/kb/goj/([^/]+)$#',
+ 'pathStart' => '/kb/goj/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST user' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/user/cbcdypebzjbcbaqwsb/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/cbcdypebzjbcbaqwsb/([^/]+)$#',
+ 'pathStart' => '/user/cbcdypebzjbcbaqwsb/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/user/cxmziebgcwsh/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/cxmziebgcwsh/([^/]+)$#',
+ 'pathStart' => '/user/cxmziebgcwsh/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 2 => [
+ 'name' => '',
+ 'path' => '/user/gurcyo/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/gurcyo/([^/]+)$#',
+ 'pathStart' => '/user/gurcyo/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 3 => [
+ 'name' => '',
+ 'path' => '/user/limlbpqmfkjaryhqlp/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/limlbpqmfkjaryhqlp/([^/]+)$#',
+ 'pathStart' => '/user/limlbpqmfkjaryhqlp/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 4 => [
+ 'name' => '',
+ 'path' => '/user/stneaxlzlasdjhs/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/stneaxlzlasdjhs/([^/]+)$#',
+ 'pathStart' => '/user/stneaxlzlasdjhs/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE rrr' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/rrr/pmtazlzl/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/rrr/pmtazlzl/([^/]+)$#',
+ 'pathStart' => '/rrr/pmtazlzl/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH rnzvhowwyio' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/rnzvhowwyio/vhn/k/bf/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/rnzvhowwyio/vhn/k/bf/([^/]+)$#',
+ 'pathStart' => '/rnzvhowwyio/vhn/k/bf/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET jbugfsmfk' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/jbugfsmfk/io/oelcebja/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/jbugfsmfk/io/oelcebja/([^/]+)$#',
+ 'pathStart' => '/jbugfsmfk/io/oelcebja/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST mjubidzijs' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/mjubidzijs/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/mjubidzijs/([^/]+)$#',
+ 'pathStart' => '/mjubidzijs/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH jinqg' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/jinqg/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/jinqg/([^/]+)$#',
+ 'pathStart' => '/jinqg/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT ivkltwepjehhktonbjqo' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ivkltwepjehhktonbjqo/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ivkltwepjehhktonbjqo/([^/]+)$#',
+ 'pathStart' => '/ivkltwepjehhktonbjqo/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET api' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/api/hhtbswtmekqaoaembo/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/hhtbswtmekqaoaembo/([^/]+)$#',
+ 'pathStart' => '/api/hhtbswtmekqaoaembo/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/api/ajnecqyqxxdulti/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/ajnecqyqxxdulti/([^/]+)$#',
+ 'pathStart' => '/api/ajnecqyqxxdulti/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 2 => [
+ 'name' => '',
+ 'path' => '/api/afjokehphcqasxc/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/afjokehphcqasxc/([^/]+)$#',
+ 'pathStart' => '/api/afjokehphcqasxc/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 3 => [
+ 'name' => '',
+ 'path' => '/api/aejcpe/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/aejcpe/([^/]+)$#',
+ 'pathStart' => '/api/aejcpe/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 4 => [
+ 'name' => '',
+ 'path' => '/api/bmkswmsbpgjy/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/bmkswmsbpgjy/([^/]+)$#',
+ 'pathStart' => '/api/bmkswmsbpgjy/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 5 => [
+ 'name' => '',
+ 'path' => '/api/ywdyqupzbqzjjoi/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/ywdyqupzbqzjjoi/([^/]+)$#',
+ 'pathStart' => '/api/ywdyqupzbqzjjoi/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH rsdglfaaafg' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/rsdglfaaafg/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/rsdglfaaafg/([^/]+)$#',
+ 'pathStart' => '/rsdglfaaafg/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST v2' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/v2/ufitpcyoxgwfplw/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/v2/ufitpcyoxgwfplw/([^/]+)$#',
+ 'pathStart' => '/v2/ufitpcyoxgwfplw/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/v2/acifcayvlqqlgktrnw/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/v2/acifcayvlqqlgktrnw/([^/]+)$#',
+ 'pathStart' => '/v2/acifcayvlqqlgktrnw/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 2 => [
+ 'name' => '',
+ 'path' => '/v2/zjkwhgfchpddiqw/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/v2/zjkwhgfchpddiqw/([^/]+)$#',
+ 'pathStart' => '/v2/zjkwhgfchpddiqw/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 3 => [
+ 'name' => '',
+ 'path' => '/v2/wkxsoxqaxhuj/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/v2/wkxsoxqaxhuj/([^/]+)$#',
+ 'pathStart' => '/v2/wkxsoxqaxhuj/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 4 => [
+ 'name' => '',
+ 'path' => '/v2/amsnsjxywjnnwbx/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/v2/amsnsjxywjnnwbx/([^/]+)$#',
+ 'pathStart' => '/v2/amsnsjxywjnnwbx/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST yeawilq' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/yeawilq/mu/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/yeawilq/mu/([^/]+)$#',
+ 'pathStart' => '/yeawilq/mu/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT kfyipgnz' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/kfyipgnz/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/kfyipgnz/([^/]+)$#',
+ 'pathStart' => '/kfyipgnz/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE xbjfhsqcuxj' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/xbjfhsqcuxj/gsr/ffg/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/xbjfhsqcuxj/gsr/ffg/([^/]+)$#',
+ 'pathStart' => '/xbjfhsqcuxj/gsr/ffg/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET goods' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/goods/vpexjnlrguge/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/vpexjnlrguge/([^/]+)$#',
+ 'pathStart' => '/goods/vpexjnlrguge/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/goods/jrigtlbdbysglzu/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/jrigtlbdbysglzu/([^/]+)$#',
+ 'pathStart' => '/goods/jrigtlbdbysglzu/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 2 => [
+ 'name' => '',
+ 'path' => '/goods/xeaopurmtxxz/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/xeaopurmtxxz/([^/]+)$#',
+ 'pathStart' => '/goods/xeaopurmtxxz/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 3 => [
+ 'name' => '',
+ 'path' => '/goods/qpcgwezakaht/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/qpcgwezakaht/([^/]+)$#',
+ 'pathStart' => '/goods/qpcgwezakaht/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 4 => [
+ 'name' => '',
+ 'path' => '/goods/abherarletpt/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/abherarletpt/([^/]+)$#',
+ 'pathStart' => '/goods/abherarletpt/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 5 => [
+ 'name' => '',
+ 'path' => '/goods/raaxek/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/raaxek/([^/]+)$#',
+ 'pathStart' => '/goods/raaxek/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 6 => [
+ 'name' => '',
+ 'path' => '/goods/kqdbgbwfmdhcznjseh/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/kqdbgbwfmdhcznjseh/([^/]+)$#',
+ 'pathStart' => '/goods/kqdbgbwfmdhcznjseh/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 7 => [
+ 'name' => '',
+ 'path' => '/goods/xhbiyysewnktosy/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/xhbiyysewnktosy/([^/]+)$#',
+ 'pathStart' => '/goods/xhbiyysewnktosy/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT o' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/o/pvjt/ckragwe/hdyspwe/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/o/pvjt/ckragwe/hdyspwe/([^/]+)$#',
+ 'pathStart' => '/o/pvjt/ckragwe/hdyspwe/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH ljwc' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ljwc/z/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ljwc/z/([^/]+)$#',
+ 'pathStart' => '/ljwc/z/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET bzfzf' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/bzfzf/jzg/o/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/bzfzf/jzg/o/([^/]+)$#',
+ 'pathStart' => '/bzfzf/jzg/o/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT vjvc' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/vjvc/xoo/cuhpcuweji/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/vjvc/xoo/cuhpcuweji/([^/]+)$#',
+ 'pathStart' => '/vjvc/xoo/cuhpcuweji/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT zngre' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/zngre/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/zngre/([^/]+)$#',
+ 'pathStart' => '/zngre/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE goods' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/goods/imkces/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/imkces/([^/]+)$#',
+ 'pathStart' => '/goods/imkces/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/goods/oelrtyxgwefvuzg/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/oelrtyxgwefvuzg/([^/]+)$#',
+ 'pathStart' => '/goods/oelrtyxgwefvuzg/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 2 => [
+ 'name' => '',
+ 'path' => '/goods/osqons/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/osqons/([^/]+)$#',
+ 'pathStart' => '/goods/osqons/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 3 => [
+ 'name' => '',
+ 'path' => '/goods/kjgiclsljbskwydbvn/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/kjgiclsljbskwydbvn/([^/]+)$#',
+ 'pathStart' => '/goods/kjgiclsljbskwydbvn/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 4 => [
+ 'name' => '',
+ 'path' => '/goods/eqxjkl/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/eqxjkl/([^/]+)$#',
+ 'pathStart' => '/goods/eqxjkl/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 5 => [
+ 'name' => '',
+ 'path' => '/goods/qjzrijounjrk/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/qjzrijounjrk/([^/]+)$#',
+ 'pathStart' => '/goods/qjzrijounjrk/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH etkqmslwcpdedqiidvrb' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/etkqmslwcpdedqiidvrb/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/etkqmslwcpdedqiidvrb/([^/]+)$#',
+ 'pathStart' => '/etkqmslwcpdedqiidvrb/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE b' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/b/chhspufp/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/b/chhspufp/([^/]+)$#',
+ 'pathStart' => '/b/chhspufp/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE ol' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ol/b/ustst/daquantk/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ol/b/ustst/daquantk/([^/]+)$#',
+ 'pathStart' => '/ol/b/ustst/daquantk/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET enyv' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/enyv/ciy/r/eh/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/enyv/ciy/r/eh/([^/]+)$#',
+ 'pathStart' => '/enyv/ciy/r/eh/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET hgchyhso' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/hgchyhso/gjzsxcbat/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/hgchyhso/gjzsxcbat/([^/]+)$#',
+ 'pathStart' => '/hgchyhso/gjzsxcbat/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE s' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/s/iwdlgngz/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/s/iwdlgngz/([^/]+)$#',
+ 'pathStart' => '/s/iwdlgngz/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/s/i/gqmdc/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/s/i/gqmdc/([^/]+)$#',
+ 'pathStart' => '/s/i/gqmdc/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT goods' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/goods/gqziwpumgulk/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/gqziwpumgulk/([^/]+)$#',
+ 'pathStart' => '/goods/gqziwpumgulk/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/goods/lgrvsh/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/lgrvsh/([^/]+)$#',
+ 'pathStart' => '/goods/lgrvsh/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 2 => [
+ 'name' => '',
+ 'path' => '/goods/zqabxawmathfowtidw/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/zqabxawmathfowtidw/([^/]+)$#',
+ 'pathStart' => '/goods/zqabxawmathfowtidw/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 3 => [
+ 'name' => '',
+ 'path' => '/goods/ovrkenvubjvtxmowkr/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/ovrkenvubjvtxmowkr/([^/]+)$#',
+ 'pathStart' => '/goods/ovrkenvubjvtxmowkr/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE mkjk' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/mkjk/l/kejsdqpzxquwfw/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/mkjk/l/kejsdqpzxquwfw/([^/]+)$#',
+ 'pathStart' => '/mkjk/l/kejsdqpzxquwfw/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET dmzjkgqmfus' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/dmzjkgqmfus/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/dmzjkgqmfus/([^/]+)$#',
+ 'pathStart' => '/dmzjkgqmfus/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH goods' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/goods/ykptjyzwxzmymet/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/ykptjyzwxzmymet/([^/]+)$#',
+ 'pathStart' => '/goods/ykptjyzwxzmymet/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/goods/foiwgv/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/foiwgv/([^/]+)$#',
+ 'pathStart' => '/goods/foiwgv/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 2 => [
+ 'name' => '',
+ 'path' => '/goods/issmvonoctpyxse/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/issmvonoctpyxse/([^/]+)$#',
+ 'pathStart' => '/goods/issmvonoctpyxse/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 3 => [
+ 'name' => '',
+ 'path' => '/goods/kjkqgt/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/kjkqgt/([^/]+)$#',
+ 'pathStart' => '/goods/kjkqgt/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 4 => [
+ 'name' => '',
+ 'path' => '/goods/yzsoauuiwpda/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/goods/yzsoauuiwpda/([^/]+)$#',
+ 'pathStart' => '/goods/yzsoauuiwpda/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT h' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/h/cqpr/qhmangmez/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/h/cqpr/qhmangmez/([^/]+)$#',
+ 'pathStart' => '/h/cqpr/qhmangmez/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH yx' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/yx/uxvqmr/sni/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/yx/uxvqmr/sni/([^/]+)$#',
+ 'pathStart' => '/yx/uxvqmr/sni/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT w' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/w/f/uxhqblwenx/jpbqa/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/w/f/uxhqblwenx/jpbqa/([^/]+)$#',
+ 'pathStart' => '/w/f/uxhqblwenx/jpbqa/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH vxlv' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/vxlv/nfsfx/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/vxlv/nfsfx/([^/]+)$#',
+ 'pathStart' => '/vxlv/nfsfx/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET qreinhixdn' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/qreinhixdn/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/qreinhixdn/([^/]+)$#',
+ 'pathStart' => '/qreinhixdn/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT ivt' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ivt/vpilezgslfa/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ivt/vpilezgslfa/([^/]+)$#',
+ 'pathStart' => '/ivt/vpilezgslfa/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT vol' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/vol/eucn/emri/auhazevy/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/vol/eucn/emri/auhazevy/([^/]+)$#',
+ 'pathStart' => '/vol/eucn/emri/auhazevy/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST lsbfb' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/lsbfb/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/lsbfb/([^/]+)$#',
+ 'pathStart' => '/lsbfb/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET itzbsojxxzh' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/itzbsojxxzh/yrj/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/itzbsojxxzh/yrj/([^/]+)$#',
+ 'pathStart' => '/itzbsojxxzh/yrj/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE m' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/m/nr/spcnhg/buxeo/grb/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/m/nr/spcnhg/buxeo/grb/([^/]+)$#',
+ 'pathStart' => '/m/nr/spcnhg/buxeo/grb/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST gslttkcrwzzzkweqw' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/gslttkcrwzzzkweqw/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/gslttkcrwzzzkweqw/([^/]+)$#',
+ 'pathStart' => '/gslttkcrwzzzkweqw/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE mtsrffpodbhuw' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/mtsrffpodbhuw/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/mtsrffpodbhuw/([^/]+)$#',
+ 'pathStart' => '/mtsrffpodbhuw/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST qyslyez' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/qyslyez/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/qyslyez/([^/]+)$#',
+ 'pathStart' => '/qyslyez/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE vephzsijtwl' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/vephzsijtwl/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/vephzsijtwl/([^/]+)$#',
+ 'pathStart' => '/vephzsijtwl/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT coafsgxdpbxal' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/coafsgxdpbxal/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/coafsgxdpbxal/([^/]+)$#',
+ 'pathStart' => '/coafsgxdpbxal/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT vfpbr' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/vfpbr/bsliuavokcct/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/vfpbr/bsliuavokcct/([^/]+)$#',
+ 'pathStart' => '/vfpbr/bsliuavokcct/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE imri' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/imri/pt/ncdmmabksob/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/imri/pt/ncdmmabksob/([^/]+)$#',
+ 'pathStart' => '/imri/pt/ncdmmabksob/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET ivkqobkem' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ivkqobkem/sdt/xf/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ivkqobkem/sdt/xf/([^/]+)$#',
+ 'pathStart' => '/ivkqobkem/sdt/xf/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST mnrccybu' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/mnrccybu/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/mnrccybu/([^/]+)$#',
+ 'pathStart' => '/mnrccybu/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET dldiikxwf' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/dldiikxwf/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/dldiikxwf/([^/]+)$#',
+ 'pathStart' => '/dldiikxwf/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST gz' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/gz/uhylfelionio/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/gz/uhylfelionio/([^/]+)$#',
+ 'pathStart' => '/gz/uhylfelionio/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET gry' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/gry/nbvyzpo/is/tisp/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/gry/nbvyzpo/is/tisp/([^/]+)$#',
+ 'pathStart' => '/gry/nbvyzpo/is/tisp/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET plr' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/plr/dcywtwm/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/plr/dcywtwm/([^/]+)$#',
+ 'pathStart' => '/plr/dcywtwm/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET iyguamgmed' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/iyguamgmed/pf/xrfwxfxe/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/iyguamgmed/pf/xrfwxfxe/([^/]+)$#',
+ 'pathStart' => '/iyguamgmed/pf/xrfwxfxe/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST cp' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/cp/rpzjgcam/aumohc/y/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/cp/rpzjgcam/aumohc/y/([^/]+)$#',
+ 'pathStart' => '/cp/rpzjgcam/aumohc/y/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH j' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/j/sjh/jodnz/xqvg/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/j/sjh/jodnz/xqvg/([^/]+)$#',
+ 'pathStart' => '/j/sjh/jodnz/xqvg/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST csmkr' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/csmkr/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/csmkr/([^/]+)$#',
+ 'pathStart' => '/csmkr/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE covojla' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/covojla/pvmy/hb/nlpo/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/covojla/pvmy/hb/nlpo/([^/]+)$#',
+ 'pathStart' => '/covojla/pvmy/hb/nlpo/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST tnsyebqdlayxoewg' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/tnsyebqdlayxoewg/bd/xc/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/tnsyebqdlayxoewg/bd/xc/([^/]+)$#',
+ 'pathStart' => '/tnsyebqdlayxoewg/bd/xc/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT uwdrn' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/uwdrn/yjn/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/uwdrn/yjn/([^/]+)$#',
+ 'pathStart' => '/uwdrn/yjn/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE boikqeiqfz' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/boikqeiqfz/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/boikqeiqfz/([^/]+)$#',
+ 'pathStart' => '/boikqeiqfz/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE qouimkmb' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/qouimkmb/ad/yxwgup/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/qouimkmb/ad/yxwgup/([^/]+)$#',
+ 'pathStart' => '/qouimkmb/ad/yxwgup/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH xqowgsmgfydkizyab' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/xqowgsmgfydkizyab/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/xqowgsmgfydkizyab/([^/]+)$#',
+ 'pathStart' => '/xqowgsmgfydkizyab/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE o' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/o/vqciinvdu/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/o/vqciinvdu/([^/]+)$#',
+ 'pathStart' => '/o/vqciinvdu/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET sqmypwfz' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/sqmypwfz/c/yskihzry/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/sqmypwfz/c/yskihzry/([^/]+)$#',
+ 'pathStart' => '/sqmypwfz/c/yskihzry/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST pad' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/pad/tu/ogx/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/pad/tu/ogx/([^/]+)$#',
+ 'pathStart' => '/pad/tu/ogx/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH ia' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ia/fycyf/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ia/fycyf/([^/]+)$#',
+ 'pathStart' => '/ia/fycyf/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE rbq' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/rbq/tg/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/rbq/tg/([^/]+)$#',
+ 'pathStart' => '/rbq/tg/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET xixhzqryatjp' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/xixhzqryatjp/xwjs/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/xixhzqryatjp/xwjs/([^/]+)$#',
+ 'pathStart' => '/xixhzqryatjp/xwjs/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH nudjb' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/nudjb/yqqiarxe/wwl/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/nudjb/yqqiarxe/wwl/([^/]+)$#',
+ 'pathStart' => '/nudjb/yqqiarxe/wwl/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET ag' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ag/homgkn/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ag/homgkn/([^/]+)$#',
+ 'pathStart' => '/ag/homgkn/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET lvov' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/lvov/pgobfnuafiiz/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/lvov/pgobfnuafiiz/([^/]+)$#',
+ 'pathStart' => '/lvov/pgobfnuafiiz/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET wvoqjuo' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/wvoqjuo/tvsm/sa/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/wvoqjuo/tvsm/sa/([^/]+)$#',
+ 'pathStart' => '/wvoqjuo/tvsm/sa/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE jpgbjzqufwfnhh' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/jpgbjzqufwfnhh/fwccr/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/jpgbjzqufwfnhh/fwccr/([^/]+)$#',
+ 'pathStart' => '/jpgbjzqufwfnhh/fwccr/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT qhcv' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/qhcv/sgtyt/crsx/x/jgdia/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/qhcv/sgtyt/crsx/x/jgdia/([^/]+)$#',
+ 'pathStart' => '/qhcv/sgtyt/crsx/x/jgdia/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT v2' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/v2/odabudztvjirwsspma/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/v2/odabudztvjirwsspma/([^/]+)$#',
+ 'pathStart' => '/v2/odabudztvjirwsspma/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/v2/tptrelneqgzhenoerl/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/v2/tptrelneqgzhenoerl/([^/]+)$#',
+ 'pathStart' => '/v2/tptrelneqgzhenoerl/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 2 => [
+ 'name' => '',
+ 'path' => '/v2/ruylwpqrihozckvtgm/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/v2/ruylwpqrihozckvtgm/([^/]+)$#',
+ 'pathStart' => '/v2/ruylwpqrihozckvtgm/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 3 => [
+ 'name' => '',
+ 'path' => '/v2/durpuu/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/v2/durpuu/([^/]+)$#',
+ 'pathStart' => '/v2/durpuu/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET ugryezf' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ugryezf/tewj/yaqjzkwmu/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ugryezf/tewj/yaqjzkwmu/([^/]+)$#',
+ 'pathStart' => '/ugryezf/tewj/yaqjzkwmu/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH e' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/e/qbktydngqlyqmuay/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/e/qbktydngqlyqmuay/([^/]+)$#',
+ 'pathStart' => '/e/qbktydngqlyqmuay/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST api' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/api/bcescnecpvwirefiwx/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/bcescnecpvwirefiwx/([^/]+)$#',
+ 'pathStart' => '/api/bcescnecpvwirefiwx/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/api/dundcluhgzxv/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/dundcluhgzxv/([^/]+)$#',
+ 'pathStart' => '/api/dundcluhgzxv/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 2 => [
+ 'name' => '',
+ 'path' => '/api/xqwmdjlhwczz/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/xqwmdjlhwczz/([^/]+)$#',
+ 'pathStart' => '/api/xqwmdjlhwczz/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 3 => [
+ 'name' => '',
+ 'path' => '/api/ueffyjvdnuqapzf/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/ueffyjvdnuqapzf/([^/]+)$#',
+ 'pathStart' => '/api/ueffyjvdnuqapzf/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 4 => [
+ 'name' => '',
+ 'path' => '/api/rkjsjo/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/rkjsjo/([^/]+)$#',
+ 'pathStart' => '/api/rkjsjo/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 5 => [
+ 'name' => '',
+ 'path' => '/api/dgturvdjvueb/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/dgturvdjvueb/([^/]+)$#',
+ 'pathStart' => '/api/dgturvdjvueb/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET lvnysclgcyp' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/lvnysclgcyp/dn/apwo/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/lvnysclgcyp/dn/apwo/([^/]+)$#',
+ 'pathStart' => '/lvnysclgcyp/dn/apwo/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET oek' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/oek/qqjgvhw/weye/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/oek/qqjgvhw/weye/([^/]+)$#',
+ 'pathStart' => '/oek/qqjgvhw/weye/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET ywdpizo' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ywdpizo/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ywdpizo/([^/]+)$#',
+ 'pathStart' => '/ywdpizo/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET yuibarhmmmdyhgwesm' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/yuibarhmmmdyhgwesm/g/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/yuibarhmmmdyhgwesm/g/([^/]+)$#',
+ 'pathStart' => '/yuibarhmmmdyhgwesm/g/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET tcos' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/tcos/llqc/bb/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/tcos/llqc/bb/([^/]+)$#',
+ 'pathStart' => '/tcos/llqc/bb/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET xxtfrakd' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/xxtfrakd/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/xxtfrakd/([^/]+)$#',
+ 'pathStart' => '/xxtfrakd/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET lijfptn' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/lijfptn/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/lijfptn/([^/]+)$#',
+ 'pathStart' => '/lijfptn/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET c' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/c/nfn/yhepq/iqyrlej/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/c/nfn/yhepq/iqyrlej/([^/]+)$#',
+ 'pathStart' => '/c/nfn/yhepq/iqyrlej/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH nhnqifgj' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/nhnqifgj/vned/yhcutfo/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/nhnqifgj/vned/yhcutfo/([^/]+)$#',
+ 'pathStart' => '/nhnqifgj/vned/yhcutfo/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH wwdponhbnx' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/wwdponhbnx/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/wwdponhbnx/([^/]+)$#',
+ 'pathStart' => '/wwdponhbnx/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET ucle' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ucle/gfsovejxpu/cffxp/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ucle/gfsovejxpu/cffxp/([^/]+)$#',
+ 'pathStart' => '/ucle/gfsovejxpu/cffxp/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT npfmi' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/npfmi/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/npfmi/([^/]+)$#',
+ 'pathStart' => '/npfmi/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE k' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/k/nbwqlgyxd/mpdr/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/k/nbwqlgyxd/mpdr/([^/]+)$#',
+ 'pathStart' => '/k/nbwqlgyxd/mpdr/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET jacethrwk' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/jacethrwk/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/jacethrwk/([^/]+)$#',
+ 'pathStart' => '/jacethrwk/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE glsr' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/glsr/w/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/glsr/w/([^/]+)$#',
+ 'pathStart' => '/glsr/w/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET optprhrs' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/optprhrs/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/optprhrs/([^/]+)$#',
+ 'pathStart' => '/optprhrs/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE djeitkql' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/djeitkql/uage/lastv/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/djeitkql/uage/lastv/([^/]+)$#',
+ 'pathStart' => '/djeitkql/uage/lastv/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT sfbqnm' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/sfbqnm/btoejplnwxh/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/sfbqnm/btoejplnwxh/([^/]+)$#',
+ 'pathStart' => '/sfbqnm/btoejplnwxh/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET cni' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/cni/qjssodudxyg/ie/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/cni/qjssodudxyg/ie/([^/]+)$#',
+ 'pathStart' => '/cni/qjssodudxyg/ie/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE ficcdkqgwups' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ficcdkqgwups/kamc/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ficcdkqgwups/kamc/([^/]+)$#',
+ 'pathStart' => '/ficcdkqgwups/kamc/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST yfvtz' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/yfvtz/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/yfvtz/([^/]+)$#',
+ 'pathStart' => '/yfvtz/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT evrxfaokmh' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/evrxfaokmh/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/evrxfaokmh/([^/]+)$#',
+ 'pathStart' => '/evrxfaokmh/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE t' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/t/afgsjrwzw/lnia/m/v/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/t/afgsjrwzw/lnia/m/v/([^/]+)$#',
+ 'pathStart' => '/t/afgsjrwzw/lnia/m/v/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/t/uzkfq/uu/vgamgxrcic/d/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/t/uzkfq/uu/vgamgxrcic/d/([^/]+)$#',
+ 'pathStart' => '/t/uzkfq/uu/vgamgxrcic/d/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET h' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/h/gndquhhyq/h/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/h/gndquhhyq/h/([^/]+)$#',
+ 'pathStart' => '/h/gndquhhyq/h/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET veemy' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/veemy/okpiz/xmd/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/veemy/okpiz/xmd/([^/]+)$#',
+ 'pathStart' => '/veemy/okpiz/xmd/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH w' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/w/px/sinqb/xajqg/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/w/px/sinqb/xajqg/([^/]+)$#',
+ 'pathStart' => '/w/px/sinqb/xajqg/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE qhvibg' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/qhvibg/bg/koyovovlneh/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/qhvibg/bg/koyovovlneh/([^/]+)$#',
+ 'pathStart' => '/qhvibg/bg/koyovovlneh/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST fruvt' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/fruvt/fcrmwho/zuogxguj/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/fruvt/fcrmwho/zuogxguj/([^/]+)$#',
+ 'pathStart' => '/fruvt/fcrmwho/zuogxguj/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT s' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/s/qdejkuueasftgvxsd/a/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/s/qdejkuueasftgvxsd/a/([^/]+)$#',
+ 'pathStart' => '/s/qdejkuueasftgvxsd/a/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE v2' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/v2/okpsbo/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/v2/okpsbo/([^/]+)$#',
+ 'pathStart' => '/v2/okpsbo/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/v2/idnanpeflzzcrkeglr/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/v2/idnanpeflzzcrkeglr/([^/]+)$#',
+ 'pathStart' => '/v2/idnanpeflzzcrkeglr/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 2 => [
+ 'name' => '',
+ 'path' => '/v2/dpshcrphvbwk/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/v2/dpshcrphvbwk/([^/]+)$#',
+ 'pathStart' => '/v2/dpshcrphvbwk/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE mzt' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/mzt/qylev/akodq/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/mzt/qylev/akodq/([^/]+)$#',
+ 'pathStart' => '/mzt/qylev/akodq/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH hyujquvl' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/hyujquvl/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/hyujquvl/([^/]+)$#',
+ 'pathStart' => '/hyujquvl/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET zynnxuhjhf' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/zynnxuhjhf/uev/e/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/zynnxuhjhf/uev/e/([^/]+)$#',
+ 'pathStart' => '/zynnxuhjhf/uev/e/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST zawgttjnnwlhybumirf' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/zawgttjnnwlhybumirf/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/zawgttjnnwlhybumirf/([^/]+)$#',
+ 'pathStart' => '/zawgttjnnwlhybumirf/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET bj' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/bj/ve/salslr/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/bj/ve/salslr/([^/]+)$#',
+ 'pathStart' => '/bj/ve/salslr/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET ccytmtz' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ccytmtz/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ccytmtz/([^/]+)$#',
+ 'pathStart' => '/ccytmtz/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET mgofppqcbsrya' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/mgofppqcbsrya/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/mgofppqcbsrya/([^/]+)$#',
+ 'pathStart' => '/mgofppqcbsrya/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET gezzognyftyj' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/gezzognyftyj/houyslke/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/gezzognyftyj/houyslke/([^/]+)$#',
+ 'pathStart' => '/gezzognyftyj/houyslke/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST n' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/n/qckux/memkm/vxbox/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/n/qckux/memkm/vxbox/([^/]+)$#',
+ 'pathStart' => '/n/qckux/memkm/vxbox/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET pjsq' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/pjsq/p/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/pjsq/p/([^/]+)$#',
+ 'pathStart' => '/pjsq/p/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST i' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/i/vzcut/qlvnfz/w/zjn/z/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/i/vzcut/qlvnfz/w/zjn/z/([^/]+)$#',
+ 'pathStart' => '/i/vzcut/qlvnfz/w/zjn/z/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET f' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/f/yxy/vtup/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/f/yxy/vtup/([^/]+)$#',
+ 'pathStart' => '/f/yxy/vtup/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/f/v/uclj/ckc/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/f/v/uclj/ckc/([^/]+)$#',
+ 'pathStart' => '/f/v/uclj/ckc/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST tiobowyl' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/tiobowyl/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/tiobowyl/([^/]+)$#',
+ 'pathStart' => '/tiobowyl/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH luysnqo' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/luysnqo/h/yfuxmh/p/n/vws/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/luysnqo/h/yfuxmh/p/n/vws/([^/]+)$#',
+ 'pathStart' => '/luysnqo/h/yfuxmh/p/n/vws/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE kpizb' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/kpizb/sbaxjp/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/kpizb/sbaxjp/([^/]+)$#',
+ 'pathStart' => '/kpizb/sbaxjp/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE u' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/u/efzodug/ua/jtx/vnwb/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/u/efzodug/ua/jtx/vnwb/([^/]+)$#',
+ 'pathStart' => '/u/efzodug/ua/jtx/vnwb/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST cpk' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/cpk/zmj/su/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/cpk/zmj/su/([^/]+)$#',
+ 'pathStart' => '/cpk/zmj/su/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT lf' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/lf/iwsybgq/xezv/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/lf/iwsybgq/xezv/([^/]+)$#',
+ 'pathStart' => '/lf/iwsybgq/xezv/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT mlddwbqxpt' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/mlddwbqxpt/ln/l/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/mlddwbqxpt/ln/l/([^/]+)$#',
+ 'pathStart' => '/mlddwbqxpt/ln/l/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE lj' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/lj/jmycftjxwer/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/lj/jmycftjxwer/([^/]+)$#',
+ 'pathStart' => '/lj/jmycftjxwer/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH b' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/b/t/p/u/vpmte/jzwc/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/b/t/p/u/vpmte/jzwc/([^/]+)$#',
+ 'pathStart' => '/b/t/p/u/vpmte/jzwc/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT hkvv' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/hkvv/gyxwwnsartgaoeh/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/hkvv/gyxwwnsartgaoeh/([^/]+)$#',
+ 'pathStart' => '/hkvv/gyxwwnsartgaoeh/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT mdmrz' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/mdmrz/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/mdmrz/([^/]+)$#',
+ 'pathStart' => '/mdmrz/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET uqontc' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/uqontc/cblmso/gw/pjtb/o/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/uqontc/cblmso/gw/pjtb/o/([^/]+)$#',
+ 'pathStart' => '/uqontc/cblmso/gw/pjtb/o/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST usxg' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/usxg/grr/vj/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/usxg/grr/vj/([^/]+)$#',
+ 'pathStart' => '/usxg/grr/vj/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT xmeh' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/xmeh/q/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/xmeh/q/([^/]+)$#',
+ 'pathStart' => '/xmeh/q/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET wpcq' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/wpcq/wdtyiubbbrmwu/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/wpcq/wdtyiubbbrmwu/([^/]+)$#',
+ 'pathStart' => '/wpcq/wdtyiubbbrmwu/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET wiylvdsi' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/wiylvdsi/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/wiylvdsi/([^/]+)$#',
+ 'pathStart' => '/wiylvdsi/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE whaiekqsqgqgcjmhu' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/whaiekqsqgqgcjmhu/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/whaiekqsqgqgcjmhu/([^/]+)$#',
+ 'pathStart' => '/whaiekqsqgqgcjmhu/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET dzsiufj' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/dzsiufj/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/dzsiufj/([^/]+)$#',
+ 'pathStart' => '/dzsiufj/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH diuzoe' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/diuzoe/fmtkmanwkt/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/diuzoe/fmtkmanwkt/([^/]+)$#',
+ 'pathStart' => '/diuzoe/fmtkmanwkt/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH rfsynyejfcrt' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/rfsynyejfcrt/kcvbqzm/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/rfsynyejfcrt/kcvbqzm/([^/]+)$#',
+ 'pathStart' => '/rfsynyejfcrt/kcvbqzm/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT hgs' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/hgs/fkvhq/ysx/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/hgs/fkvhq/ysx/([^/]+)$#',
+ 'pathStart' => '/hgs/fkvhq/ysx/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET n' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/n/wec/htzi/a/hjtfughv/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/n/wec/htzi/a/hjtfughv/([^/]+)$#',
+ 'pathStart' => '/n/wec/htzi/a/hjtfughv/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/n/lieoby/gc/ydbx/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/n/lieoby/gc/ydbx/([^/]+)$#',
+ 'pathStart' => '/n/lieoby/gc/ydbx/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET i' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/i/jnkazj/qiz/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/i/jnkazj/qiz/([^/]+)$#',
+ 'pathStart' => '/i/jnkazj/qiz/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH dblmcvpfc' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/dblmcvpfc/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/dblmcvpfc/([^/]+)$#',
+ 'pathStart' => '/dblmcvpfc/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT xeogjtkr' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/xeogjtkr/j/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/xeogjtkr/j/([^/]+)$#',
+ 'pathStart' => '/xeogjtkr/j/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST glbln' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/glbln/vsguc/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/glbln/vsguc/([^/]+)$#',
+ 'pathStart' => '/glbln/vsguc/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET jfwptkkptolxjexhppt' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/jfwptkkptolxjexhppt/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/jfwptkkptolxjexhppt/([^/]+)$#',
+ 'pathStart' => '/jfwptkkptolxjexhppt/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET ozjbi' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ozjbi/ufx/qzrqoodvldq/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ozjbi/ufx/qzrqoodvldq/([^/]+)$#',
+ 'pathStart' => '/ozjbi/ufx/qzrqoodvldq/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET b' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/b/vzkls/vkzhzlu/pv/z/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/b/vzkls/vkzhzlu/pv/z/([^/]+)$#',
+ 'pathStart' => '/b/vzkls/vkzhzlu/pv/z/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE user' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/user/xmglzwrgssvl/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/xmglzwrgssvl/([^/]+)$#',
+ 'pathStart' => '/user/xmglzwrgssvl/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/user/nauyetcguqop/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/nauyetcguqop/([^/]+)$#',
+ 'pathStart' => '/user/nauyetcguqop/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 2 => [
+ 'name' => '',
+ 'path' => '/user/zcpylajcwrevveh/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/zcpylajcwrevveh/([^/]+)$#',
+ 'pathStart' => '/user/zcpylajcwrevveh/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 3 => [
+ 'name' => '',
+ 'path' => '/user/olrnin/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/olrnin/([^/]+)$#',
+ 'pathStart' => '/user/olrnin/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET w' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/w/ugjau/w/vtevhscitgfk/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/w/ugjau/w/vtevhscitgfk/([^/]+)$#',
+ 'pathStart' => '/w/ugjau/w/vtevhscitgfk/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE x' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/x/qmipihlsr/bub/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/x/qmipihlsr/bub/([^/]+)$#',
+ 'pathStart' => '/x/qmipihlsr/bub/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT odwjvxczx' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/odwjvxczx/d/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/odwjvxczx/d/([^/]+)$#',
+ 'pathStart' => '/odwjvxczx/d/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET j' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/j/erlejds/sj/ozz/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/j/erlejds/sj/ozz/([^/]+)$#',
+ 'pathStart' => '/j/erlejds/sj/ozz/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/j/io/nijvehe/p/uuvdz/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/j/io/nijvehe/p/uuvdz/([^/]+)$#',
+ 'pathStart' => '/j/io/nijvehe/p/uuvdz/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET lsljhgathmn' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/lsljhgathmn/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/lsljhgathmn/([^/]+)$#',
+ 'pathStart' => '/lsljhgathmn/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT user' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/user/dlxmnagmgmoqjkahhe/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/dlxmnagmgmoqjkahhe/([^/]+)$#',
+ 'pathStart' => '/user/dlxmnagmgmoqjkahhe/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/user/plldocmvntoiryj/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/plldocmvntoiryj/([^/]+)$#',
+ 'pathStart' => '/user/plldocmvntoiryj/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 2 => [
+ 'name' => '',
+ 'path' => '/user/yppejgcrxjbhlcqbnh/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/yppejgcrxjbhlcqbnh/([^/]+)$#',
+ 'pathStart' => '/user/yppejgcrxjbhlcqbnh/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 3 => [
+ 'name' => '',
+ 'path' => '/user/hevccjyauunzxucnvq/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/hevccjyauunzxucnvq/([^/]+)$#',
+ 'pathStart' => '/user/hevccjyauunzxucnvq/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 4 => [
+ 'name' => '',
+ 'path' => '/user/cpugssjxoyua/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/cpugssjxoyua/([^/]+)$#',
+ 'pathStart' => '/user/cpugssjxoyua/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 5 => [
+ 'name' => '',
+ 'path' => '/user/ampjbyamgbbd/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/user/ampjbyamgbbd/([^/]+)$#',
+ 'pathStart' => '/user/ampjbyamgbbd/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH mgylrdswtnw' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/mgylrdswtnw/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/mgylrdswtnw/([^/]+)$#',
+ 'pathStart' => '/mgylrdswtnw/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH gyfflwlhfkdzjtlzs' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/gyfflwlhfkdzjtlzs/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/gyfflwlhfkdzjtlzs/([^/]+)$#',
+ 'pathStart' => '/gyfflwlhfkdzjtlzs/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE eg' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/eg/nvpjm/w/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/eg/nvpjm/w/([^/]+)$#',
+ 'pathStart' => '/eg/nvpjm/w/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH xhqm' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/xhqm/q/cm/uafplaw/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/xhqm/q/cm/uafplaw/([^/]+)$#',
+ 'pathStart' => '/xhqm/q/cm/uafplaw/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET mlp' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/mlp/sjstrnr/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/mlp/sjstrnr/([^/]+)$#',
+ 'pathStart' => '/mlp/sjstrnr/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST wfmpp' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/wfmpp/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/wfmpp/([^/]+)$#',
+ 'pathStart' => '/wfmpp/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH yffuec' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/yffuec/ahvwmwg/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/yffuec/ahvwmwg/([^/]+)$#',
+ 'pathStart' => '/yffuec/ahvwmwg/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE hvddfj' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/hvddfj/z/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/hvddfj/z/([^/]+)$#',
+ 'pathStart' => '/hvddfj/z/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE ndlbcfphelyaqfki' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ndlbcfphelyaqfki/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ndlbcfphelyaqfki/([^/]+)$#',
+ 'pathStart' => '/ndlbcfphelyaqfki/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE f' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/f/dwqeux/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/f/dwqeux/([^/]+)$#',
+ 'pathStart' => '/f/dwqeux/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT ku' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ku/ij/o/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ku/ij/o/([^/]+)$#',
+ 'pathStart' => '/ku/ij/o/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET faowuout' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/faowuout/wrtptb/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/faowuout/wrtptb/([^/]+)$#',
+ 'pathStart' => '/faowuout/wrtptb/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH ajj' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ajj/ei/hyz/pdjurm/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ajj/ei/hyz/pdjurm/([^/]+)$#',
+ 'pathStart' => '/ajj/ei/hyz/pdjurm/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE scdeftrlvok' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/scdeftrlvok/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/scdeftrlvok/([^/]+)$#',
+ 'pathStart' => '/scdeftrlvok/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE xibd' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/xibd/hromy/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/xibd/hromy/([^/]+)$#',
+ 'pathStart' => '/xibd/hromy/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET qmqvuqpqi' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/qmqvuqpqi/w/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/qmqvuqpqi/w/([^/]+)$#',
+ 'pathStart' => '/qmqvuqpqi/w/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE me' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/me/gunzor/qzdvs/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/me/gunzor/qzdvs/([^/]+)$#',
+ 'pathStart' => '/me/gunzor/qzdvs/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE xiaaipgzo' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/xiaaipgzo/zyfc/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/xiaaipgzo/zyfc/([^/]+)$#',
+ 'pathStart' => '/xiaaipgzo/zyfc/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE mb' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/mb/gjuxygkyr/ebsxdwdzy/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/mb/gjuxygkyr/ebsxdwdzy/([^/]+)$#',
+ 'pathStart' => '/mb/gjuxygkyr/ebsxdwdzy/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET lqcme' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/lqcme/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/lqcme/([^/]+)$#',
+ 'pathStart' => '/lqcme/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET jepagheeipeivjch' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/jepagheeipeivjch/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/jepagheeipeivjch/([^/]+)$#',
+ 'pathStart' => '/jepagheeipeivjch/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET dxyilfvyp' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/dxyilfvyp/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/dxyilfvyp/([^/]+)$#',
+ 'pathStart' => '/dxyilfvyp/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT exdktclciulxkm' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/exdktclciulxkm/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/exdktclciulxkm/([^/]+)$#',
+ 'pathStart' => '/exdktclciulxkm/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET aimim' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/aimim/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/aimim/([^/]+)$#',
+ 'pathStart' => '/aimim/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET cwwiqrbqwkxyymqk' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/cwwiqrbqwkxyymqk/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/cwwiqrbqwkxyymqk/([^/]+)$#',
+ 'pathStart' => '/cwwiqrbqwkxyymqk/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET kq' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/kq/dpi/paaja/bidoucs/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/kq/dpi/paaja/bidoucs/([^/]+)$#',
+ 'pathStart' => '/kq/dpi/paaja/bidoucs/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET smgyitjvafh' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/smgyitjvafh/o/podzyjkx/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/smgyitjvafh/o/podzyjkx/([^/]+)$#',
+ 'pathStart' => '/smgyitjvafh/o/podzyjkx/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH bavmbfcewx' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/bavmbfcewx/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/bavmbfcewx/([^/]+)$#',
+ 'pathStart' => '/bavmbfcewx/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT cww' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/cww/h/azmuacl/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/cww/h/azmuacl/([^/]+)$#',
+ 'pathStart' => '/cww/h/azmuacl/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET vm' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/vm/mlatikmw/h/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/vm/mlatikmw/h/([^/]+)$#',
+ 'pathStart' => '/vm/mlatikmw/h/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST hmjqhqcs' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/hmjqhqcs/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/hmjqhqcs/([^/]+)$#',
+ 'pathStart' => '/hmjqhqcs/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET qobi' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/qobi/tebjuey/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/qobi/tebjuey/([^/]+)$#',
+ 'pathStart' => '/qobi/tebjuey/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH otisezzlqiylmkmkr' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/otisezzlqiylmkmkr/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/otisezzlqiylmkmkr/([^/]+)$#',
+ 'pathStart' => '/otisezzlqiylmkmkr/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT f' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/f/klvgcyzxsyhjdjzglf/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/f/klvgcyzxsyhjdjzglf/([^/]+)$#',
+ 'pathStart' => '/f/klvgcyzxsyhjdjzglf/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET ftgzcaecjnetejo' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ftgzcaecjnetejo/k/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ftgzcaecjnetejo/k/([^/]+)$#',
+ 'pathStart' => '/ftgzcaecjnetejo/k/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT jf' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/jf/aqbodvap/s/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/jf/aqbodvap/s/([^/]+)$#',
+ 'pathStart' => '/jf/aqbodvap/s/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH worsjex' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/worsjex/w/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/worsjex/w/([^/]+)$#',
+ 'pathStart' => '/worsjex/w/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH nyrzqljpesbm' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/nyrzqljpesbm/calss/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/nyrzqljpesbm/calss/([^/]+)$#',
+ 'pathStart' => '/nyrzqljpesbm/calss/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET ny' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ny/frouawymqrt/odgfrb/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ny/frouawymqrt/odgfrb/([^/]+)$#',
+ 'pathStart' => '/ny/frouawymqrt/odgfrb/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST qvuh' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/qvuh/iy/wvfy/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/qvuh/iy/wvfy/([^/]+)$#',
+ 'pathStart' => '/qvuh/iy/wvfy/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET s' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/s/bhgd/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/s/bhgd/([^/]+)$#',
+ 'pathStart' => '/s/bhgd/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE fp' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/fp/bbnae/vlduwc/dpzers/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/fp/bbnae/vlduwc/dpzers/([^/]+)$#',
+ 'pathStart' => '/fp/bbnae/vlduwc/dpzers/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH exvh' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/exvh/tdp/oolkpzisvcdpt/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/exvh/tdp/oolkpzisvcdpt/([^/]+)$#',
+ 'pathStart' => '/exvh/tdp/oolkpzisvcdpt/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH znux' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/znux/i/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/znux/i/([^/]+)$#',
+ 'pathStart' => '/znux/i/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET z' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/z/mvsrssudc/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/z/mvsrssudc/([^/]+)$#',
+ 'pathStart' => '/z/mvsrssudc/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET hfmxkutq' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/hfmxkutq/rtvqft/tbi/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/hfmxkutq/rtvqft/tbi/([^/]+)$#',
+ 'pathStart' => '/hfmxkutq/rtvqft/tbi/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST jdmvlce' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/jdmvlce/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/jdmvlce/([^/]+)$#',
+ 'pathStart' => '/jdmvlce/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT k' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/k/n/kp/ohaw/f/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/k/n/kp/ohaw/f/([^/]+)$#',
+ 'pathStart' => '/k/n/kp/ohaw/f/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST rzzconffh' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/rzzconffh/lcqgkwy/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/rzzconffh/lcqgkwy/([^/]+)$#',
+ 'pathStart' => '/rzzconffh/lcqgkwy/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST fy' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/fy/ezunq/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/fy/ezunq/([^/]+)$#',
+ 'pathStart' => '/fy/ezunq/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST czf' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/czf/h/nhmwapzraaex/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/czf/h/nhmwapzraaex/([^/]+)$#',
+ 'pathStart' => '/czf/h/nhmwapzraaex/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET fuknmpa' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/fuknmpa/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/fuknmpa/([^/]+)$#',
+ 'pathStart' => '/fuknmpa/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH hcsgdnlrwkplv' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/hcsgdnlrwkplv/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/hcsgdnlrwkplv/([^/]+)$#',
+ 'pathStart' => '/hcsgdnlrwkplv/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT oqjrfft' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/oqjrfft/kop/iwbv/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/oqjrfft/kop/iwbv/([^/]+)$#',
+ 'pathStart' => '/oqjrfft/kop/iwbv/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST ihovdzw' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ihovdzw/jqcmyafmui/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ihovdzw/jqcmyafmui/([^/]+)$#',
+ 'pathStart' => '/ihovdzw/jqcmyafmui/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE xnrnw' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/xnrnw/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/xnrnw/([^/]+)$#',
+ 'pathStart' => '/xnrnw/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH che' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/che/wxst/hxhsrqa/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/che/wxst/hxhsrqa/([^/]+)$#',
+ 'pathStart' => '/che/wxst/hxhsrqa/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE sz' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/sz/cxqlzioighmu/uy/a/fg/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/sz/cxqlzioighmu/uy/a/fg/([^/]+)$#',
+ 'pathStart' => '/sz/cxqlzioighmu/uy/a/fg/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST zqhcdozaivyfhuy' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/zqhcdozaivyfhuy/iwyj/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/zqhcdozaivyfhuy/iwyj/([^/]+)$#',
+ 'pathStart' => '/zqhcdozaivyfhuy/iwyj/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST zkkft' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/zkkft/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/zkkft/([^/]+)$#',
+ 'pathStart' => '/zkkft/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET ohurw' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ohurw/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ohurw/([^/]+)$#',
+ 'pathStart' => '/ohurw/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE cchd' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/cchd/q/mbqaa/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/cchd/q/mbqaa/([^/]+)$#',
+ 'pathStart' => '/cchd/q/mbqaa/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET cdlqwwlu' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/cdlqwwlu/jdapukxrv/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/cdlqwwlu/jdapukxrv/([^/]+)$#',
+ 'pathStart' => '/cdlqwwlu/jdapukxrv/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET krwog' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/krwog/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/krwog/([^/]+)$#',
+ 'pathStart' => '/krwog/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET yibublqswrdotyhfcooy' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/yibublqswrdotyhfcooy/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/yibublqswrdotyhfcooy/([^/]+)$#',
+ 'pathStart' => '/yibublqswrdotyhfcooy/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET ziiqx' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ziiqx/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ziiqx/([^/]+)$#',
+ 'pathStart' => '/ziiqx/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET owfxa' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/owfxa/sxm/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/owfxa/sxm/([^/]+)$#',
+ 'pathStart' => '/owfxa/sxm/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET tq' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/tq/fy/iqgky/mkzgjcq/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/tq/fy/iqgky/mkzgjcq/([^/]+)$#',
+ 'pathStart' => '/tq/fy/iqgky/mkzgjcq/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH zgtpnl' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/zgtpnl/xqlylblggjmu/x/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/zgtpnl/xqlylblggjmu/x/([^/]+)$#',
+ 'pathStart' => '/zgtpnl/xqlylblggjmu/x/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST gunyihcww' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/gunyihcww/vufwym/eelj/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/gunyihcww/vufwym/eelj/([^/]+)$#',
+ 'pathStart' => '/gunyihcww/vufwym/eelj/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH dbx' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/dbx/wads/w/g/r/uob/hban/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/dbx/wads/w/g/r/uob/hban/([^/]+)$#',
+ 'pathStart' => '/dbx/wads/w/g/r/uob/hban/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH api' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/api/jkltcsmztigqjlspqq/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/jkltcsmztigqjlspqq/([^/]+)$#',
+ 'pathStart' => '/api/jkltcsmztigqjlspqq/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/api/jhliqwhcpxmk/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/jhliqwhcpxmk/([^/]+)$#',
+ 'pathStart' => '/api/jhliqwhcpxmk/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 2 => [
+ 'name' => '',
+ 'path' => '/api/usmdxhcntodiyyq/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/usmdxhcntodiyyq/([^/]+)$#',
+ 'pathStart' => '/api/usmdxhcntodiyyq/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE soljt' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/soljt/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/soljt/([^/]+)$#',
+ 'pathStart' => '/soljt/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH femtx' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/femtx/ntkzh/kppj/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/femtx/ntkzh/kppj/([^/]+)$#',
+ 'pathStart' => '/femtx/ntkzh/kppj/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET rizd' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/rizd/xgyt/vq/s/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/rizd/xgyt/vq/s/([^/]+)$#',
+ 'pathStart' => '/rizd/xgyt/vq/s/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH jcvb' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/jcvb/nbsuxj/hx/ezwr/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/jcvb/nbsuxj/hx/ezwr/([^/]+)$#',
+ 'pathStart' => '/jcvb/nbsuxj/hx/ezwr/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE llbas' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/llbas/uin/wulrkor/fo/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/llbas/uin/wulrkor/fo/([^/]+)$#',
+ 'pathStart' => '/llbas/uin/wulrkor/fo/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET hzxxsflcd' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/hzxxsflcd/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/hzxxsflcd/([^/]+)$#',
+ 'pathStart' => '/hzxxsflcd/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST msonk' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/msonk/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/msonk/([^/]+)$#',
+ 'pathStart' => '/msonk/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST jqtni' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/jqtni/jvg/mfffs/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/jqtni/jvg/mfffs/([^/]+)$#',
+ 'pathStart' => '/jqtni/jvg/mfffs/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH bidssbj' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/bidssbj/jqlv/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/bidssbj/jqlv/([^/]+)$#',
+ 'pathStart' => '/bidssbj/jqlv/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH gmjvnxye' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/gmjvnxye/jsi/zq/eef/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/gmjvnxye/jsi/zq/eef/([^/]+)$#',
+ 'pathStart' => '/gmjvnxye/jsi/zq/eef/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE shupe' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/shupe/ntq/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/shupe/ntq/([^/]+)$#',
+ 'pathStart' => '/shupe/ntq/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE exf' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/exf/bpgn/f/j/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/exf/bpgn/f/j/([^/]+)$#',
+ 'pathStart' => '/exf/bpgn/f/j/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE vznldezwg' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/vznldezwg/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/vznldezwg/([^/]+)$#',
+ 'pathStart' => '/vznldezwg/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH owbww' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/owbww/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/owbww/([^/]+)$#',
+ 'pathStart' => '/owbww/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH ialyl' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ialyl/rd/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ialyl/rd/([^/]+)$#',
+ 'pathStart' => '/ialyl/rd/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH f' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/f/jksiv/dwgintcc/kujqn/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/f/jksiv/dwgintcc/kujqn/([^/]+)$#',
+ 'pathStart' => '/f/jksiv/dwgintcc/kujqn/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET zy' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/zy/bvsawcvi/o/iaanizyo/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/zy/bvsawcvi/o/iaanizyo/([^/]+)$#',
+ 'pathStart' => '/zy/bvsawcvi/o/iaanizyo/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET lvdrymc' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/lvdrymc/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/lvdrymc/([^/]+)$#',
+ 'pathStart' => '/lvdrymc/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH gz' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/gz/stu/huwusipb/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/gz/stu/huwusipb/([^/]+)$#',
+ 'pathStart' => '/gz/stu/huwusipb/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT xu' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/xu/bqgbldya/tcsqe/ao/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/xu/bqgbldya/tcsqe/ao/([^/]+)$#',
+ 'pathStart' => '/xu/bqgbldya/tcsqe/ao/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST nhidyffovpmdcmjlq' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/nhidyffovpmdcmjlq/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/nhidyffovpmdcmjlq/([^/]+)$#',
+ 'pathStart' => '/nhidyffovpmdcmjlq/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE n' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/n/f/snusgy/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/n/f/snusgy/([^/]+)$#',
+ 'pathStart' => '/n/f/snusgy/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST kwknanu' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/kwknanu/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/kwknanu/([^/]+)$#',
+ 'pathStart' => '/kwknanu/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH wwxevvdaohufoh' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/wwxevvdaohufoh/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/wwxevvdaohufoh/([^/]+)$#',
+ 'pathStart' => '/wwxevvdaohufoh/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT daisoyma' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/daisoyma/pxfgrjbzryqa/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/daisoyma/pxfgrjbzryqa/([^/]+)$#',
+ 'pathStart' => '/daisoyma/pxfgrjbzryqa/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET silxrrnv' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/silxrrnv/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/silxrrnv/([^/]+)$#',
+ 'pathStart' => '/silxrrnv/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH ytmubgxxqwvfddwar' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ytmubgxxqwvfddwar/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ytmubgxxqwvfddwar/([^/]+)$#',
+ 'pathStart' => '/ytmubgxxqwvfddwar/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET oz' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/oz/qsfveftu/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/oz/qsfveftu/([^/]+)$#',
+ 'pathStart' => '/oz/qsfveftu/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST dkcs' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/dkcs/hq/w/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/dkcs/hq/w/([^/]+)$#',
+ 'pathStart' => '/dkcs/hq/w/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET pxnnitv' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/pxnnitv/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/pxnnitv/([^/]+)$#',
+ 'pathStart' => '/pxnnitv/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT api' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/api/ioztodybpmmc/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/ioztodybpmmc/([^/]+)$#',
+ 'pathStart' => '/api/ioztodybpmmc/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/api/sppgatanzwps/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/sppgatanzwps/([^/]+)$#',
+ 'pathStart' => '/api/sppgatanzwps/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 2 => [
+ 'name' => '',
+ 'path' => '/api/qghidcmiruwqnoi/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/qghidcmiruwqnoi/([^/]+)$#',
+ 'pathStart' => '/api/qghidcmiruwqnoi/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 3 => [
+ 'name' => '',
+ 'path' => '/api/ctadbu/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/ctadbu/([^/]+)$#',
+ 'pathStart' => '/api/ctadbu/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 4 => [
+ 'name' => '',
+ 'path' => '/api/whxsggiuexvhljz/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/whxsggiuexvhljz/([^/]+)$#',
+ 'pathStart' => '/api/whxsggiuexvhljz/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 5 => [
+ 'name' => '',
+ 'path' => '/api/jchcormgding/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/jchcormgding/([^/]+)$#',
+ 'pathStart' => '/api/jchcormgding/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 6 => [
+ 'name' => '',
+ 'path' => '/api/xkbvrfgmkmxo/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/api/xkbvrfgmkmxo/([^/]+)$#',
+ 'pathStart' => '/api/xkbvrfgmkmxo/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST cszctcirmavisgfgg' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/cszctcirmavisgfgg/q/vv/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/cszctcirmavisgfgg/q/vv/([^/]+)$#',
+ 'pathStart' => '/cszctcirmavisgfgg/q/vv/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT xmolfzqelex' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/xmolfzqelex/vbqsotlk/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/xmolfzqelex/vbqsotlk/([^/]+)$#',
+ 'pathStart' => '/xmolfzqelex/vbqsotlk/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET sjey' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/sjey/d/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/sjey/d/([^/]+)$#',
+ 'pathStart' => '/sjey/d/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT jpw' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/jpw/o/lllw/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/jpw/o/lllw/([^/]+)$#',
+ 'pathStart' => '/jpw/o/lllw/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT tpbcssmmzif' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/tpbcssmmzif/hov/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/tpbcssmmzif/hov/([^/]+)$#',
+ 'pathStart' => '/tpbcssmmzif/hov/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH rkr' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/rkr/ygon/bn/txwwcmudlyb/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/rkr/ygon/bn/txwwcmudlyb/([^/]+)$#',
+ 'pathStart' => '/rkr/ygon/bn/txwwcmudlyb/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET umnqwjjaj' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/umnqwjjaj/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/umnqwjjaj/([^/]+)$#',
+ 'pathStart' => '/umnqwjjaj/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT m' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/m/htybivzcebzq/cgdc/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/m/htybivzcebzq/cgdc/([^/]+)$#',
+ 'pathStart' => '/m/htybivzcebzq/cgdc/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT nepqiy' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/nepqiy/h/wdfbpy/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/nepqiy/h/wdfbpy/([^/]+)$#',
+ 'pathStart' => '/nepqiy/h/wdfbpy/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET nuuzupbltth' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/nuuzupbltth/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/nuuzupbltth/([^/]+)$#',
+ 'pathStart' => '/nuuzupbltth/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH sdcmo' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/sdcmo/x/orzqvh/hcouufv/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/sdcmo/x/orzqvh/hcouufv/([^/]+)$#',
+ 'pathStart' => '/sdcmo/x/orzqvh/hcouufv/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH frg' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/frg/xht/sbhf/avvbxdf/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/frg/xht/sbhf/avvbxdf/([^/]+)$#',
+ 'pathStart' => '/frg/xht/sbhf/avvbxdf/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE bizxtymuld' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/bizxtymuld/zefptc/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/bizxtymuld/zefptc/([^/]+)$#',
+ 'pathStart' => '/bizxtymuld/zefptc/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH dyiwqvtv' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/dyiwqvtv/s/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/dyiwqvtv/s/([^/]+)$#',
+ 'pathStart' => '/dyiwqvtv/s/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT gpkviok' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/gpkviok/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/gpkviok/([^/]+)$#',
+ 'pathStart' => '/gpkviok/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE hfinhap' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/hfinhap/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/hfinhap/([^/]+)$#',
+ 'pathStart' => '/hfinhap/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET vk' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/vk/tsmuzmuq/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/vk/tsmuzmuq/([^/]+)$#',
+ 'pathStart' => '/vk/tsmuzmuq/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH ddnjner' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ddnjner/bkin/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ddnjner/bkin/([^/]+)$#',
+ 'pathStart' => '/ddnjner/bkin/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH otlu' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/otlu/oqzn/m/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/otlu/oqzn/m/([^/]+)$#',
+ 'pathStart' => '/otlu/oqzn/m/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET nrxf' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/nrxf/ksd/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/nrxf/ksd/([^/]+)$#',
+ 'pathStart' => '/nrxf/ksd/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST hdpcl' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/hdpcl/koifodupgs/s/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/hdpcl/koifodupgs/s/([^/]+)$#',
+ 'pathStart' => '/hdpcl/koifodupgs/s/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT mcptvfcc' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/mcptvfcc/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/mcptvfcc/([^/]+)$#',
+ 'pathStart' => '/mcptvfcc/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH zxro' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/zxro/pvh/ji/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/zxro/pvh/ji/([^/]+)$#',
+ 'pathStart' => '/zxro/pvh/ji/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE vt' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/vt/p/vjztyc/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/vt/p/vjztyc/([^/]+)$#',
+ 'pathStart' => '/vt/p/vjztyc/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH zugmoct' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/zugmoct/hepxbaihrmkxl/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/zugmoct/hepxbaihrmkxl/([^/]+)$#',
+ 'pathStart' => '/zugmoct/hepxbaihrmkxl/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST vilqgu' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/vilqgu/p/lcjxkgiqcbfb/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/vilqgu/p/lcjxkgiqcbfb/([^/]+)$#',
+ 'pathStart' => '/vilqgu/p/lcjxkgiqcbfb/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET sjskrtkub' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/sjskrtkub/bpxknpofwc/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/sjskrtkub/bpxknpofwc/([^/]+)$#',
+ 'pathStart' => '/sjskrtkub/bpxknpofwc/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET zrmlgsykex' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/zrmlgsykex/vbj/nv/tvghn/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/zrmlgsykex/vbj/nv/tvghn/([^/]+)$#',
+ 'pathStart' => '/zrmlgsykex/vbj/nv/tvghn/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT hklqorlgkw' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/hklqorlgkw/jnsb/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/hklqorlgkw/jnsb/([^/]+)$#',
+ 'pathStart' => '/hklqorlgkw/jnsb/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT hazb' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/hazb/bpzdqr/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/hazb/bpzdqr/([^/]+)$#',
+ 'pathStart' => '/hazb/bpzdqr/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE eunzqcaxswb' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/eunzqcaxswb/wswkz/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/eunzqcaxswb/wswkz/([^/]+)$#',
+ 'pathStart' => '/eunzqcaxswb/wswkz/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST ihwlkkn' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ihwlkkn/m/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ihwlkkn/m/([^/]+)$#',
+ 'pathStart' => '/ihwlkkn/m/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST qohgt' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/qohgt/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/qohgt/([^/]+)$#',
+ 'pathStart' => '/qohgt/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH vroz' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/vroz/rryip/bpxez/mn/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/vroz/rryip/bpxez/mn/([^/]+)$#',
+ 'pathStart' => '/vroz/rryip/bpxez/mn/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT lspsrgbdol' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/lspsrgbdol/eaxk/eab/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/lspsrgbdol/eaxk/eab/([^/]+)$#',
+ 'pathStart' => '/lspsrgbdol/eaxk/eab/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET aumke' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/aumke/smumjzo/oszjrj/pz/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/aumke/smumjzo/oszjrj/pz/([^/]+)$#',
+ 'pathStart' => '/aumke/smumjzo/oszjrj/pz/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET flekhtsmoprq' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/flekhtsmoprq/mupfk/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/flekhtsmoprq/mupfk/([^/]+)$#',
+ 'pathStart' => '/flekhtsmoprq/mupfk/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH wizzuye' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/wizzuye/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/wizzuye/([^/]+)$#',
+ 'pathStart' => '/wizzuye/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH umcvhgfhu' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/umcvhgfhu/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/umcvhgfhu/([^/]+)$#',
+ 'pathStart' => '/umcvhgfhu/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET uetljhrz' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/uetljhrz/yk/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/uetljhrz/yk/([^/]+)$#',
+ 'pathStart' => '/uetljhrz/yk/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST qdxsks' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/qdxsks/fbsebysgkyuji/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/qdxsks/fbsebysgkyuji/([^/]+)$#',
+ 'pathStart' => '/qdxsks/fbsebysgkyuji/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT ntpexw' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ntpexw/nqa/vq/q/n/tpcjqqd/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ntpexw/nqa/vq/q/n/tpcjqqd/([^/]+)$#',
+ 'pathStart' => '/ntpexw/nqa/vq/q/n/tpcjqqd/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET g' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/g/m/jvxhtustv/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/g/m/jvxhtustv/([^/]+)$#',
+ 'pathStart' => '/g/m/jvxhtustv/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ 1 => [
+ 'name' => '',
+ 'path' => '/g/vi/e/mo/jso/yz/jhzxk/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/g/vi/e/mo/jso/yz/jhzxk/([^/]+)$#',
+ 'pathStart' => '/g/vi/e/mo/jso/yz/jhzxk/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET cwhbl' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/cwhbl/kwbp/zo/ql/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/cwhbl/kwbp/zo/ql/([^/]+)$#',
+ 'pathStart' => '/cwhbl/kwbp/zo/ql/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET t' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/t/negubbnbk/onrdevheo/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/t/negubbnbk/onrdevheo/([^/]+)$#',
+ 'pathStart' => '/t/negubbnbk/onrdevheo/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET nwaxx' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/nwaxx/mncf/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/nwaxx/mncf/([^/]+)$#',
+ 'pathStart' => '/nwaxx/mncf/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT etmoimkp' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/etmoimkp/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/etmoimkp/([^/]+)$#',
+ 'pathStart' => '/etmoimkp/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT exulcojsm' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/exulcojsm/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/exulcojsm/([^/]+)$#',
+ 'pathStart' => '/exulcojsm/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT dornauvgtbs' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/dornauvgtbs/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/dornauvgtbs/([^/]+)$#',
+ 'pathStart' => '/dornauvgtbs/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT z' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/z/gqjbadlnp/towsjt/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/z/gqjbadlnp/towsjt/([^/]+)$#',
+ 'pathStart' => '/z/gqjbadlnp/towsjt/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET lzmsgf' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/lzmsgf/g/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/lzmsgf/g/([^/]+)$#',
+ 'pathStart' => '/lzmsgf/g/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST memn' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/memn/fic/ow/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/memn/fic/ow/([^/]+)$#',
+ 'pathStart' => '/memn/fic/ow/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE mj' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/mj/entbl/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/mj/entbl/([^/]+)$#',
+ 'pathStart' => '/mj/entbl/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET p' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/p/hlhjlshdh/jxvy/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/p/hlhjlshdh/jxvy/([^/]+)$#',
+ 'pathStart' => '/p/hlhjlshdh/jxvy/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE qleuqih' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/qleuqih/ido/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/qleuqih/ido/([^/]+)$#',
+ 'pathStart' => '/qleuqih/ido/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET sb' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/sb/kmbal/hteshhebeuqh/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/sb/kmbal/hteshhebeuqh/([^/]+)$#',
+ 'pathStart' => '/sb/kmbal/hteshhebeuqh/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE cocxaax' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/cocxaax/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/cocxaax/([^/]+)$#',
+ 'pathStart' => '/cocxaax/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT xi' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/xi/yiqscwev/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/xi/yiqscwev/([^/]+)$#',
+ 'pathStart' => '/xi/yiqscwev/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST ozrhu' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ozrhu/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ozrhu/([^/]+)$#',
+ 'pathStart' => '/ozrhu/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET mekzam' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/mekzam/apy/alogysm/hzdx/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/mekzam/apy/alogysm/hzdx/([^/]+)$#',
+ 'pathStart' => '/mekzam/apy/alogysm/hzdx/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH emaul' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/emaul/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/emaul/([^/]+)$#',
+ 'pathStart' => '/emaul/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST pakmoub' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/pakmoub/hpwe/inoiuwk/x/b/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/pakmoub/hpwe/inoiuwk/x/b/([^/]+)$#',
+ 'pathStart' => '/pakmoub/hpwe/inoiuwk/x/b/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET uk' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/uk/uiutjrh/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/uk/uiutjrh/([^/]+)$#',
+ 'pathStart' => '/uk/uiutjrh/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET vqqwjg' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/vqqwjg/rhy/ryckwv/yil/j/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/vqqwjg/rhy/ryckwv/yil/j/([^/]+)$#',
+ 'pathStart' => '/vqqwjg/rhy/ryckwv/yil/j/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET ajzeglvbyosubbp' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ajzeglvbyosubbp/e/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ajzeglvbyosubbp/e/([^/]+)$#',
+ 'pathStart' => '/ajzeglvbyosubbp/e/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET adsxmwgd' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/adsxmwgd/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/adsxmwgd/([^/]+)$#',
+ 'pathStart' => '/adsxmwgd/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT anu' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/anu/fyydmyqzqgbctnryr/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/anu/fyydmyqzqgbctnryr/([^/]+)$#',
+ 'pathStart' => '/anu/fyydmyqzqgbctnryr/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE nzydmurj' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/nzydmurj/aiwksdosrjs/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/nzydmurj/aiwksdosrjs/([^/]+)$#',
+ 'pathStart' => '/nzydmurj/aiwksdosrjs/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH xep' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/xep/cmjb/urz/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/xep/cmjb/urz/([^/]+)$#',
+ 'pathStart' => '/xep/cmjb/urz/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT uzc' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/uzc/msn/m/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/uzc/msn/m/([^/]+)$#',
+ 'pathStart' => '/uzc/msn/m/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PUT ipwwoo' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/ipwwoo/c/{name}',
+ 'method' => 'PUT',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/ipwwoo/c/([^/]+)$#',
+ 'pathStart' => '/ipwwoo/c/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET yjzhkmgcswlwwt' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/yjzhkmgcswlwwt/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/yjzhkmgcswlwwt/([^/]+)$#',
+ 'pathStart' => '/yjzhkmgcswlwwt/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH pdpv' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/pdpv/oscm/jrt/bl/g/jt/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/pdpv/oscm/jrt/bl/g/jt/([^/]+)$#',
+ 'pathStart' => '/pdpv/oscm/jrt/bl/g/jt/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET yqz' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/yqz/yqvezjwnqhq/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/yqz/yqvezjwnqhq/([^/]+)$#',
+ 'pathStart' => '/yqz/yqvezjwnqhq/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH znvfof' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/znvfof/h/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/znvfof/h/([^/]+)$#',
+ 'pathStart' => '/znvfof/h/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST t' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/t/dlbsawmoatbwzkz/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/t/dlbsawmoatbwzkz/([^/]+)$#',
+ 'pathStart' => '/t/dlbsawmoatbwzkz/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET cprueecxrz' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/cprueecxrz/gyufduzvhj/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/cprueecxrz/gyufduzvhj/([^/]+)$#',
+ 'pathStart' => '/cprueecxrz/gyufduzvhj/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH skjlrgn' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/skjlrgn/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/skjlrgn/([^/]+)$#',
+ 'pathStart' => '/skjlrgn/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'PATCH qprkhocgb' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/qprkhocgb/{name}',
+ 'method' => 'PATCH',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/qprkhocgb/([^/]+)$#',
+ 'pathStart' => '/qprkhocgb/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE pesbmx' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/pesbmx/hg/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/pesbmx/hg/([^/]+)$#',
+ 'pathStart' => '/pesbmx/hg/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET sdswsgacg' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/sdswsgacg/kufceek/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/sdswsgacg/kufceek/([^/]+)$#',
+ 'pathStart' => '/sdswsgacg/kufceek/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET kqtxdoxik' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/kqtxdoxik/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/kqtxdoxik/([^/]+)$#',
+ 'pathStart' => '/kqtxdoxik/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET zkwumlfppjn' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/zkwumlfppjn/loh/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/zkwumlfppjn/loh/([^/]+)$#',
+ 'pathStart' => '/zkwumlfppjn/loh/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE lpkidgqq' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/lpkidgqq/nilf/hysddpzw/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/lpkidgqq/nilf/hysddpzw/([^/]+)$#',
+ 'pathStart' => '/lpkidgqq/nilf/hysddpzw/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE xhrefsc' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/xhrefsc/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/xhrefsc/([^/]+)$#',
+ 'pathStart' => '/xhrefsc/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST hz' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/hz/ah/mftb/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/hz/ah/mftb/([^/]+)$#',
+ 'pathStart' => '/hz/ah/mftb/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE xohxbjghx' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/xohxbjghx/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/xohxbjghx/([^/]+)$#',
+ 'pathStart' => '/xohxbjghx/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET chtz' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/chtz/hddhmj/amdlazy/bq/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/chtz/hddhmj/amdlazy/bq/([^/]+)$#',
+ 'pathStart' => '/chtz/hddhmj/amdlazy/bq/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET xgdbgah' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/xgdbgah/y/t/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/xgdbgah/y/t/([^/]+)$#',
+ 'pathStart' => '/xgdbgah/y/t/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE dg' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/dg/ewn/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/dg/ewn/([^/]+)$#',
+ 'pathStart' => '/dg/ewn/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST wk' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/wk/msqo/xzdaw/xa/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/wk/msqo/xzdaw/xa/([^/]+)$#',
+ 'pathStart' => '/wk/msqo/xzdaw/xa/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'POST wgegghqbzohkee' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/wgegghqbzohkee/{name}',
+ 'method' => 'POST',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/wgegghqbzohkee/([^/]+)$#',
+ 'pathStart' => '/wgegghqbzohkee/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET fjuosgmzwokao' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/fjuosgmzwokao/d/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/fjuosgmzwokao/d/([^/]+)$#',
+ 'pathStart' => '/fjuosgmzwokao/d/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'GET gthgwsnpwd' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/gthgwsnpwd/pmt/is/z/{name}',
+ 'method' => 'GET',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/gthgwsnpwd/pmt/is/z/([^/]+)$#',
+ 'pathStart' => '/gthgwsnpwd/pmt/is/z/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+ 'DELETE sifyfl' => [
+ 0 => [
+ 'name' => '',
+ 'path' => '/sifyfl/gowrdioqbafnyl/{name}',
+ 'method' => 'DELETE',
+ 'handler' => 'handler_func',
+ 'bindVars' => [
+ ],
+ 'params' => [
+ ],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/sifyfl/gowrdioqbafnyl/([^/]+)$#',
+ 'pathStart' => '/sifyfl/gowrdioqbafnyl/',
+ 'chains' => [
+ ],
+ 'options' => [
+ ],
+ ],
+ ],
+],
+// vague routes
+'vagueRoutes' => [
+],
+];
diff --git a/example/cached/routes-cache.php b/example/cached/routes-cache.php
new file mode 100644
index 0000000..f46b24f
--- /dev/null
+++ b/example/cached/routes-cache.php
@@ -0,0 +1,645 @@
+ [
+ 'GET /routes' => [
+ 'path' => '/routes',
+ 'method' => 'GET',
+ 'handler' => 'dump_routes',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 'GET /*' => [
+ 'path' => '/*',
+ 'method' => 'GET',
+ 'handler' => 'main_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 'POST /*' => [
+ 'path' => '/*',
+ 'method' => 'POST',
+ 'handler' => 'main_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 'PUT /*' => [
+ 'path' => '/*',
+ 'method' => 'PUT',
+ 'handler' => 'main_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 'PATCH /*' => [
+ 'path' => '/*',
+ 'method' => 'PATCH',
+ 'handler' => 'main_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 'DELETE /*' => [
+ 'path' => '/*',
+ 'method' => 'DELETE',
+ 'handler' => 'main_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 'OPTIONS /*' => [
+ 'path' => '/*',
+ 'method' => 'OPTIONS',
+ 'handler' => 'main_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 'HEAD /*' => [
+ 'path' => '/*',
+ 'method' => 'HEAD',
+ 'handler' => 'main_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 'CONNECT /*' => [
+ 'path' => '/*',
+ 'method' => 'CONNECT',
+ 'handler' => 'main_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 'GET /' => [
+ 'path' => '/',
+ 'method' => 'GET',
+ 'handler' => 'handler0',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 'GET /home' => [
+ 'path' => '/home',
+ 'method' => 'GET',
+ 'handler' => 'Inhere\\Route\\Example\\Controllers\\HomeController@index',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 'POST /post' => [
+ 'path' => '/post',
+ 'method' => 'POST',
+ 'handler' => 'post_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 'PUT /put' => [
+ 'path' => '/put',
+ 'method' => 'PUT',
+ 'handler' => 'main_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 'DELETE /del' => [
+ 'path' => '/del',
+ 'method' => 'DELETE',
+ 'handler' => 'main_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 'POST /pd' => [
+ 'path' => '/pd',
+ 'method' => 'POST',
+ 'handler' => 'multi_method_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 'DELETE /pd' => [
+ 'path' => '/pd',
+ 'method' => 'DELETE',
+ 'handler' => 'multi_method_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 'GET /user/login' => [
+ 'path' => '/user/login',
+ 'method' => 'GET',
+ 'handler' => 'default_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 'POST /user/login' => [
+ 'path' => '/user/login',
+ 'method' => 'POST',
+ 'handler' => 'default_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [],
+ 'pathRegex' => '',
+ 'pathStart' => '',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ ],
+// regular routes
+ 'regularRoutes' => [
+ 'GET 50be3774f6' => [
+ 0 => [
+ 'path' => '/50be3774f6/{arg1}/{arg2}/{arg3}/{arg4}/{arg5}/{arg6}/{arg7}/{arg8}/{arg9}/850726135a',
+ 'method' => 'GET',
+ 'handler' => 'handler0',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'arg1',
+ 1 => 'arg2',
+ 2 => 'arg3',
+ 3 => 'arg4',
+ 4 => 'arg5',
+ 5 => 'arg6',
+ 6 => 'arg7',
+ 7 => 'arg8',
+ 8 => 'arg9',
+ ],
+ 'pathRegex' => '#^/50be3774f6/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/850726135a$#',
+ 'pathStart' => '/50be3774f6/',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ ],
+ 'GET user' => [
+ 0 => [
+ 'path' => '/user/{id}/followers',
+ 'method' => 'GET',
+ 'handler' => 'main_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'id',
+ ],
+ 'pathRegex' => '#^/user/([^/]+)/followers$#',
+ 'pathStart' => '/user/',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 1 => [
+ 'path' => '/user/detail/{id}',
+ 'method' => 'GET',
+ 'handler' => 'main_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'id',
+ ],
+ 'pathRegex' => '#^/user/detail/([^/]+)$#',
+ 'pathStart' => '/user/detail/',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 2 => [
+ 'path' => '/user/{id}',
+ 'method' => 'GET',
+ 'handler' => 'main_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'id',
+ ],
+ 'pathRegex' => '#^/user/([^/]+)$#',
+ 'pathStart' => '/user/',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 3 => [
+ 'path' => '/user/{some}',
+ 'method' => 'GET',
+ 'handler' => 'default_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'some',
+ ],
+ 'pathRegex' => '#^/user/([^/]+)$#',
+ 'pathStart' => '/user/',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ ],
+ 'PUT user' => [
+ 0 => [
+ 'path' => '/user/detail/{id}',
+ 'method' => 'PUT',
+ 'handler' => 'main_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'id',
+ ],
+ 'pathRegex' => '#^/user/detail/([^/]+)$#',
+ 'pathStart' => '/user/detail/',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 1 => [
+ 'path' => '/user/{id}',
+ 'method' => 'PUT',
+ 'handler' => 'main_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'id',
+ ],
+ 'pathRegex' => '#^/user/([^/]+)$#',
+ 'pathStart' => '/user/',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ ],
+ 'POST user' => [
+ 0 => [
+ 'path' => '/user/{id}',
+ 'method' => 'POST',
+ 'handler' => 'main_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'id',
+ ],
+ 'pathRegex' => '#^/user/([^/]+)$#',
+ 'pathStart' => '/user/',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ ],
+ 'DELETE user' => [
+ 0 => [
+ 'path' => '/user/{id}',
+ 'method' => 'DELETE',
+ 'handler' => 'main_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'id',
+ ],
+ 'pathRegex' => '#^/user/([^/]+)$#',
+ 'pathStart' => '/user/',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ ],
+ 'DELETE del' => [
+ 0 => [
+ 'path' => '/del/{uid}',
+ 'method' => 'DELETE',
+ 'handler' => 'main_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'uid',
+ ],
+ 'pathRegex' => '#^/del/([^/]+)$#',
+ 'pathStart' => '/del/',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ ],
+ 'GET admin' => [
+ 0 => [
+ 'path' => '/admin/manage/getInfo[/id/{int}]',
+ 'method' => 'GET',
+ 'handler' => 'default_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'int',
+ ],
+ 'pathRegex' => '#^/admin/manage/getInfo(?:/id/(\\d+))?$#',
+ 'pathStart' => '/admin/manage/getInfo',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ ],
+ 'POST admin' => [
+ 0 => [
+ 'path' => '/admin/manage/getInfo[/id/{int}]',
+ 'method' => 'POST',
+ 'handler' => 'default_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'int',
+ ],
+ 'pathRegex' => '#^/admin/manage/getInfo(?:/id/(\\d+))?$#',
+ 'pathStart' => '/admin/manage/getInfo',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ ],
+ 'GET home' => [
+ 0 => [
+ 'path' => '/home/{act}',
+ 'method' => 'GET',
+ 'handler' => 'Inhere\\Route\\Example\\Controllers\\HomeController',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'act',
+ ],
+ 'pathRegex' => '#^/home/([a-zA-Z][\\w-]+)$#',
+ 'pathStart' => '/home/',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ ],
+ 'POST home' => [
+ 0 => [
+ 'path' => '/home/{act}',
+ 'method' => 'POST',
+ 'handler' => 'Inhere\\Route\\Example\\Controllers\\HomeController',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'act',
+ ],
+ 'pathRegex' => '#^/home/([a-zA-Z][\\w-]+)$#',
+ 'pathStart' => '/home/',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ ],
+ 'PUT home' => [
+ 0 => [
+ 'path' => '/home/{act}',
+ 'method' => 'PUT',
+ 'handler' => 'Inhere\\Route\\Example\\Controllers\\HomeController',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'act',
+ ],
+ 'pathRegex' => '#^/home/([a-zA-Z][\\w-]+)$#',
+ 'pathStart' => '/home/',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ ],
+ 'PATCH home' => [
+ 0 => [
+ 'path' => '/home/{act}',
+ 'method' => 'PATCH',
+ 'handler' => 'Inhere\\Route\\Example\\Controllers\\HomeController',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'act',
+ ],
+ 'pathRegex' => '#^/home/([a-zA-Z][\\w-]+)$#',
+ 'pathStart' => '/home/',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ ],
+ 'DELETE home' => [
+ 0 => [
+ 'path' => '/home/{act}',
+ 'method' => 'DELETE',
+ 'handler' => 'Inhere\\Route\\Example\\Controllers\\HomeController',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'act',
+ ],
+ 'pathRegex' => '#^/home/([a-zA-Z][\\w-]+)$#',
+ 'pathStart' => '/home/',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ ],
+ 'OPTIONS home' => [
+ 0 => [
+ 'path' => '/home/{act}',
+ 'method' => 'OPTIONS',
+ 'handler' => 'Inhere\\Route\\Example\\Controllers\\HomeController',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'act',
+ ],
+ 'pathRegex' => '#^/home/([a-zA-Z][\\w-]+)$#',
+ 'pathStart' => '/home/',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ ],
+ 'HEAD home' => [
+ 0 => [
+ 'path' => '/home/{act}',
+ 'method' => 'HEAD',
+ 'handler' => 'Inhere\\Route\\Example\\Controllers\\HomeController',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'act',
+ ],
+ 'pathRegex' => '#^/home/([a-zA-Z][\\w-]+)$#',
+ 'pathStart' => '/home/',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ ],
+ 'CONNECT home' => [
+ 0 => [
+ 'path' => '/home/{act}',
+ 'method' => 'CONNECT',
+ 'handler' => 'Inhere\\Route\\Example\\Controllers\\HomeController',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'act',
+ ],
+ 'pathRegex' => '#^/home/([a-zA-Z][\\w-]+)$#',
+ 'pathStart' => '/home/',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ ],
+ ],
+// vague routes
+ 'vagueRoutes' => [
+ 'GET' => [
+ 0 => [
+ 'path' => '/{name}',
+ 'method' => 'GET',
+ 'handler' => 'default_handler',
+ 'bindVars' => [
+ 'name' => 'blog|saying',
+ ],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'name',
+ ],
+ 'pathRegex' => '#^/(blog|saying)$#',
+ 'pathStart' => '',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 1 => [
+ 'path' => '/about[.html]',
+ 'method' => 'GET',
+ 'handler' => 'Inhere\\Route\\Example\\Controllers\\HomeController@about',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [],
+ 'pathRegex' => '#^/about(?:\\.html)?$#',
+ 'pathStart' => '/about',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 2 => [
+ 'path' => '/test[/optional]',
+ 'method' => 'GET',
+ 'handler' => 'default_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [],
+ 'pathRegex' => '#^/test(?:/optional)?$#',
+ 'pathStart' => '/test',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 3 => [
+ 'path' => '/blog-{post}',
+ 'method' => 'GET',
+ 'handler' => 'default_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'post',
+ ],
+ 'pathRegex' => '#^/blog-([^/]+)$#',
+ 'pathStart' => '/blog-',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 4 => [
+ 'path' => '/blog[/index]',
+ 'method' => 'GET',
+ 'handler' => 'default_handler',
+ 'bindVars' => [],
+ 'params' => [],
+ 'pathVars' => [],
+ 'pathRegex' => '#^/blog(?:/index)?$#',
+ 'pathStart' => '/blog',
+ 'chains' => [],
+ 'options' => [],
+ ],
+ 5 => [
+ 'path' => '/my[/{name}[/{age}]]',
+ 'method' => 'GET',
+ 'handler' => 'my_handler',
+ 'bindVars' => [
+ 'age' => '\\d+',
+ ],
+ 'params' => [],
+ 'pathVars' => [
+ 0 => 'name',
+ 1 => 'age',
+ ],
+ 'pathRegex' => '#^/my(?:/([^/]+)(?:/(\\d+))?)?$#',
+ 'pathStart' => '/my',
+ 'chains' => [],
+ 'options' => [
+ 'defaults' => [
+ 'name' => 'God',
+ 'age' => 25,
+ ],
+ ],
+ ],
+ ],
+ ],
+];
diff --git a/example/object.php b/example/object.php
new file mode 100644
index 0000000..6b7834c
--- /dev/null
+++ b/example/object.php
@@ -0,0 +1,83 @@
+config([
+ // 'ignoreLastSlash' => true,
+ // 'tmpCacheNumber' => 100,
+
+ // enable autoRoute
+ // you can access '/demo' '/admin/user/info', Don't need to configure any route
+ 'autoRoute' => 1,
+ 'controllerNamespace' => 'Inhere\RouteTest\Controllers',
+ 'controllerSuffix' => 'Controller',
+]);
+
+$router->get('/routes', function () {
+ global $router;
+ echo "{$router->__toString()}";
+});
+
+$hasRouter = true;
+require __DIR__ . '/some-routes.php';
+
+// $router->rest('/rest', RestController::class);
+
+// $router->any('*', function () {
+// echo "This is fallback handler\n";
+// });
+
+// var_dump($router);die;
+
+$dispatcher = new Dispatcher([
+ 'dynamicAction' => true,
+ // on notFound, output a message.
+ Dispatcher::ON_NOT_FOUND => function ($path) {
+ echo "the page $path not found!";
+ }
+]);
+
+// OR register event by `Dispatcher::on()`
+// $dispatcher->on(Dispatcher::ON_NOT_FOUND, function ($path) {
+// echo "the page $path not found!";
+// });
+
+/*
+method 1
+
+$dispatcher->setRouter($router);
+$dispatcher->dispatch();
+ */
+
+/*
+method 2
+ */
+$router->dispatch($dispatcher);
+
+/*
+method 3
+
+$router->dispatch([
+ 'dynamicAction' => true,
+ Dispatcher::ON_NOT_FOUND => function ($path) {
+ echo "the page $path not found!";
+ }
+]);
+ */
diff --git a/example/pre-match.php b/example/pre-match.php
new file mode 100644
index 0000000..2a5c41b
--- /dev/null
+++ b/example/pre-match.php
@@ -0,0 +1,84 @@
+setRequest();
+
+// set config
+$router->config([
+ // 'ignoreLastSlash' => true,
+ // 'tmpCacheNumber' => 100,
+
+ // enable autoRoute
+ // you can access '/demo' '/admin/user/info', Don't need to configure any route
+ 'autoRoute' => 1,
+ 'controllerNamespace' => 'Inhere\RouteTest\Controllers',
+ 'controllerSuffix' => 'Controller',
+]);
+
+$router->get('/routes', function () {
+ global $router;
+ echo "{$router->toString()}";
+});
+
+$hasRouter = true;
+require __DIR__ . '/some-routes.php';
+
+// $router->rest('/rest', RestController::class);
+
+$router->any('*', function () {
+ echo "This is fallback handler\n";
+});
+
+// var_dump($router);die;
+
+$dispatcher = new Dispatcher([
+ 'dynamicAction' => true,
+ // on notFound, output a message.
+ Dispatcher::ON_NOT_FOUND => function ($path) {
+ echo "the page $path not found!";
+ }
+]);
+
+// OR register event by `Dispatcher::on()`
+// $dispatcher->on(Dispatcher::ON_NOT_FOUND, function ($path) {
+// echo "the page $path not found!";
+// });
+
+/*
+method 1
+
+$dispatcher->setRouter($router);
+$dispatcher->dispatch();
+ */
+
+/*
+method 2
+ */
+$router->dispatch($dispatcher);
+
+/*
+method 3
+
+$router->dispatch([
+ 'dynamicAction' => true,
+ Dispatcher::ON_NOT_FOUND => function ($path) {
+ echo "the page $path not found!";
+ }
+]);
+ */
diff --git a/examples/some-routes.php b/example/some-routes.php
similarity index 65%
rename from examples/some-routes.php
rename to example/some-routes.php
index 871a466..947539d 100644
--- a/examples/some-routes.php
+++ b/example/some-routes.php
@@ -1,4 +1,4 @@
- [
- 'name' => 'blog|saying'
- ]
+ 'name' => 'blog|saying'
]
],
// optional param
+ [
+ 'GET',
+ '/about[.html]',
+ HomeController::class . '@about'
+ ],
[
'GET',
'/test[/optional]',
@@ -112,7 +157,7 @@ function my_handler(array $args) {
],
[
'GET',
- '/blog[index]',
+ '/blog[/index]',
'default_handler'
],
/*
@@ -126,9 +171,9 @@ function my_handler(array $args) {
'/my[/{name}[/{age}]]',
'my_handler',
[
- 'params' => [
- 'age' => '\d+'
- ],
+ 'age' => '\d+'
+ ],
+ [
'defaults' => [
'name' => 'God',
'age' => 25,
@@ -144,16 +189,11 @@ function my_handler(array $args) {
'GET',
'/hello[/{name}]',
function ($args) {
- $n = isset($args['name']) ? $args['name'] : 'NO';
+ $n = $args['name'] ?? 'NO';
echo "hello, {$n}"; // 'john'
},
[
- 'params' => [
- 'name' => '\w+'
- ],
- 'defaults' => [
- 'name' => 'default val'
- ]
+ 'name' => '\w+'
]
],
// can match '/home/test', but not match '/home'
@@ -191,4 +231,23 @@ function () {
];
-return $routes;
+// has router instance
+if (isset($hasRouter) && $hasRouter) {
+ foreach ($routes as $route) {
+ // group
+ if (is_array($route[1])) {
+ $rs = $route[1];
+ $router->group($route[0], function (RouterInterface $router) use ($rs) {
+ foreach ($rs as $r) {
+ $router->map($r[0], $r[1], $r[2], $r[3] ?? [], $r[4] ?? []);
+ }
+ });
+
+ continue;
+ }
+
+ $router->map($route[0], $route[1], $route[2], $route[3] ?? [], $route[4] ?? []);
+ }
+} else {
+ return $routes;
+}
diff --git a/examples/static.php b/example/static.php
similarity index 57%
rename from examples/static.php
rename to example/static.php
index 27964cf..2ee75a5 100644
--- a/examples/static.php
+++ b/example/static.php
@@ -1,4 +1,4 @@
- true,
-
-// 'matchAll' => '/', // a route path
-// 'matchAll' => function () {
-// echo 'System Maintaining ... ...';
-// },
-
+SRouter::config([
+ 'ignoreLastSlash' => true,
// enable autoRoute
// you can access '/demo' '/admin/user/info', Don't need to configure any route
- 'autoRoute' => 1,
- 'controllerNamespace' => 'Inhere\Route\Examples\Controllers',
+ 'autoRoute' => 1,
+ 'controllerNamespace' => 'Inhere\RouteTest\Controllers',
'controllerSuffix' => 'Controller',
]);
@@ -39,18 +33,23 @@
// group
if (is_array($route[1])) {
$rs = $route[1];
- $router->group($route[0], function () use($rs){
+ SRouter::group($route[0], function () use ($rs) {
foreach ($rs as $r) {
- SRouter::map($r[0], $r[1], $r[2], isset($r[3]) ? $r[3] : []);
+ SRouter::map($r[0], $r[1], $r[2], $r[3] ?? [], $r[4] ?? []);
}
});
continue;
}
- SRouter::map($route[0], $route[1], $route[2], isset($route[3]) ? $route[3] : []);
+ SRouter::map($route[0], $route[1], $route[2], $route[3] ?? [], $route[4] ?? []);
}
+SRouter::get('routes', function () {
+ $string = SRouter::getRouter()->__toString();
+ echo "{$string}";
+});
+
$dispatcher = new Dispatcher([
'dynamicAction' => true,
]);
diff --git a/example/swoole-server.php b/example/swoole-server.php
new file mode 100644
index 0000000..133c4cf
--- /dev/null
+++ b/example/swoole-server.php
@@ -0,0 +1,73 @@
+config([
+ 'ignoreLastSlash' => true,
+
+ 'tmpCacheNumber' => 100,
+
+ // enable autoRoute
+ // you can access '/demo' '/admin/user/info', Don't need to configure any route
+ 'autoRoute' => 1,
+ 'controllerNamespace' => 'Inhere\RouteTest\Controllers',
+ 'controllerSuffix' => 'Controller',
+]);
+
+$router->get('/routes', function () use ($router) {
+ return $router->toString();
+});
+
+/** @var array $routes */
+$hasRouter = true;
+$routes = require __DIR__ . '/some-routes.php';
+
+$dispatcher = new Dispatcher([
+ 'dynamicAction' => true,
+]);
+$dispatcher->setRouter($router);
+
+// on notFound, output a message.
+$dispatcher->on(Dispatcher::ON_NOT_FOUND, function ($path) {
+ echo "the page $path not found!";
+});
+
+$server = new \Swoole\Http\Server('127.0.0.1', '5675', SWOOLE_BASE);
+$server->set([
+ //
+]);
+
+$server->on('request', function ($request, $response) use ($dispatcher) {
+ /** @var \Swoole\Http\Response $response */
+ $uri = $request->server['request_uri'];
+ $method = $request->server['request_method'];
+
+ // fwrite(STDOUT, "request $method $uri\n");
+
+ ob_start();
+ $ret = $dispatcher->dispatchUri($uri, $method);
+ $content = ob_get_clean();
+
+ if (!$ret) {
+ $ret = $content;
+ }
+
+ $response->end($ret);
+});
+
+echo "http server listen on http://127.0.0.1:5675\n";
+$server->start();
diff --git a/example/tests/compare_exec.php b/example/tests/compare_exec.php
new file mode 100644
index 0000000..0e69694
--- /dev/null
+++ b/example/tests/compare_exec.php
@@ -0,0 +1,95 @@
+ 0 ? 'Sample 2' : 'Sample 1';
+
+ printf(
+ "\n\t Speed Test Results(Faster is: %s)\n%s\n",
+ $faster,
+ str_repeat('---', 29)
+ );
+
+ $template = "%-12s %-22s %-25s %-20s\n";
+ $results = [
+ ['Test Name', 'Number of executions', 'Total time-consuming(us)', 'Average time-consuming(us)'],
+ ['Sample 1', $times, $total1, $average1],
+ ['Sample 2', $times, $total2, $average2],
+ ];
+
+ foreach ($results as $items) {
+ printf($template, ...$items);
+ }
+
+ echo "\n";
+}
diff --git a/example/tests/find_start_first.php b/example/tests/find_start_first.php
new file mode 100644
index 0000000..01befa1
--- /dev/null
+++ b/example/tests/find_start_first.php
@@ -0,0 +1,12 @@
+get('/', function() {
+$router->get('/', function () {
echo 'hello, welcome';
});
$router->get('/test', 'test_handler');
-$router->get('/routes', function() use($router) {
+$router->get('/routes', function () use ($router) {
var_dump(
$router->getStaticRoutes()
);
@@ -28,6 +28,7 @@
]
]);
+// PHP Fatal error: Uncaught Exception: Serialization of 'Closure' is not allowed
$encoded = serialize($router->getStaticRoutes());
var_dump($encoded);
diff --git a/example/tests/test.php b/example/tests/test.php
new file mode 100644
index 0000000..18c6986
--- /dev/null
+++ b/example/tests/test.php
@@ -0,0 +1,15 @@
+ array (
- '/routes' =>
- array (
- 0 =>
- array (
- 'methods' => 'GET,',
- 'handler' => 'dump_routes',
- 'option' =>
- array (
- 'params' => NULL,
- 'domains' => NULL,
- ),
- ),
- ),
- '/' =>
- array (
- 0 =>
- array (
- 'methods' => 'GET,',
- 'handler' => 'handler0',
- 'option' =>
- array (
- 'params' => NULL,
- 'domains' => NULL,
- ),
- ),
- ),
- '/home' =>
- array (
- 0 =>
- array (
- 'methods' => 'GET,',
- 'handler' => 'Inhere\\Route\\Examples\\Controllers\\HomeController@index',
- 'option' =>
- array (
- 'params' => NULL,
- 'domains' => NULL,
- ),
- ),
- ),
- '/post' =>
- array (
- 0 =>
- array (
- 'methods' => 'POST,',
- 'handler' => 'post_handler',
- 'option' =>
- array (
- 'params' => NULL,
- 'domains' => NULL,
- ),
- ),
- ),
- '/pd' =>
- array (
- 0 =>
- array (
- 'methods' => 'POST,DELETE,',
- 'handler' => 'multi_method_handler',
- 'option' =>
- array (
- 'params' => NULL,
- 'domains' => NULL,
- ),
- ),
- ),
- '/user/login' =>
- array (
- 0 =>
- array (
- 'methods' => 'GET,POST,',
- 'handler' => 'default_handler',
- 'option' =>
- array (
- 'params' => NULL,
- 'domains' => NULL,
- ),
- ),
- ),
-),
- 'regularRoutes' => array (
- '50be3774f6' =>
- array (
- 0 =>
- array (
- 'regex' => '#^/50be3774f6/(?P$path$method: $pathMethod not allowed. Must be one of: $allow
$pathMethod not allowed for $method $path
The request method must be one of $allow
+ +HTML; + }; + } + + /** + * Defines callback on happen event + * + * @param string $event + * @param callable $handler + */ + public function on(string $event, $handler): void + { + if (self::isSupportedEvent($event)) { + $this->options[$event] = $handler; + } + } + + /** + * Trigger event + * + * @param string $event + * @param array $args + * + * @return mixed + * @throws InvalidArgumentException + */ + protected function fire(string $event, array $args = []): mixed + { + if (!$cb = $this->getOption($event)) { + return null; + } + + return RouteHelper::call($cb, $args); + } + + /** + * @param string $name + * @param mixed $value + */ + public function setOption(string $name, mixed $value): void + { + $this->options[$name] = $value; + } + + /** + * @param string $name + * @param mixed|null $default + * + * @return mixed + */ + public function getOption(string $name, mixed $default = null): mixed + { + return $this->options[$name] ?? $default; + } + + /** + * @return array + */ + public static function getSupportedEvents(): array + { + return [ + self::ON_FOUND, + self::ON_NOT_FOUND, + self::ON_METHOD_NOT_ALLOWED, + self::ON_EXEC_START, + self::ON_EXEC_END, + self::ON_EXEC_ERROR + ]; + } + + /** + * @param string $name + * + * @return bool + */ + public static function isSupportedEvent(string $name): bool + { + return in_array($name, static::getSupportedEvents(), true); + } + + /** + * @return bool + */ + public function hasRouter(): bool + { + return $this->router !== null; + } + + /** + * @return RouterInterface + */ + public function getRouter(): RouterInterface + { + return $this->router; + } + + /** + * @param RouterInterface $router + */ + public function setRouter(RouterInterface $router): void + { + $this->router = $router; + } + + /** + * @return array + */ + public function getOptions(): array + { + return $this->options; + } + + /** + * @param array $options + */ + public function setOptions(array $options): void + { + $this->options = array_merge($this->options, $options); + } +} diff --git a/src/DispatcherInterface.php b/src/DispatcherInterface.php deleted file mode 100644 index 787be41..0000000 --- a/src/DispatcherInterface.php +++ /dev/null @@ -1,44 +0,0 @@ - '/' + if (false !== strpos($path, '//')) { + $path = preg_replace('#\/\/+#', '/', $path); + } + + // Must be start withs '/' + if (strpos($path, '/') !== 0) { + $path = '/' . $path; + } + + // Decode + $path = rawurldecode($path); + + return $ignoreLastSlash ? rtrim($path, '/') : $path; + } + + /** + * convert 'first-second' to 'firstSecond' + * + * @param string $str + * @param bool $ucFirst + * + * @return string + */ + public static function str2Camel(string $str, bool $ucFirst = false): string + { + $str = trim($str, '-'); + + // convert 'first-second' to 'firstSecond' + if (strpos($str, '-')) { + $str = preg_replace_callback('/-+([a-z])/', static function ($c) { + return strtoupper($c[1]); + }, trim($str, '- ')); + } + + return $ucFirst ? ucfirst($str) : $str; + } + + /** + * handle auto route match, when config `'autoRoute' => true` + * + * @param string $path The route path + * @param string $cnp controller namespace. eg: 'app\\controllers' + * @param string $sfx controller suffix. eg: 'Controller' + * @param bool $ucFirst + * + * @return bool|string + */ + public static function parseAutoRoute(string $path, string $cnp, string $sfx, bool $ucFirst = false): bool|string + { + $tmp = trim($path, '/- '); + + // one node. eg: 'home' + if (!strpos($tmp, '/')) { + $tmp = self::str2Camel($tmp); + $class = "$cnp\\" . ucfirst($tmp) . $sfx; + + return class_exists($class) ? $class : false; + } + + $nodes = array_filter(explode('/', $tmp)); + + if ($ucFirst) { + foreach ($nodes as $i => $node) { + $nodes[$i] = self::str2Camel($nodes[$i], true); + } + } else { + $nodes = array_map(self::class . '::str2Camel', $nodes); + } + + $count = count($nodes); + + // two nodes. eg: 'home/test' 'admin/user' + if ($count === 2) { + [$n1, $n2] = $nodes; + + // last node is an controller class name. eg: 'admin/user' + $class = "$cnp\\$n1\\" . ucfirst($n2) . $sfx; + + if (class_exists($class)) { + return $class; + } + + // first node is an controller class name, second node is a action name, + $class = "$cnp\\" . ucfirst($n1) . $sfx; + + return class_exists($class) ? $class . '@' . lcfirst($n2) : false; + } + + // max allow 5 nodes + if ($count > 5) { + return false; + } + + // last node is an controller class name + $n2 = array_pop($nodes); + $class = sprintf('%s\\%s\\%s', $cnp, implode('\\', $nodes), ucfirst($n2) . $sfx); + + if (class_exists($class)) { + return $class; + } + + // last second is an controller class name, last node is a action name, + $n1 = array_pop($nodes); + $class = sprintf('%s\\%s\\%s', $cnp, implode('\\', $nodes), ucfirst($n1) . $sfx); + + return class_exists($class) ? $class . '@' . lcfirst($n2) : false; + } + + /** + * @param callable|mixed $cb + * string - func name, class name + * array - [class, method] + * object - Closure, Object + * + * @param array $args + * + * @return mixed + * @throws InvalidArgumentException + */ + public static function call($cb, array $args = []) + { + if (!$cb) { + return true; + } + + if (is_array($cb)) { + [$obj, $mhd] = $cb; + + return is_object($obj) ? $obj->$mhd(...$args) : $obj::$mhd(...$args); + } + + if (is_string($cb)) { + if (function_exists($cb)) { + return $cb(...$args); + } + + // a class name + if (class_exists($cb)) { + $cb = new $cb; + } + } + + // a \Closure or Object implement '__invoke' + if (is_object($cb) && method_exists($cb, '__invoke')) { + return $cb(...$args); + } + + throw new InvalidArgumentException('the callback handler is not callable!'); + } +} diff --git a/src/Helper/functions.php b/src/Helper/functions.php new file mode 100644 index 0000000..d9d3970 --- /dev/null +++ b/src/Helper/functions.php @@ -0,0 +1,73 @@ +completed(); + + return $router; +} + +/** + * @param Closure $closure + * @param string $path + * @param string $method + * @param array $config + * + * @return PreMatchRouter + */ +function createPreMatchRouter( + Closure $closure, + string $path = '', + string $method = '', + array $config = [] +): PreMatchRouter { + $router = new PreMatchRouter($config, $path, $method); + + $closure($router); + + return $router; +} + +/** + * @param Closure $closure + * @param array $config + * + * @return ServerRouter + */ +function createServerRouter(Closure $closure, array $config = []): ServerRouter +{ + $closure($router = new ServerRouter($config)); + + return $router; +} diff --git a/src/ORouter.php b/src/ORouter.php deleted file mode 100644 index b120cfb..0000000 --- a/src/ORouter.php +++ /dev/null @@ -1,608 +0,0 @@ - [ 'localhost' ], // allowed domains - // 'schemas' => [ 'http' ], // allowed schemas - // 'time' => ['12'], - ]; - - /** @var string */ - private $currentGroupPrefix; - - /** @var array */ - private $currentGroupOption; - - /** @var bool */ - private $initialized = false; - - /** - * static Routes - no dynamic argument match - * 整个路由 path 都是静态字符串 e.g. '/user/login' - * @var array[] - * [ - * '/user/login' => [ - * // METHODS => [...] // 这里 key 和 value里的 'methods' 是一样的。仅是为了防止重复添加 - * 'GET,POST' => [ - * 'handler' => 'handler', - * 'methods' => 'GET,POST', - * 'option' => [...], - * ], - * 'PUT' => [ - * 'handler' => 'handler', - * 'methods' => 'PUT', - * 'option' => [...], - * ], - * ... - * ] - * ] - */ - private $staticRoutes = []; - - /** - * regular Routes - have dynamic arguments, but the first node is normal string. - * 第一节是个静态字符串,称之为有规律的动态路由。按第一节的信息进行分组存储 - * e.g '/hello[/{name}]' '/user/{id}' - * @var array[] - * [ - * // 使用完整的第一节作为key进行分组 - * 'a' => [ - * [ - * 'start' => '/a/', - * 'regex' => '/a/(\w+)', - * 'methods' => 'GET,POST', - * 'handler' => 'handler', - * 'option' => [...], - * ], - * ... ... - * ], - * 'add' => [ - * [ - * 'start' => '/add/', - * 'regex' => '/add/(\w+)', - * 'methods' => 'GET', - * 'handler' => 'handler', - * 'option' => [...], - * ], - * ... ... - * ], - * 'blog' => [ - * [ - * 'start' => '/blog/post-', - * 'regex' => '/blog/post-(\w+)', - * 'methods' => 'GET', - * 'handler' => 'handler', - * 'option' => [...], - * ], - * ... ... - * ], - * ] - */ - private $regularRoutes = []; - - /** - * vague Routes - have dynamic arguments,but the first node is exists regex. - * 第一节就包含了正则匹配,称之为无规律/模糊的动态路由 - * e.g '/{name}/profile' '/{some}/{some2}' - * @var array - * [ - * [ - * // 必定包含的字符串 - * 'include' => '/profile', - * 'regex' => '/(\w+)/profile', - * 'methods' => 'GET', - * 'handler' => 'handler', - * 'option' => [...], - * ], - * [ - * 'include' => null, - * 'regex' => '/(\w+)/(\w+)', - * 'methods' => 'GET,POST', - * 'handler' => 'handler', - * 'option' => [...], - * ], - * ... ... - * ] - */ - private $vagueRoutes = []; - - /** - * There are last route caches - * @see $staticRoutes - * @var array[] - */ - private $routeCaches = []; - - /** - * some setting for self - * @var array - */ - protected $config = [ - // the routes php file. - 'routesFile' => '', - - // ignore last '/' char. If is True, will clear last '/'. - 'ignoreLastSep' => false, - - // 'tmpCacheNumber' => 100, - 'tmpCacheNumber' => 0, - - // match all request. - // 1. If is a valid URI path, will matchAll all request uri to the path. - // 2. If is a closure, will matchAll all request then call it - // eg: '/site/maintenance' or `function () { echo 'System Maintaining ... ...'; }` - 'matchAll' => false, - - // auto route match @like yii framework - // If is True, will auto find the handler controller file. - 'autoRoute' => false, - // The default controllers namespace, is valid when `'enable' = true` - 'controllerNamespace' => '', // eg: 'app\\controllers' - // controller suffix, is valid when `'enable' = true` - 'controllerSuffix' => '', // eg: 'Controller' - ]; - - /** @var DispatcherInterface */ - private $dispatcher; - - /** - * object creator. - * @param array $config - * @return self - * @throws \LogicException - */ - public static function make(array $config = []) - { - return new static($config); - } - - /** - * object constructor. - * @param array $config - * @throws \LogicException - */ - public function __construct(array $config = []) - { - $this->setConfig($config); - - $this->currentGroupPrefix = ''; - $this->currentGroupOption = []; - - // load routes - if (($file = $this->config['routesFile']) && is_file($file)) { - require $file; - } - } - - /** - * @param array $config - * @throws \LogicException - */ - public function setConfig(array $config) - { - if ($this->initialized) { - throw new \LogicException('Routing has been added, and configuration is not allowed!'); - } - - foreach ($config as $name => $value) { - if (isset($this->config[$name])) { - $this->config[$name] = $value; - } - } - } - - /******************************************************************************* - * route collection - ******************************************************************************/ - - /** - * Defines a route callback and method - * @param string $method - * @param array $args - * @return ORouter - * @throws \LogicException - * @throws \InvalidArgumentException - */ - public function __call($method, array $args) - { - if (\count($args) < 2) { - throw new \InvalidArgumentException("The method [$method] parameters is missing."); - } - - return $this->map($method, $args[0], $args[1], isset($args[2]) ? $args[2] : []); - } - - /** - * Create a route group with a common prefix. - * All routes created in the passed callback will have the given group prefix prepended. - * @ref package 'nikic/fast-route' - * @param string $prefix - * @param \Closure $callback - * @param array $opts - */ - public function group($prefix, \Closure $callback, array $opts = []) - { - $previousGroupPrefix = $this->currentGroupPrefix; - $this->currentGroupPrefix = $previousGroupPrefix . '/' . trim($prefix, '/'); - - $previousGroupOption = $this->currentGroupOption; - $this->currentGroupOption = $opts; - - $callback($this); - - $this->currentGroupPrefix = $previousGroupPrefix; - $this->currentGroupOption = $previousGroupOption; - } - - /** - * @param string|array $methods The match request method(s). - * e.g - * string: 'get' - * array: ['get','post'] - * @param string $route The route path string. is allow empty string. eg: '/user/login' - * @param callable|string $handler - * @param array $opts some option data - * [ - * 'params' => [ 'id' => '[0-9]+', ], - * 'defaults' => [ 'id' => 10, ], - * 'domains' => [ 'a-domain.com', '*.b-domain.com'], - * 'schemas' => ['https'], - * ] - * @return static - * @throws \LogicException - * @throws \InvalidArgumentException - */ - public function map($methods, $route, $handler, array $opts = []) - { - if (!$this->initialized) { - $this->initialized = true; - } - - $hasPrefix = (bool)$this->currentGroupPrefix; - // validate and format arguments - $methods = static::validateArguments($methods, $handler); - - if ($route = trim($route)) { - // always add '/' prefix. - $route = $route{0} === '/' ? $route : '/' . $route; - } elseif (!$hasPrefix) { - $route = '/'; - } - - $route = $this->currentGroupPrefix . $route; - - // setting 'ignoreLastSep' - if ($route !== '/' && $this->config['ignoreLastSep']) { - $route = rtrim($route, '/'); - } - - $this->routeCounter++; - $opts = array_replace([ - 'params' => null, - // 'domains' => null, - ], $this->currentGroupOption, $opts); - $conf = [ - 'methods' => $methods, - 'handler' => $handler, - 'option' => $opts, - ]; - - // no dynamic param params - if (self::isNoDynamicParam($route)) { - $this->staticRoutes[$route][$methods] = $conf; - - return $this; - } - - // have dynamic param params - - // replace param name To pattern regex - $params = static::getAvailableParams(self::$globalParams, $opts['params']); - list($first, $conf) = static::parseParamRoute($route, $params, $conf); - - // route string have regular - if ($first) { - $this->regularRoutes[$first][] = $conf; - } else { - $this->vagueRoutes[] = $conf; - } - - return $this; - } - - /******************************************************************************* - * route match - ******************************************************************************/ - - /** - * find the matched route info for the given request uri path - * @param string $method - * @param string $path - * @return array - */ - public function match($path, $method = self::GET) - { - // if enable 'matchAll' - if ($matchAll = $this->config['matchAll']) { - if (\is_string($matchAll) && $matchAll{0} === '/') { - $path = $matchAll; - } elseif (\is_callable($matchAll)) { - return [self::FOUND, $path, [ - 'handler' => $matchAll, - 'option' => [], - ]]; - } - } - - // clear '//', '///' => '/' - $path = rawurldecode(preg_replace('#\/\/+#', '/', $path)); - $method = strtoupper($method); - - // setting 'ignoreLastSep' - if ($path !== '/' && $this->config['ignoreLastSep']) { - $path = rtrim($path, '/'); - } - - // find in route caches. - if ($this->routeCaches && isset($this->routeCaches[$path])) { - return self::findInStaticRoutes($this->routeCaches[$path], $path, $method); - } - - // is a static route path - if ($this->staticRoutes && isset($this->staticRoutes[$path])) { - return self::findInStaticRoutes($this->staticRoutes[$path], $path, $method); - } - - $first = self::getFirstFromPath($path); - - // is a regular dynamic route(the first node is 1th level index key). - if (isset($this->regularRoutes[$first])) { - foreach ($this->regularRoutes[$first] as $conf) { - if (0 === strpos($path, $conf['start']) && preg_match($conf['regex'], $path, $matches)) { - $conf['matches'] = $matches; - - return $this->checkMatched($path, $method, $conf); - } - } - } - - // is a irregular dynamic route - foreach ($this->vagueRoutes as $conf) { - if ($conf['include'] && false === strpos($path, $conf['include'])) { - continue; - } - - if (preg_match($conf['regex'], $path, $matches)) { - $conf['matches'] = $matches; - - return $this->checkMatched($path, $method, $conf); - } - } - - // handle Auto Route - if ( - $this->config['autoRoute'] && - ($handler = self::matchAutoRoute($path, $this->config['controllerNamespace'], $this->config['controllerSuffix'])) - ) { - return [self::FOUND, $path, [ - 'handler' => $handler, - 'option' => [], - ]]; - } - - // oo ... not found - return [self::NOT_FOUND, $path, null]; - } - - /******************************************************************************* - * route callback handler dispatch - ******************************************************************************/ - - /** - * Runs the callback for the given request - * @param DispatcherInterface|array $dispatcher - * @param null|string $path - * @param null|string $method - * @return mixed - * @throws \Throwable - */ - public function dispatch($dispatcher = null, $path = null, $method = null) - { - if ($dispatcher) { - if ($dispatcher instanceof DispatcherInterface) { - $this->dispatcher = $dispatcher; - } elseif (\is_array($dispatcher)) { - $this->dispatcher = new Dispatcher($dispatcher); - } - } - - if (!$this->dispatcher) { - $this->dispatcher = new Dispatcher; - } - - return $this->dispatcher->setMatcher(function ($p, $m) { - return $this->match($p, $m); - })->dispatch($path, $method); - } - - /******************************************************************************* - * helper methods - ******************************************************************************/ - - /** - * checkMatched - * @param string $path - * @param string $method - * @param array $conf - * @return array - */ - protected function checkMatched($path, $method, array $conf) - { - $methods = $conf['methods']; - $cacheNumber = (int)$this->config['tmpCacheNumber']; - - // method not allowed - if (false === strpos($methods . ',', $method . ',')) { - return [self::METHOD_NOT_ALLOWED, $path, explode(',', $methods)]; - } - - $conf['matches'] = self::filterMatches($conf['matches'], $conf); - - // cache last $cacheNumber routes. - if ($cacheNumber > 0) { - if ($this->cacheCounter === $cacheNumber) { - array_shift($this->routeCaches); - } - - if (!isset($this->routeCaches[$path][$methods])) { - $this->cacheCounter++; - $this->routeCaches[$path][$methods] = $conf; - } - } - - return [self::FOUND, $path, $conf]; - } - - /** - * @return int - */ - public function count() - { - return $this->routeCounter; - } - - /** - * @param array $staticRoutes - */ - public function setStaticRoutes(array $staticRoutes) - { - $this->staticRoutes = $staticRoutes; - } - - /** - * @return array - */ - public function getStaticRoutes() - { - return $this->staticRoutes; - } - - /** - * @param \array[] $regularRoutes - */ - public function setRegularRoutes(array $regularRoutes) - { - $this->regularRoutes = $regularRoutes; - } - - /** - * @return \array[] - */ - public function getRegularRoutes() - { - return $this->regularRoutes; - } - - /** - * @param array $vagueRoutes - */ - public function setVagueRoutes($vagueRoutes) - { - $this->vagueRoutes = $vagueRoutes; - } - - /** - * @return array - */ - public function getVagueRoutes() - { - return $this->vagueRoutes; - } - - /** - * @return array - */ - public function getRouteCaches() - { - return $this->routeCaches; - } - - /** - * @param null|string $name - * @param null|mixed $default - * @return array|string - */ - public function getConfig($name = null, $default = null) - { - if ($name) { - return isset($this->config[$name]) ? $this->config[$name] : $default; - } - - return $this->config; - } - - /** - * @return DispatcherInterface - */ - public function getDispatcher() - { - return $this->dispatcher; - } - - /** - * @param DispatcherInterface $dispatcher - * @return $this - */ - public function setDispatcher(DispatcherInterface $dispatcher) - { - $this->dispatcher = $dispatcher; - - return $this; - } - - /** - * @return array - */ - public function getGlobalOptions(): array - { - return $this->globalOptions; - } - - /** - * @param array $globalOptions - * @return $this - */ - public function setGlobalOptions(array $globalOptions) - { - $this->globalOptions = $globalOptions; - - return $this; - } -} diff --git a/src/PreMatchRouter.php b/src/PreMatchRouter.php new file mode 100644 index 0000000..74fcfb0 --- /dev/null +++ b/src/PreMatchRouter.php @@ -0,0 +1,133 @@ +setRequest($path, $method); + } + + /** + * @param string $path + * @param string $method + */ + public function setRequest(string $path = '', string $method = ''): void + { + if (!$path) { + $path = $_SERVER['REQUEST_URI'] ?? ''; + } + + if (strpos($path, '?')) { + $path = (string)parse_url(http://github.com/$path,%20PHP_URL_PATH); + } + + $this->reqPath = RouteHelper::formatPath($path, $this->ignoreLastSlash); + $this->reqMethod = $method ? strtoupper($method) : $_SERVER['REQUEST_METHOD']; + } + + /** + * @param Route $route + * + * @return Route + */ + public function addRoute(Route $route): Route + { + // Has been matched. don't add again. + if ($this->preFounded) { + return $route; + } + + $path = $route->getPath(); + $method = $route->getMethod(); + + $this->routeCounter++; + + // Success match + if ($path === $this->reqPath && $method === $this->reqMethod) { + $this->preFounded = $route; + return $route; + } + + return parent::addRoute($route); + } + + /** + * {@inheritdoc} + */ + public function match(string $path, string $method = 'GET'): array + { + // If has been pre-matched. + if ($this->preFounded) { + return [self::FOUND, $path, $this->preFounded]; + } + + return parent::match($path, $method); + } + + /** + * @return Route|null + */ + public function getPreFounded(): ?Route + { + return $this->preFounded; + } + + /** + * @return string + */ + public function getReqPath(): string + { + return $this->reqPath; + } +} diff --git a/src/Route.php b/src/Route.php new file mode 100644 index 0000000..25636ce --- /dev/null +++ b/src/Route.php @@ -0,0 +1,653 @@ + regular expression path (or symbol name)] + * @var string[] + */ + private array $bindVars; + + /** + * dynamic route param values, only use for route cache + * [param name => value] + * @var string[] + */ + private array $params = []; + + // -- match condition. it is parsed from route path string. + + /** + * path var names. + * @var array '/users/{id}' => ['id'] + */ + private array $pathVars = []; + + /** + * @var string eg. '#^/users/(\d+)$#' + */ + private string $pathRegex = ''; + + /** + * '/users/{id}' -> '/users/' + * '/blog/post-{id}' -> '/blog/post-' + * @var string + */ + private string $pathStart = ''; + + // -- extra properties + + /** + * middleware handler chains + * @var callable[] + */ + private array $chains = []; + + /** + * some custom route options data. + * @var array + */ + private array $options; + + /** + * @param string $method + * @param string $path + * @param mixed $handler + * @param array $pathParams + * @param array $options + * + * @return Route + */ + public static function create( + string $method, + string $path, + mixed $handler, + array $pathParams = [], + array $options = [] + ): Route { + return new self($method, $path, $handler, $pathParams, $options); + } + + /** + * @param array $config + * + * @return Route + */ + public static function createFromArray(array $config = []): self + { + $route = new self('GET', '/', ''); + + foreach ($config as $property => $value) { + if (property_exists($route, $property)) { + $route->$property = $value; + } + } + + return $route; + } + + /** + * Route constructor. + * + * @param string $method + * @param string $path + * @param mixed $handler + * @param array $pathParams + * @param array $options + */ + public function __construct(string $method, string $path, mixed $handler, array $pathParams = [], array $options = []) + { + $this->initialize($method, $path, $handler, $pathParams, $options); + } + + public function initialize( + string $method, + string $path, + $handler, + array $pathParams = [], + array $options = [] + ): self { + $this->path = trim($path); + $this->method = strtoupper($method); + $this->bindVars = $pathParams; + $this->handler = $handler; + $this->options = $options; + + if (isset($options['name'])) { + $this->setName($options['name']); + } + + return $this; + } + + /** + * register route to the router + * + * @param Router $router + * + * @return Route + */ + public function attachTo(Router $router): self + { + $router->addRoute($this); + return $this; + } + + /** + * name the route and bind name to router. + * + * @param string $name + * @param Router $router + * @param bool $register + */ + public function namedTo(string $name, Router $router, bool $register = false): void + { + // not empty + if ($name = $this->setName($name)->name) { + if ($register) { + $router->addRoute($this); + } else { + $router->nameRoute($name, $this); + } + } + } + + /******************************************************************************* + * parse route path + ******************************************************************************/ + + /** + * parse route path string. fetch route params + * + * @param array $bindParams + * + * @return string returns the first node string. + */ + public function parseParam(array $bindParams = []): string + { + $argPos = strpos($this->path, '{'); + $optPos = strpos($this->path, '['); + + return $this->quickParseParams($argPos, $optPos, $bindParams); + } + + /** + * @param int|false $argPos + * @param int|false $optPos + * @param array $bindParams + * + * @return string + */ + public function quickParseParams($argPos, $optPos, array $bindParams = []): string + { + $first = $start = ''; + $path = $this->path; + + // regular: first node is a normal string e.g '/user/{id}' -> 'user', '/a/{post}' -> 'a' + if (preg_match('#^/([\w-]+)/(?:[\w\/-]*)#', $path, $m)) { + [$start, $first] = $m; + $this->pathStart = $start === '/' ? '' : $start; + } + + // quote '.','/' to '\.','\/' + if (false !== strpos($path, '.')) { + $path = str_replace('.', '\.', $path); + } + + // Parse the optional parameters + if (false !== $optPos) { + $noClosingOptionals = rtrim($path, ']'); + $optionalNum = strlen($path) - strlen($noClosingOptionals); + if ($optionalNum !== substr_count($noClosingOptionals, '[')) { + throw new LogicException('Optional segments can only occur at the end of a route'); + } + + // '/hello[/{name}]' -> '/hello(?:/{name})?' + $path = str_replace(['[', ']'], ['(?:', ')?'], $path); + // No params + if ($argPos === false) { + $this->pathRegex = '#^' . $path . '$#'; + return $first; + } + } + + if ($bindVars = $this->getBindVars()) { // merge current route vars + $bindParams = array_merge($bindParams, $bindVars); + } + + // Parse the parameters and replace them with the corresponding regular + $path = preg_replace_callback('#\{([a-zA-Z_][\w-]*)\}#', function ($m) use ($bindParams) { + $this->pathVars[] = $m[1]; + + $regex = $bindParams[$m[1]] ?? Router::DEFAULT_REGEX; + return '(' . $regex . ')'; + }, $path); + + $this->pathRegex = '#^' . $path . '$#'; + return $first; + } + + /******************************************************************************* + * route match + ******************************************************************************/ + + /** + * @param string $path + * + * @return array returns match result. has two elements. + * [ + * match ok?, + * route params values + * ] + */ + public function match(string $path): array + { + // Check start string + if ($this->pathStart !== '' && strpos($path, $this->pathStart) !== 0) { + return [false,]; + } + + return $this->matchRegex($path); + } + + /** + * @param string $path + * + * @return array + * [ + * match ok?, + * route params values + * ] + */ + public function matchRegex(string $path): array + { + // If don't match + if (!preg_match($this->pathRegex, $path, $matches)) { + return [false,]; + } + + // No params. eg: only use optional. '/about[.html]' + if (count($this->pathVars) === 0) { + return [true, []]; + } + + $params = []; + + // First is full match. + array_shift($matches); + foreach ($matches as $index => $value) { + $params[$this->pathVars[$index]] = $value; + } + + // If has default values + if (isset($this->options['defaults'])) { + $params = array_merge($this->options['defaults'], $params); + } + + return [true, $params]; + } + + /******************************************************************************* + * helper methods + ******************************************************************************/ + + /** + * @param array $params + * + * @return Route + */ + public function copyWithParams(array $params): self + { + $route = clone $this; + $route->params = $params; + + return $route; + } + + /** + * push middleware(s) to the route + * + * @param array ...$middleware + * + * @return Route + */ + public function middleware(...$middleware): self + { + foreach ($middleware as $handler) { + $this->chains[] = $handler; + } + + return $this; + } + + /** + * alias of the method: middleware() + * + * @param mixed ...$middleware + * + * @return Route + * @see middleware() + */ + public function push(...$middleware): self + { + return $this->middleware(...$middleware); + } + + /** + * replace set chains. + * + * @param callable[] $chains + */ + public function setChains(array $chains): void + { + $this->chains = $chains; + } + + /** + * build uri string. + * + * @param array $pathVars + * + * @return string + */ + public function toUri(array $pathVars = []): string + { + if ($pathVars) { + return strtr($this->path, $pathVars); + } + + return $this->path; + } + + /** + * get basic info data + * @return array + */ + public function info(): array + { + return [ + 'path' => $this->path, + 'method' => $this->method, + 'handlerName' => $this->getHandlerName(), + ]; + } + + /** + * get all info data + * @return array + */ + public function toArray(): array + { + return [ + 'name' => $this->name, + 'path' => $this->path, + 'method' => $this->method, + 'handler' => $this->handler, + 'binds' => $this->bindVars, + 'params' => $this->params, + 'options' => $this->options, + // + 'pathVars' => $this->pathVars, + 'pathStart' => $this->pathStart, + 'pathRegex' => $this->pathRegex, + // + 'chains' => $this->chains, + ]; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toString(); + } + + /** + * @return string + */ + public function toString(): string + { + return sprintf( + '%-7s %-25s --> %s (%d middleware)', + $this->method, + $this->path, + $this->getHandlerName(), + count($this->chains) + ); + } + + /** + * @param string $name + * + * @return Route + */ + public function setName(string $name): self + { + if ($name = trim($name)) { + $this->name = $name; + } + + return $this; + } + + /** + * @param string $path + */ + public function setPath(string $path): void + { + $this->path = trim($path); + } + + /** + * @param string $name + * @param $value + * + * @return Route + */ + public function addOption(string $name, $value): self + { + $this->options[$name] = $value; + return $this; + } + + /** + * @param array $options + * + * @return Route + */ + public function setOptions(array $options): self + { + $this->options = $options; + return $this; + } + + /******************************************************************************* + * getter methods + ******************************************************************************/ + + /** + * Retrieve an external iterator + * @link https://php.net/manual/en/iteratoraggregate.getiterator.php + * @return Traversable An instance of an object implementing Iterator or Traversable + * @since 5.0.0 + */ + public function getIterator(): Traversable + { + return new ArrayIterator($this->toArray()); + } + + /** + * @return string + */ + public function getPath(): string + { + return $this->path; + } + + /** + * @return mixed + */ + public function getHandler() + { + return $this->handler; + } + + /** + * @return string[] + */ + public function getParams(): array + { + return $this->params; + } + + /** + * @param string $name + * @param null|mixed $default + * + * @return string|mixed + */ + public function getParam(string $name, $default = null) + { + return $this->params[$name] ?? $default; + } + + /** + * @return array + */ + public function getOptions(): array + { + return $this->options; + } + + /** + * @return string[] + */ + public function getBindVars(): array + { + return $this->bindVars; + } + + /** + * @return string + */ + public function getMethod(): string + { + return $this->method; + } + + /** + * @return array + */ + public function getPathVars(): array + { + return $this->pathVars; + } + + /** + * @return string + */ + public function getPathRegex(): string + { + return $this->pathRegex; + } + + /** + * @return string + */ + public function getPathStart(): string + { + return $this->pathStart; + } + + /** + * @return array + */ + public function getChains(): array + { + return $this->chains; + } + + /** + * @return string + */ + public function getName(): string + { + return $this->name; + } + + /** + * @return string + */ + public function getHandlerName(): string + { + $handlerName = 'unknown'; + + if (is_object($this->handler)) { + $handlerName = get_class($this->handler); + } elseif (is_array($this->handler)) { + $handlerName = '[array callback]'; + } elseif (is_string($this->handler)) { + $handlerName = $this->handler; + } + + return $handlerName; + } +} diff --git a/src/Router.php b/src/Router.php new file mode 100644 index 0000000..2371417 --- /dev/null +++ b/src/Router.php @@ -0,0 +1,824 @@ + Route] + */ + protected array $namedRoutes = []; + + /** + * static Routes - no dynamic argument match + * 整个路由 path 都是静态字符串 e.g. '/user/login' + * + * @var Route[] + * [ + * 'GET /user/login' => Route, + * 'POST /user/login' => Route, + * ] + */ + protected array $staticRoutes = []; + + /** + * regular Routes - have dynamic arguments, but the first node is normal string. + * 第一节是个静态字符串,称之为有规律的动态路由。按第一节的信息进行分组存储 + * + * @var Route[][] + * [ + * // 使用完整的第一节作为key进行分组 + * 'edit' => [ + * Route, // '/edit/{id}' + * ], + * 'blog' => [ + * Route, // '/blog/post-{id}' + * ], + * ] + */ + protected array $regularRoutes = []; + + /** + * vague Routes - have dynamic arguments,but the first node is exists regex. + * 第一节就包含了正则匹配,称之为无规律/模糊的动态路由 + * + * @var Route[][] + * [ + * // 使用 HTTP METHOD 作为 key进行分组 + * 'GET' => [ + * Route, // '/{name}/profile' + * ... + * ], + * 'POST' => [ + * Route, // '/{some}/{some2}' + * ... + * ], + * ] + */ + protected array $vagueRoutes = []; + + /** + * object creator. + * + * @param array $config + * + * @return self + * @throws LogicException + */ + public static function create(array $config = []): Router + { + return new static($config); + } + + /** + * object constructor. + * + * @param array $config = [ + * 'name' => 'my-router', + * 'chains' => [], + * // 'defaultRoute' => '', + * 'ignoreLastSlash' => false, + * 'tmpCacheNumber' => 100, + * 'handleMethodNotAllowed' => false, + * 'autoRoute' => false, + * 'controllerNamespace' => '', + * 'controllerSuffix' => 'Controller', + * ]; + * + * @throws LogicException + */ + public function __construct(array $config = []) + { + $this->config($config); + $this->basicRoute = new Route('GET', '/', null); + + $this->currentGroupPrefix = ''; + $this->currentGroupOption = []; + } + + /******************************************************************************* + * router middleware + ******************************************************************************/ + + /** + * alias of the method: middleware() + * + * @param array ...$middleware + * + * @return self + */ + public function use(...$middleware): Router + { + return $this->middleware(...$middleware); + } + + /** + * push middleware(s) for the route + * + * @param mixed ...$middleware + * + * @return Router + */ + public function middleware(...$middleware): Router + { + foreach ($middleware as $handler) { + $this->chains[] = $handler; + } + + return $this; + } + + /******************************************************************************* + * route register + ******************************************************************************/ + + /** + * register a route, allow GET request method. + * + * @param string $path + * @param mixed $handler + * @param array $pathParams + * @param array $opts + * + * @return Route + */ + public function get(string $path, mixed $handler, array $pathParams = [], array $opts = []): Route + { + return $this->add('GET', $path, $handler, $pathParams, $opts); + // return $this->map(['GET', 'HEAD'], $path, $handler, $pathParams, $opts); + } + + /** + * register a route, allow POST request method. + * + * @param string $path + * @param mixed $handler + * @param array $pathParams + * @param array $opts + * + * @return Route + */ + public function post(string $path, mixed $handler, array $pathParams = [], array $opts = []): Route + { + return $this->add('POST', $path, $handler, $pathParams, $opts); + } + + /** + * register a route, allow PUT request method. + * + * @param string $path + * @param mixed $handler + * @param array $pathParams + * @param array $opts + * + * @return Route + */ + public function put(string $path, mixed $handler, array $pathParams = [], array $opts = []): Route + { + return $this->add('PUT', $path, $handler, $pathParams, $opts); + } + + /** + * register a route, allow PATCH request method. + * + * @param string $path + * @param mixed $handler + * @param array $pathParams + * @param array $opts + * + * @return Route + */ + public function patch(string $path, mixed $handler, array $pathParams = [], array $opts = []): Route + { + return $this->add('PATCH', $path, $handler, $pathParams, $opts); + } + + /** + * register a route, allow DELETE request method. + * + * @param string $path + * @param mixed $handler + * @param array $pathParams + * @param array $opts + * + * @return Route + */ + public function delete(string $path, mixed $handler, array $pathParams = [], array $opts = []): Route + { + return $this->add('DELETE', $path, $handler, $pathParams, $opts); + } + + /** + * register a route, allow HEAD request method. + * + * @param string $path + * @param mixed $handler + * @param array $pathParams + * @param array $opts + * + * @return Route + */ + public function head(string $path, mixed $handler, array $pathParams = [], array $opts = []): Route + { + return $this->add('HEAD', $path, $handler, $pathParams, $opts); + } + + /** + * register a route, allow OPTIONS request method. + * + * @param string $path + * @param mixed $handler + * @param array $pathParams + * @param array $opts + * + * @return Route + */ + public function options(string $path, mixed $handler, array $pathParams = [], array $opts = []): Route + { + return $this->add('OPTIONS', $path, $handler, $pathParams, $opts); + } + + /** + * register a route, allow CONNECT request method. + * + * @param string $path + * @param mixed $handler + * @param array $pathParams + * @param array $opts + * + * @return Route + */ + public function connect(string $path, mixed $handler, array $pathParams = [], array $opts = []): Route + { + return $this->add('CONNECT', $path, $handler, $pathParams, $opts); + } + + /** + * register a route, allow any request METHOD. + * + * @param string $path + * @param mixed $handler + * @param array $pathParams + * @param array $opts + */ + public function any(string $path, mixed $handler, array $pathParams = [], array $opts = []): void + { + $this->map(self::METHODS_ARRAY, $path, $handler, $pathParams, $opts); + } + + /** + * @param array|string $methods + * @param string $path + * @param callable|string $handler + * @param array $pathParams + * @param array $opts + */ + public function map($methods, string $path, mixed $handler, array $pathParams = [], array $opts = []): void + { + foreach ((array)$methods as $method) { + $this->add($method, $path, $handler, $pathParams, $opts); + } + } + + /** + * @param string $method + * @param string $path + * @param mixed $handler + * @param array $pathParams + * @param array $opts + * + * @return Route + */ + public function add(string $method, string $path, mixed $handler, array $pathParams = [], array $opts = []): Route + { + if (!$method || !$handler) { + throw new InvalidArgumentException('The method and route handler is not allow empty.'); + } + + $route = $this->cloneRoute(); + $method = strtoupper($method); + if ($method === 'ANY') { + $this->any($path, $handler, $pathParams, $opts); + return $route; // Only use for return type + } + + if (!str_contains(self::METHODS_STRING, ',' . $method . ',')) { + throw new InvalidArgumentException( + "The method [$method] is not supported, Allow: " . trim(self::METHODS_STRING, ',') + ); + } + + // Initialize Route + $route->initialize($method, $path, $handler, $pathParams, $opts); + + return $this->addRoute($route); + } + + /** + * @param Route $route + * + * @return Route + */ + public function addRoute(Route $route): Route + { + $this->routeCounter++; + $this->appendGroupInfo($route); + + $path = $route->getPath(); + $method = $route->getMethod(); + if ($name = $route->getName()) { + $this->namedRoutes[$name] = $route; + } + + // It is static route + $argPos = strpos($path, '{'); + $optPos = strpos($path, '['); + if ($argPos === false && $optPos === false) { + $this->staticRoutes[$method . ' ' . $path] = $route; + return $route; + } + + // Parse param route + // - If the first node is static string. + $globalParams = self::$globalParams; + if ($first = $route->quickParseParams($argPos, $optPos, $globalParams)) { + $this->regularRoutes[$method . ' ' . $first][] = $route; + } else { + $this->vagueRoutes[$method][] = $route; + } + + return $route; + } + + /** + * Create a route group with a common prefix. + * All routes created in the passed callback will have the given group prefix prepended. + * + * @param string $prefix + * @param Closure $callback + * @param array $middleware + * @param array $opts + */ + public function group(string $prefix, Closure $callback, array $middleware = [], array $opts = []): void + { + // Backups + $previousGroupPrefix = $this->currentGroupPrefix; + $previousGroupOption = $this->currentGroupOption; + $previousGroupChains = $this->currentGroupChains; + + $this->currentGroupOption = $opts; + $this->currentGroupChains = $middleware; + $this->currentGroupPrefix = $previousGroupPrefix . '/' . trim($prefix, '/'); + + // Run callback. + $callback($this); + + // Reverts + $this->currentGroupPrefix = $previousGroupPrefix; + $this->currentGroupOption = $previousGroupOption; + $this->currentGroupChains = $previousGroupChains; + } + + /** + * prepare for add + * + * @param Route $route + * + * @return void + */ + protected function appendGroupInfo(Route $route): void + { + $path = $bak = $route->getPath(); + + // Always add '/' prefix. + $path = str_starts_with($path, '/') ? $path : '/' . $path; + $path = $this->currentGroupPrefix . $path; + + // Has setting 'ignoreLastSlash' + if ($path !== '/' && $this->ignoreLastSlash) { + $path = rtrim($path, '/'); + } + + // Not in group and path not change. + if ($bak === $path) { + return; + } + + $route->setPath($path); + + // Not in group + if (!$this->currentGroupPrefix) { + return; + } + + if ($this->currentGroupOption) { + $route->setOptions(array_merge($this->currentGroupOption, $route->getOptions())); + } + + // Prepend group middleware at before. + if ($this->currentGroupChains) { + $route->setChains(array_merge($this->currentGroupChains, $route->getChains())); + } + } + + /******************************************************************************* + * route match + ******************************************************************************/ + + /** + * find the matched route info for the given request uri path + * + * @param string $method + * @param string $path + * + * @return array returns array. + * [ + * match status, // found, not found, method not allowed + * formatted path, + * (Route object) OR (allowed methods list) + * ] + */ + public function match(string $path, string $method = 'GET'): array + { + // For HEAD requests, attempt fallback to GET + $method = strtoupper($method); + if ($method === 'HEAD') { + $method = 'GET'; + } + + $path = RouteHelper::formatPath($path, $this->ignoreLastSlash); + $sKey = $method . ' ' . $path; + + // It is a static route path + if (isset($this->staticRoutes[$sKey])) { + return [self::FOUND, $path, $this->staticRoutes[$sKey]]; + } + + // It is a dynamic route, match by regexp + $result = $this->matchDynamicRoute($path, $method); + if ($result[0] === self::FOUND) { + return $result; + } + + // Handle Auto Route. always return new Route object. + if ($this->autoRoute && ($handler = $this->matchAutoRoute($path))) { + return [self::FOUND, $path, Route::create($method, $path, $handler)]; + } + + // If nothing else matches, try fallback routes. $router->any('*', 'handler'); + $sKey = $method . ' /*'; + if (isset($this->staticRoutes[$sKey])) { + return [self::FOUND, $path, $this->staticRoutes[$sKey]]; + } + + if ($this->handleMethodNotAllowed) { + return $this->findAllowedMethods($path, $method); + } + + return [self::NOT_FOUND, $path, null]; + } + + /** + * is a dynamic route, match by regexp + * + * @param string $path + * @param string $method + * + * @return array + * [ + * status, + * path, + * Route(object) -> it's a raw Route clone. + * ] + */ + protected function matchDynamicRoute(string $path, string $method): array + { + $first = strstr(ltrim($path, '/'), '/', true); + $fKey = $first ? $method . ' ' . $first : ''; + + // It is a regular dynamic route(the first node is 1th level index key). + if ($fKey && isset($this->regularRoutes[$fKey])) { + foreach ($this->regularRoutes[$fKey] as $route) { + // Check path start string + $pathStart = $route->getPathStart(); + if (!str_starts_with($path, $pathStart)) { + continue; + } + + $result = $route->matchRegex($path); + if ($result[0]) { + return [self::FOUND, $path, $route->copyWithParams($result[1])]; + } + } + } + + // It is a irregular dynamic route + // if ($routeList = $this->vagueRoutes[$method] ?? false) { + if (isset($this->vagueRoutes[$method])) { + foreach ($this->vagueRoutes[$method] as $route) { + $result = $route->matchRegex($path); + if ($result[0]) { + return [self::FOUND, $path, $route->copyWithParams($result[1])]; + } + } + } + + return [self::NOT_FOUND, $path, null]; + } + + /** + * handle auto route match, when config `'autoRoute' => true` + * + * @param string $path The route path + * + * @return bool|string + */ + public function matchAutoRoute(string $path): string|bool + { + if (!$cnp = trim($this->controllerNamespace)) { + return false; + } + + $sfx = trim($this->controllerSuffix); + + return RouteHelper::parseAutoRoute($path, $cnp, $sfx, $this->namespaceUcFirst); + } + + /** + * @param string $path + * @param string $method + * + * @return array + */ + protected function findAllowedMethods(string $path, string $method): array + { + $methods = []; + foreach (self::METHODS_ARRAY as $m) { + if ($method === $m) { + continue; + } + + $sKey = $m . ' ' . $path; + if (isset($this->staticRoutes[$sKey])) { + $methods[$m] = 1; + continue; + } + + $result = $this->matchDynamicRoute($path, $m); + if ($result[0] === self::FOUND) { + $methods[$m] = 1; + } + } + + if ($methods) { + return [self::METHOD_NOT_ALLOWED, $path, array_keys($methods)]; + } + return [self::NOT_FOUND, $path, null]; + } + + /******************************************************************************* + * route dispatch + ******************************************************************************/ + + /** + * Runs the callback for the given request + * + * @param array|DispatcherInterface|null $dispatcher + * @param string $path + * @param string $method + * + * @return mixed + * @throws LogicException + * @throws Throwable + */ + public function dispatch(DispatcherInterface|array|null $dispatcher = null, string $path = '', string $method = ''): mixed + { + if (!$dispatcher) { + $dispatcher = new Dispatcher; + } elseif (is_array($dispatcher)) { + $dispatcher = new Dispatcher($dispatcher); + } + + if (!$dispatcher instanceof DispatcherInterface) { + throw new InvalidArgumentException( + 'The first argument is must an array OR an object instanceof the DispatcherInterface' + ); + } + + if (!$dispatcher->hasRouter()) { + $dispatcher->setRouter($this); + } + + return $dispatcher->dispatchUri($path, $method); + } + + /******************************************************************************* + * helper methods + ******************************************************************************/ + + /** + * @param string $name Route name + * @param array $pathVars + * + * @return string + */ + public function createUri(string $name, array $pathVars = []): string + { + if ($route = $this->getRoute($name)) { + return $route->toUri($pathVars); + } + + return ''; + } + + /** + * @param string $name + * @param Route $route + */ + public function nameRoute(string $name, Route $route): void + { + if ($name = trim($name)) { + $this->namedRoutes[$name] = $route; + } + } + + /** + * get a name route by given name. + * + * @param string $name + * + * @return Route|null + */ + public function getRoute(string $name): ?Route + { + return $this->namedRoutes[$name] ?? null; + } + + /** + * @return int + */ + public function count(): int + { + return $this->routeCounter; + } + + /** + * @param Closure $func + */ + public function each(Closure $func): void + { + foreach ($this->staticRoutes as $route) { + $func($route); + } + + foreach ($this->regularRoutes as $routes) { + foreach ($routes as $route) { + $func($route); + } + } + + foreach ($this->vagueRoutes as $routes) { + foreach ($routes as $route) { + $func($route); + } + } + } + + /** + * get all routes + * + * @return array + */ + public function getRoutes(): array + { + $routes = []; + $this->each(static function (Route $route) use (&$routes) { + $routes[] = $route; + }); + + return $routes; + } + + /** + * @return array + */ + public function getChains(): array + { + return $this->chains; + } + + protected function cloneRoute(): Route + { + return clone $this->basicRoute; + } + + /** + * Retrieve an external iterator + * + * @link https://php.net/manual/en/iteratoraggregate.getiterator.php + * @return Traversable An instance of an object implementing Iterator or + * Traversable + * @since 5.0.0 + */ + public function getIterator(): Traversable + { + return new ArrayIterator($this->getRoutes()); + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toString(); + } + + /** + * @return string + */ + public function toString(): string + { + $indent = ' '; + $strings = ['#Routes Number: ' . $this->count()]; + $strings[] = "\n#Static Routes:"; + foreach ($this->staticRoutes as $route) { + $strings[] = $indent . $route->toString(); + } + + $strings[] = "\n# Regular Routes:"; + foreach ($this->regularRoutes as $routes) { + foreach ($routes as $route) { + $strings[] = $indent . $route->toString(); + } + } + + $strings[] = "\n# Vague Routes:"; + foreach ($this->vagueRoutes as $routes) { + foreach ($routes as $route) { + $strings[] = $indent . $route->toString(); + } + } + + return implode("\n", $strings); + } +} diff --git a/src/RouterConfigTrait.php b/src/RouterConfigTrait.php new file mode 100644 index 0000000..b2b22d8 --- /dev/null +++ b/src/RouterConfigTrait.php @@ -0,0 +1,216 @@ +get('/user/{id}', 'handler'); + * + * @var array + */ + protected static array $globalParams = [ + 'all' => '.*', + 'any' => '[^/]+', // match any except '/' + 'num' => '[1-9][0-9]*', // match a number and gt 0 + 'int' => '\d+', // match a number + 'act' => '[a-zA-Z][\w-]+', // match a action name + ]; + + /******************************************************************************* + * router config + ******************************************************************************/ + + /* + * Can define an default route path + * + * @var string + */ + // public $defaultRoute = ''; + + /** + * Ignore last slash char('/'). If is True, will clear last '/'. + * + * @var bool + */ + public bool $ignoreLastSlash = false; + + /** + * Whether handle method not allowed. If True, will find allowed methods. + * + * @var bool + */ + public bool $handleMethodNotAllowed = false; + + /** + * Enable auto route match like yii framework + * If is True, will auto find the handler controller file. + * + * @var bool + */ + public bool $autoRoute = false; + + /** + * The default controllers namespace. eg: 'App\\Controllers' + * + * @var string + */ + public string $controllerNamespace = ''; + + /** + * The first char case of namespace. + * + * false - lower case. eg: 'controllers\admin' + * true - upper case. eg: 'Controllers\Admin' + * + * @var bool + */ + protected bool $namespaceUcFirst = false; + + /** + * Controller suffix, is valid when '$autoRoute' = true. eg: 'Controller' + * + * @var string + */ + public string $controllerSuffix = 'Controller'; + + /** + * @var array global Options + */ + private array $globalOptions = [ + // 'domains' => [ 'localhost' ], // allowed domains + // 'schemas' => [ 'http' ], // allowed schemas + // 'time' => ['12'], + ]; + + /** + * config the router + * + * @param array $config + * + * @throws LogicException + */ + public function config(array $config): void + { + if ($this->routeCounter > 0) { + throw new LogicException('Routing has been added, and configuration is not allowed!'); + } + + $props = [ + 'name' => 1, + 'chains' => 1, + // 'defaultRoute' => 1, + 'ignoreLastSlash' => 1, + 'handleMethodNotAllowed' => 1, + 'autoRoute' => 1, + 'controllerNamespace' => 1, + 'controllerSuffix' => 1, + ]; + + foreach ($config as $name => $value) { + $setter = 'set' . ucfirst($name); + if (method_exists($this, $setter)) { + $this->$setter($value); + } elseif (isset($props[$name])) { + $this->$name = $value; + } + } + } + + /** + * @return string + */ + public function getName(): string + { + return $this->name; + } + + /** + * @param string $name + */ + public function setName(string $name): void + { + $this->name = $name; + } + + /** + * @param array $params + */ + public function addGlobalParams(array $params): void + { + foreach ($params as $name => $pattern) { + $this->addGlobalParam($name, $pattern); + } + } + + /** + * @param string $name + * @param string $pattern + */ + public function addGlobalParam(string $name, string $pattern): void + { + $name = trim($name, '{} '); + + self::$globalParams[$name] = $pattern; + } + + /** + * @return array + */ + public function getGlobalParams(): array + { + return self::$globalParams; + } + + /** + * @return array + */ + public function getGlobalOptions(): array + { + return $this->globalOptions; + } + + /** + * @param array $globalOptions + */ + public function setGlobalOptions(array $globalOptions): void + { + $this->globalOptions = $globalOptions; + } + + /** + * @return bool + */ + public function isNamespaceUcFirst(): bool + { + return $this->namespaceUcFirst; + } + + /** + * @param bool $namespaceUcFirst + */ + public function setNamespaceUcFirst($namespaceUcFirst): void + { + $this->namespaceUcFirst = (bool)$namespaceUcFirst; + } +} diff --git a/src/RouterInterface.php b/src/RouterInterface.php index be69196..78179df 100644 --- a/src/RouterInterface.php +++ b/src/RouterInterface.php @@ -1,4 +1,4 @@ - '[0-9]+', ] + * @param array $opts Extra options + * - name: string + * - ... more + * + * @return Route */ - const SUPPORTED_METHODS = [ - 'ANY', - 'GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS', 'HEAD', 'SEARCH', 'CONNECT', 'TRACE', - ]; + public function add(string $method, string $path, $handler, array $pathParams = [], array $opts = []): Route; + + /** + * add a Route to the router + * + * @param Route $route + * + * @return Route + */ + public function addRoute(Route $route): Route; /** - * the matched result index key + * @param array|string $methods The match request method(s). e.g ['get','post'] + * @param string $path The route path string. is allow empty string. eg: '/user/login' + * @param callable|string $handler + * @param array $pathParams route path var bind. eg. [ 'id' => '[0-9]+', ] + * @param array $opts some option data + * [ + * 'defaults' => [ 'id' => 10, ], + * 'domains' => [ 'a-domain.com', '*.b-domain.com'], + * 'schemas' => ['https'], + * ] + */ + public function map($methods, string $path, $handler, array $pathParams = [], array $opts = []): void; + + /** + * find the matched route info for the given request uri path + * + * @param string $method + * @param string $path + * + * @return array + * + * [self::NOT_FOUND, $path, null] + * [self::METHOD_NOT_ALLOWED, $path, ['GET', 'OTHER_METHODS_ARRAY']] + * [self::FOUND, $path, array () // routeData ] + * */ - const INDEX_STATUS = 0; - const INDEX_PATH = 1; - const INDEX_INFO = 2; + public function match(string $path, string $method = 'GET'): array; /** * @return array */ - public static function getSupportedMethods(); + public function getChains(): array; } diff --git a/src/RouterManager.php b/src/RouterManager.php new file mode 100644 index 0000000..ee676fb --- /dev/null +++ b/src/RouterManager.php @@ -0,0 +1,313 @@ + Object(Router), + * ... ... + * ] + */ + private $routers = []; + + /** + * @var array Available router driver + */ + private $drivers = [ + 'default' => Router::class, + 'cached' => CachedRouter::class, + 'preMatch' => PreMatchRouter::class, + 'server' => ServerRouter::class, + ]; + + /** + * @var array[] + * [ + * 'default' => 'main-site', // this is default router. + * 'main-site' => [ + * 'driver' => 'default', + * 'conditions' => [ + * 'domains' => 'abc.com', + * 'schemes' => ['https'], + * ], + * 'options' => [ + * // some setting for router. + * 'name' => 'value' + * ], + * ], + * 'doc-site' => [ + * 'driver' => 'cached', + * 'conditions' => [ + * 'domains' => 'docs.abc.com', + * ], + * 'options' => [ + * 'cacheFile' => '/path/to/routes-cache.php', + * 'cacheEnable' => true, + * ], + * ], + * ] + */ + private $configs; + + /** + * @var array + * [ + * 'main-site' => [ + * 'domains' => 'abc.com', + * 'schemes' => ['https'], + * ], + * 'doc-site' => [ + * 'domains' => 'docs.abc.com', + * 'schemes' => ['https'], + * ], + * 'th3-site' => [ + * 'domains' => 'th3.abc.com', + * ], + * ] + */ + private $conditions = []; + + /** + * @var array + */ + private $supportedConditions = [ + 'domains' => 'domain', + 'schemes' => 'scheme', + ]; + + /** + * @var array + */ + // private $onCollected = [ + // 'cached' => 'completed', + // 'server' => 'flattenStatics' + // ]; + + /** + * @return RouterManager + */ + public static function instance(): RouterManager + { + return self::$_instance; + } + + /** + * RouterManager constructor. + * + * @param array $configs + */ + public function __construct(array $configs = []) + { + self::$_instance = $this; + + if ($configs) { + $this->configs($configs); + } + } + + // match by $_SERVER info. + + /** + * get router by condition + * + * @param array|string $condition + * array: + * [ + * 'domain' => 'abc.com', + * 'scheme' => 'https', + * ] + * string: + * get by name. same of call getByName() + * + * @return Router |RouterInterface + * @throws InvalidArgumentException + */ + public function get($condition = null): Router + { + if (!$condition) { + return $this->getDefault(); + } + + // alias of getByName() + if (is_string($condition)) { + return $this->getByName($condition); + } + + $useName = self::DEFAULT_ROUTER; + + foreach ($this->conditions as $name => $cond) { + if ($this->compareArray($cond, $condition)) { + $useName = $name; + break; + } + } + + return $this->getByName($useName); + } + + /** + * @param array $define + * @param array $input + * + * @return bool + */ + protected function compareArray(array $define, array $input): bool + { + $match = true; + + foreach ($this->supportedConditions as $def => $key) { + if (isset($define[$def], $input[$key])) { + $defValues = (array)$define[$def]; + + if (!in_array($input[$key], $defValues, true)) { + $match = false; + break; + } + } + } + + return $match; + } + + /** + * @param string $name + * + * @return Router + * @throws InvalidArgumentException + */ + public function getByName(string $name): Router + { + if (!isset($this->configs[$name])) { + throw new InvalidArgumentException("The named router '$name' does not exists!"); + } + + // if created + if (isset($this->routers[$name])) { + return $this->routers[$name]; + } + + // create + $config = $this->configs[$name]; + + if (is_string($config)) { + if (!isset($this->configs[$config])) { + throw new InvalidArgumentException("The reference config '$config' does not exists of the '$name'!"); + } + + $config = $this->configs[$config]; + } + + return ($this->routers[$name] = $this->createRouter($config, $name)); + } + + /** + * @return Router + * @throws InvalidArgumentException + */ + public function getDefault(): Router + { + return $this->getByName(self::DEFAULT_ROUTER); + } + + /** + * @param array $config + * @param string $name + * + * @return Router + * @throws InvalidArgumentException + */ + private function createRouter(array $config, string $name = ''): Router + { + $driver = $config['driver'] ?? self::DEFAULT_ROUTER; + $options = $config['options'] ?? []; + + if (!$class = $this->drivers[$driver] ?? null) { + throw new InvalidArgumentException("The router driver name '$driver' does not exists!"); + } + + if ($name && !isset($options['name'])) { + $options['name'] = $name; + } + + return new $class($options); + } + + /** + * @param string $name + * @param string $class + */ + public function setDriver(string $name, string $class): void + { + $this->drivers[$name] = $class; + } + + /** + * @return Router[] + */ + public function getRouters(): array + { + return $this->routers; + } + + /** + * @return array + */ + public function getDrivers(): array + { + return $this->drivers; + } + + /** + * @return array[] + */ + public function getConfigs(): array + { + return $this->configs; + } + + /** + * @param array[] $configs + */ + public function configs(array $configs): void + { + $this->configs = $configs; + + foreach ($configs as $name => $config) { + if (isset($config['conditions'])) { + $this->conditions[$name] = $config['conditions']; + } + } + } + + /** + * @return array + */ + public function getConditions(): array + { + return $this->conditions; + } +} diff --git a/src/SRouter.php b/src/SRouter.php index 3bc1a76..87a8eae 100644 --- a/src/SRouter.php +++ b/src/SRouter.php @@ -1,4 +1,4 @@ - '', - 'ignoreLastSep' => false, - 'tmpCacheNumber' => 0, - 'matchAll' => false, - - // auto route match @like yii framework - 'autoRoute' => false, - 'controllerNamespace' => '', // eg: 'app\\controllers' - 'controllerSuffix' => '', // eg: 'Controller' - ]; - - /** @var DispatcherInterface */ - private static $dispatcher; - - /** - * @param array $config - * @throws \LogicException - */ - public static function setConfig(array $config) + private function __construct() { - if (self::$initialized) { - throw new \LogicException('Routing has been added, and configuration is not allowed!'); - } - - foreach ($config as $name => $value) { - if (isset(self::$config[$name])) { - self::$config[$name] = $value; - } - } - - // load routes - if (($file = self::$config['routesFile']) && is_file($file)) { - require $file; - } } - /******************************************************************************* - * route collection - ******************************************************************************/ - /** * Defines a route callback and method - * @param string $method - * @param array $args - * @throws \InvalidArgumentException - * @throws \LogicException - */ - public static function __callStatic($method, array $args) - { - if (\count($args) < 2) { - throw new \InvalidArgumentException("The method [$method] parameters is required."); - } - - self::map($method, $args[0], $args[1], isset($args[2]) ? $args[2] : []); - } - - /** - * Create a route group with a common prefix. - * All routes created in the passed callback will have the given group prefix prepended. * - * @ref package 'nikic/fast-route' - * @param string $prefix - * @param \Closure $callback - * @param array $opts - */ - public static function group($prefix, \Closure $callback, array $opts = []) - { - $previousGroupPrefix = self::$currentGroupPrefix; - self::$currentGroupPrefix = $previousGroupPrefix . $prefix; - - $previousGroupOption = self::$currentGroupOption; - self::$currentGroupOption = $opts; - - $callback(); - - self::$currentGroupPrefix = $previousGroupPrefix; - self::$currentGroupOption = $previousGroupOption; - } - - /** - * @see ORouter::map() - * @param string|array $methods The match request method. - * @param string $route The route path string. eg: '/user/login' - * @param callable|string $handler - * @param array $opts some option data - * @return true - * @throws \LogicException - * @throws \InvalidArgumentException - */ - public static function map($methods, $route, $handler, array $opts = []) - { - if (!self::$initialized) { - self::$initialized = true; - } - - // validate arguments - $methods = static::validateArguments($methods, $handler); - - if ($route = trim($route)) { - // always add '/' prefix. - $route = $route{0} === '/' ? $route : '/' . $route; - } else { - $route = '/'; - } - - $route = self::$currentGroupPrefix . $route; - - // setting 'ignoreLastSep' - if ($route !== '/' && self::$config['ignoreLastSep']) { - $route = rtrim($route, '/'); - } - - self::$routeCounter++; - $opts = array_replace([ - 'params' => null, - // 'domains' => null, - ], self::$currentGroupOption, $opts); - $conf = [ - 'methods' => $methods, - 'handler' => $handler, - 'option' => $opts, - ]; - - // no dynamic param params - if (self::isNoDynamicParam($route)) { - self::$staticRoutes[$route][] = $conf; - - return true; - } - - // have dynamic param params - - // replace param name To pattern regex - $params = self::getAvailableParams(self::$globalParams, $opts['params']); - list($first, $conf) = static::parseParamRoute($route, $params, $conf); - - // route string have regular - if ($first) { - self::$regularRoutes[$first][] = $conf; - } else { - self::$vagueRoutes[] = $conf; - } - - return true; - } - - /******************************************************************************* - * route match - ******************************************************************************/ - - /** - * find the matched route info for the given request uri path * @param string $method - * @param string $path - * @return array + * @param array $args + * + * @return Router|mixed + * @throws InvalidArgumentException + * @throws LogicException */ - public static function match($path, $method = self::GET) + public static function __callStatic($method, array $args) { - // if enable 'matchAll' - if ($matchAll = static::$config['matchAll']) { - if (\is_string($matchAll) && $matchAll{0} === '/') { - $path = $matchAll; - } elseif (\is_callable($matchAll)) { - return [self::FOUND, $path, [ - 'handler' => $matchAll, - 'option' => [], - ]]; - } + if (method_exists(self::getRouter(), $method)) { + return self::getRouter()->$method(...$args); } - // clear '//', '///' => '/' - $path = rawurldecode(preg_replace('#\/\/+#', '/', $path)); - $method = strtoupper($method); - - // find in class cache. - if (self::$routeCaches && isset(self::$routeCaches[$path])) { - return self::findInStaticRoutes(self::$staticRoutes[$path], $path, $method); - } - - // is a static path route - if (self::$staticRoutes && isset(self::$staticRoutes[$path])) { - return self::findInStaticRoutes(self::$staticRoutes[$path], $path, $method); - } - - $first = self::getFirstFromPath($path); - - // is a regular dynamic route(the first char is 1th level index key). - if (isset(self::$regularRoutes[$first])) { - foreach (self::$regularRoutes[$first] as $conf) { - if (0 === strpos($path, $conf['start']) && preg_match($conf['regex'], $path, $matches)) { - $conf['matches'] = $matches; - - return self::checkMatched($path, $method, $conf); - } - } - } - - // is a irregular dynamic route - foreach (self::$vagueRoutes as $conf) { - if ($conf['include'] && false === strpos($path, $conf['include'])) { - continue; - } - - if (preg_match($conf['regex'], $path, $matches)) { - $conf['matches'] = $matches; - - return self::checkMatched($path, $method, $conf); - } - } - - // handle Auto Route - if ( - self::$config['autoRoute'] && - ($handler = self::matchAutoRoute($path, self::$config['controllerNamespace'], self::$config['controllerSuffix'])) - ) { - return [self::FOUND, $path, [ - 'handler' => $handler, - 'option' => [], - ]]; - } - - // oo ... not found - return [self::NOT_FOUND, $path, null]; + throw new InvalidArgumentException("call invalid method: $method"); } - /******************************************************************************* - * route callback handler dispatch - ******************************************************************************/ - /** - * Runs the callback for the given request - * @param DispatcherInterface|array $dispatcher - * @param null|string $path - * @param null|string $method - * @return mixed - * @throws \Throwable + * @return Router|RouterInterface */ - public static function dispatch($dispatcher = null, $path = null, $method = null) + public static function getRouter(): RouterInterface { - if ($dispatcher) { - if ($dispatcher instanceof DispatcherInterface) { - self::$dispatcher = $dispatcher; - } elseif (\is_array($dispatcher)) { - self::$dispatcher = new Dispatcher($dispatcher); - } - } - - if (!self::$dispatcher) { - self::$dispatcher = new Dispatcher; + if (!self::$router) { + self::$router = new Router(); } - return self::$dispatcher->setMatcher(function ($p, $m) { - return self::match($p, $m); - })->dispatch($path, $method); + return self::$router; } - /******************************************************************************* - * helper methods - ******************************************************************************/ - /** - * checkMatched - * @param string $path - * @param string $method - * @param array $conf - * @return array + * @param RouterInterface $router */ - protected static function checkMatched($path, $method, array $conf) + public static function setRouter(RouterInterface $router): void { - $methods = $conf['methods']; - $cacheNumber = (int)self::$config['tmpCacheNumber']; - - // method not allowed - if (false === strpos($methods . ',', $method . ',')) { - return [self::METHOD_NOT_ALLOWED, $path, explode(',', $methods)]; - } - - $conf['matches'] = self::filterMatches($conf['matches'], $conf); - - // cache last $cacheNumber routes. - if ($cacheNumber > 0) { - if (self::$cacheCounter === $cacheNumber) { - array_shift(self::$routeCaches); - } - - if (!isset(self::$routeCaches[$path][$methods])) { - self::$cacheCounter++; - self::$routeCaches[$path][$methods] = $conf; - } - } - - return [self::FOUND, $path, $conf]; + self::$router = $router; } - - /** - * @return int - */ - public static function count() - { - return self::$routeCounter; - } - - /** - * @return array - */ - public static function getStaticRoutes() - { - return self::$staticRoutes; - } - - /** - * @return \array[] - */ - public static function getRegularRoutes() - { - return self::$regularRoutes; - } - - /** - * @return array - */ - public static function getVagueRoutes() - { - return self::$vagueRoutes; - } - - /** - * @return array - */ - public static function getConfig() - { - return static::$config; - } - - /** - * @return DispatcherInterface - */ - public static function getDispatcher() - { - return self::$dispatcher; - } - - /** - * @param DispatcherInterface $dispatcher - */ - public static function setDispatcher(DispatcherInterface $dispatcher) - { - self::$dispatcher = $dispatcher; - } - } diff --git a/src/ServerRouter.php b/src/ServerRouter.php new file mode 100644 index 0000000..92f4dc4 --- /dev/null +++ b/src/ServerRouter.php @@ -0,0 +1,152 @@ + Route, + * 'PUT /user/login' => Route, + * ] + */ + private array $cacheRoutes = []; + + /** + * object constructor. + * + * @param array $config + * + * @throws LogicException + */ + public function __construct(array $config = []) + { + parent::__construct($config); + + if (isset($config['tmpCacheNumber'])) { + $this->tmpCacheNumber = (int)$config['tmpCacheNumber']; + } + } + + /******************************************************************************* + * route match + ******************************************************************************/ + + /** + * {@inheritdoc} + */ + public function match(string $path, string $method = 'GET'): array + { + // For HEAD requests, attempt fallback to GET + $method = strtoupper($method); + if ($method === 'HEAD') { + $method = 'GET'; + } + + $path = RouteHelper::formatPath($path, $this->ignoreLastSlash); + $sKey = $method . ' ' . $path; + + // It is a static route path + if (isset($this->staticRoutes[$sKey])) { + return [self::FOUND, $path, $this->staticRoutes[$sKey]]; + } + + // Find in route caches. + if ($this->cacheRoutes && isset($this->cacheRoutes[$sKey])) { + return [self::FOUND, $path, $this->cacheRoutes[$sKey]]; + } + + // It is a dynamic route, match by regexp + $result = $this->matchDynamicRoute($path, $method); + if ($result[0] === self::FOUND) { // will cache param route. + $this->cacheMatchedParamRoute($path, $method, $result[2]); + return $result; + } + + // Handle Auto Route + if ($this->autoRoute && ($handler = $this->matchAutoRoute($path))) { + return [self::FOUND, $path, Route::create($method, $path, $handler)]; + } + + // If nothing else matches, try fallback routes. $router->any('*', 'handler'); + $sKey = $method . ' /*'; + if ($this->staticRoutes && isset($this->staticRoutes[$sKey])) { + return [self::FOUND, $path, $this->staticRoutes[$sKey]]; + } + + if ($this->handleMethodNotAllowed) { + return $this->findAllowedMethods($path, $method); + } + + return [self::NOT_FOUND, $path, null]; + } + + /******************************************************************************* + * helper methods + ******************************************************************************/ + + /** + * @param string $path + * @param string $method + * @param Route $route + */ + protected function cacheMatchedParamRoute(string $path, string $method, Route $route): void + { + $cacheKey = $method . ' ' . $path; + $cacheNumber = $this->tmpCacheNumber; + + // cache last $cacheNumber routes. + if ($cacheNumber > 0 && !isset($this->cacheRoutes[$cacheKey])) { + if ($this->getCacheCount() >= $cacheNumber) { + array_shift($this->cacheRoutes); + } + + $this->cacheRoutes[$cacheKey] = $route; + } + } + + /** + * @return array[] + */ + public function getCacheRoutes(): array + { + return $this->cacheRoutes; + } + + /** + * @return int + */ + public function getCacheCount(): int + { + return count($this->cacheRoutes); + } +} diff --git a/test/CachedRouterTest.php b/test/CachedRouterTest.php new file mode 100644 index 0000000..b26d992 --- /dev/null +++ b/test/CachedRouterTest.php @@ -0,0 +1,67 @@ + $cacheFile, + 'cacheEnable' => 1, + ]; + $callback = function (CachedRouter $router) { + $router->get('/path0', 'handler0'); + }; + + $router = createCachedRouter($callback, $config); + + $this->assertFalse($router->isCacheLoaded()); + $this->assertTrue($router->isCacheExists()); + + /** @var Route $route */ + [$sts, , $route] = $router->match('/path0'); + + $this->assertSame(CachedRouter::FOUND, $sts); + $this->assertSame('/path0', $route->getPath()); + + // create again, will load caches. + $router = createCachedRouter($callback, $config); + + $this->assertTrue($router->isCacheExists()); + $this->assertTrue($router->isCacheLoaded()); + + /** @var Route $route */ + [$sts, , $route] = $router->match('/path0'); + + $this->assertSame(CachedRouter::FOUND, $sts); + $this->assertSame('/path0', $route->getPath()); + + // if (file_exists($cacheFile)) { + // unlink($cacheFile); + // } + } +} diff --git a/examples/Controllers/Admin/UserController.php b/test/Controllers/Admin/UserController.php similarity index 57% rename from examples/Controllers/Admin/UserController.php rename to test/Controllers/Admin/UserController.php index b3f77fe..0a14df2 100644 --- a/examples/Controllers/Admin/UserController.php +++ b/test/Controllers/Admin/UserController.php @@ -1,4 +1,4 @@ -'; } - public function infoAction() + public function infoAction(): void { echo 'hello, this is ' . __METHOD__ . '