Elasticsearch \ Common \ Exceptions \ ServerErrorResponseException (500)
{"error":{"root_cause":[{"type":"exception","reason":"Trying to create too many scroll contexts. Must be less than or equal to: [500]. This limit can be set by changing the [search.max_open_scroll_context] setting."}],"type":"search_phase_execution_exception","reason":"all shards failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":"publications","node":"YCLdyR2pTwewb88SFH0bJg","reason":{"type":"exception","reason":"Trying to create too many scroll contexts. Must be less than or equal to: [500]. This limit can be set by changing the [search.max_open_scroll_context] setting."}}]},"status":500} Elasticsearch\Common\Exceptions\ServerErrorResponseException thrown with message "{"error":{"root_cause":[{"type":"exception","reason":"Trying to create too many scroll contexts. Must be less than or equal to: [500]. This limit can be set by changing the [search.max_open_scroll_context] setting."}],"type":"search_phase_execution_exception","reason":"all shards failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":"publications","node":"YCLdyR2pTwewb88SFH0bJg","reason":{"type":"exception","reason":"Trying to create too many scroll contexts. Must be less than or equal to: [500]. This limit can be set by changing the [search.max_open_scroll_context] setting."}}]},"status":500}" Stacktrace: #63 Elasticsearch\Common\Exceptions\ServerErrorResponseException in /var/www/html/purr/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php:666 #62 Elasticsearch\Connections\Connection:process5xxError in /var/www/html/purr/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php:282 #61 Elasticsearch\Connections\Connection:Elasticsearch\Connections\{closure} in /var/www/html/purr/vendor/react/promise/src/FulfilledPromise.php:25 #60 React\Promise\FulfilledPromise:then in /var/www/html/purr/vendor/guzzlehttp/ringphp/src/Future/CompletedFutureValue.php:55 #59 GuzzleHttp\Ring\Future\CompletedFutureValue:then in /var/www/html/purr/vendor/guzzlehttp/ringphp/src/Core.php:341 #58 GuzzleHttp\Ring\Core:proxy in /var/www/html/purr/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php:299 #57 Elasticsearch\Connections\Connection:Elasticsearch\Connections\{closure} in /var/www/html/purr/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php:177 #56 Elasticsearch\Connections\Connection:performRequest in /var/www/html/purr/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Transport.php:112 #55 Elasticsearch\Transport:performRequest in /var/www/html/purr/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Client.php:1530 #54 Elasticsearch\Client:performRequest in /var/www/html/purr/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Client.php:935 #53 Elasticsearch\Client:search in /var/www/html/purr/app/Service/ElasticSearchService.php:198 #52 App\Service\ElasticSearchService:searchNextSubList in /var/www/html/purr/app/Http/Controllers/PurrrController.php:298 #51 App\Http\Controllers\PurrrController:_getHighFreqSubject in /var/www/html/purr/app/Http/Controllers/PurrrController.php:202 #50 App\Http\Controllers\PurrrController:index in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54 #49 call_user_func_array in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54 #48 Illuminate\Routing\Controller:callAction in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:45 #47 Illuminate\Routing\ControllerDispatcher:dispatch in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Route.php:219 #46 Illuminate\Routing\Route:runController in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Route.php:176 #45 Illuminate\Routing\Route:run in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Router.php:680 #44 Illuminate\Routing\Router:Illuminate\Routing\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:30 #43 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php:41 #42 Illuminate\Routing\Middleware\SubstituteBindings:handle in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163 #41 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53 #40 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php:75 #39 Illuminate\Foundation\Http\Middleware\VerifyCsrfToken:handle in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163 #38 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53 #37 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php:49 #36 Illuminate\View\Middleware\ShareErrorsFromSession:handle in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163 #35 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53 #34 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:56 #33 Illuminate\Session\Middleware\StartSession:handle in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163 #32 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53 #31 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php:37 #30 Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse:handle in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163 #29 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53 #28 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php:66 #27 Illuminate\Cookie\Middleware\EncryptCookies:handle in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163 #26 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53 #25 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:104 #24 Illuminate\Pipeline\Pipeline:then in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Router.php:682 #23 Illuminate\Routing\Router:runRouteWithinStack in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Router.php:657 #22 Illuminate\Routing\Router:runRoute in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Router.php:623 #21 Illuminate\Routing\Router:dispatchToRoute in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Router.php:612 #20 Illuminate\Routing\Router:dispatch in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:176 #19 Illuminate\Foundation\Http\Kernel:Illuminate\Foundation\Http\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:30 #18 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/html/purr/vendor/fideloper/proxy/src/TrustProxies.php:57 #17 Fideloper\Proxy\TrustProxies:handle in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163 #16 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53 #15 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21 #14 Illuminate\Foundation\Http\Middleware\TransformsRequest:handle in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163 #13 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53 #12 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21 #11 Illuminate\Foundation\Http\Middleware\TransformsRequest:handle in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163 #10 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53 #9 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php:27 #8 Illuminate\Foundation\Http\Middleware\ValidatePostSize:handle in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163 #7 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53 #6 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php:62 #5 Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode:handle in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:163 #4 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:53 #3 Illuminate\Routing\Pipeline:Illuminate\Routing\{closure} in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:104 #2 Illuminate\Pipeline\Pipeline:then in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:151 #1 Illuminate\Foundation\Http\Kernel:sendRequestThroughRouter in /var/www/html/purr/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:116 #0 Illuminate\Foundation\Http\Kernel:handle in /var/www/html/purr/public/index.php:55
63
Elasticsearch\Common\Exceptions\ServerErrorResponseException
/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php666
62
Elasticsearch\Connections\Connection process5xxError
/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php282
61
Elasticsearch\Connections\Connection Elasticsearch\Connections\{closure}
/vendor/react/promise/src/FulfilledPromise.php25
60
React\Promise\FulfilledPromise then
/vendor/guzzlehttp/ringphp/src/Future/CompletedFutureValue.php55
59
GuzzleHttp\Ring\Future\CompletedFutureValue then
/vendor/guzzlehttp/ringphp/src/Core.php341
58
GuzzleHttp\Ring\Core proxy
/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php299
57
Elasticsearch\Connections\Connection Elasticsearch\Connections\{closure}
/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php177
56
Elasticsearch\Connections\Connection performRequest
/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Transport.php112
55
Elasticsearch\Transport performRequest
/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Client.php1530
54
Elasticsearch\Client performRequest
/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Client.php935
53
Elasticsearch\Client search
/app/Service/ElasticSearchService.php198
52
App\Service\ElasticSearchService searchNextSubList
/app/Http/Controllers/PurrrController.php298
51
App\Http\Controllers\PurrrController _getHighFreqSubject
/app/Http/Controllers/PurrrController.php202
50
App\Http\Controllers\PurrrController index
/vendor/laravel/framework/src/Illuminate/Routing/Controller.php54
49
call_user_func_array
/vendor/laravel/framework/src/Illuminate/Routing/Controller.php54
48
Illuminate\Routing\Controller callAction
/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php45
47
Illuminate\Routing\ControllerDispatcher dispatch
/vendor/laravel/framework/src/Illuminate/Routing/Route.php219
46
Illuminate\Routing\Route runController
/vendor/laravel/framework/src/Illuminate/Routing/Route.php176
45
Illuminate\Routing\Route run
/vendor/laravel/framework/src/Illuminate/Routing/Router.php680
44
Illuminate\Routing\Router Illuminate\Routing\{closure}
/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php30
43
Illuminate\Routing\Pipeline Illuminate\Routing\{closure}
/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php41
42
Illuminate\Routing\Middleware\SubstituteBindings handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php163
41
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php53
40
Illuminate\Routing\Pipeline Illuminate\Routing\{closure}
/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php75
39
Illuminate\Foundation\Http\Middleware\VerifyCsrfToken handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php163
38
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php53
37
Illuminate\Routing\Pipeline Illuminate\Routing\{closure}
/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php49
36
Illuminate\View\Middleware\ShareErrorsFromSession handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php163
35
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php53
34
Illuminate\Routing\Pipeline Illuminate\Routing\{closure}
/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php56
33
Illuminate\Session\Middleware\StartSession handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php163
32
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php53
31
Illuminate\Routing\Pipeline Illuminate\Routing\{closure}
/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php37
30
Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php163
29
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php53
28
Illuminate\Routing\Pipeline Illuminate\Routing\{closure}
/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php66
27
Illuminate\Cookie\Middleware\EncryptCookies handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php163
26
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php53
25
Illuminate\Routing\Pipeline Illuminate\Routing\{closure}
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php104
24
Illuminate\Pipeline\Pipeline then
/vendor/laravel/framework/src/Illuminate/Routing/Router.php682
23
Illuminate\Routing\Router runRouteWithinStack
/vendor/laravel/framework/src/Illuminate/Routing/Router.php657
22
Illuminate\Routing\Router runRoute
/vendor/laravel/framework/src/Illuminate/Routing/Router.php623
21
Illuminate\Routing\Router dispatchToRoute
/vendor/laravel/framework/src/Illuminate/Routing/Router.php612
20
Illuminate\Routing\Router dispatch
/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php176
19
Illuminate\Foundation\Http\Kernel Illuminate\Foundation\Http\{closure}
/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php30
18
Illuminate\Routing\Pipeline Illuminate\Routing\{closure}
/vendor/fideloper/proxy/src/TrustProxies.php57
17
Fideloper\Proxy\TrustProxies handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php163
16
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php53
15
Illuminate\Routing\Pipeline Illuminate\Routing\{closure}
/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php21
14
Illuminate\Foundation\Http\Middleware\TransformsRequest handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php163
13
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php53
12
Illuminate\Routing\Pipeline Illuminate\Routing\{closure}
/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php21
11
Illuminate\Foundation\Http\Middleware\TransformsRequest handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php163
10
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php53
9
Illuminate\Routing\Pipeline Illuminate\Routing\{closure}
/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php27
8
Illuminate\Foundation\Http\Middleware\ValidatePostSize handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php163
7
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php53
6
Illuminate\Routing\Pipeline Illuminate\Routing\{closure}
/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php62
5
Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php163
4
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php53
3
Illuminate\Routing\Pipeline Illuminate\Routing\{closure}
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php104
2
Illuminate\Pipeline\Pipeline then
/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php151
1
Illuminate\Foundation\Http\Kernel sendRequestThroughRouter
/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php116
0
Illuminate\Foundation\Http\Kernel handle
/public/index.php55
/var/www/html/purr/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php
 
        /** @var \Exception $exception */
        $exception = $this->tryDeserialize500Error($response);
 
        $exceptionText = "[$statusCode Server Exception] ".$exception->getMessage();
        $this->log->error($exceptionText);
        $this->log->error($exception->getTraceAsString());
 
        if (array_search($statusCode, $ignore) !== false) {
            return;
        }
 
        if ($statusCode === 500 && strpos($responseBody, "RoutingMissingException") !== false) {
            $exception = new RoutingMissingException($exception->getMessage(), $statusCode, $exception);
        } elseif ($statusCode === 500 && preg_match('/ActionRequestValidationException.+ no documents to get/', $responseBody) === 1) {
            $exception = new NoDocumentsToGetException($exception->getMessage(), $statusCode, $exception);
        } elseif ($statusCode === 500 && strpos($responseBody, 'NoShardAvailableActionException') !== false) {
            $exception = new NoShardAvailableException($exception->getMessage(), $statusCode, $exception);
        } else {
            $exception = new ServerErrorResponseException($responseBody, $statusCode);
        }
 
        $this->logRequestFail(
            $request['http_method'],
            $response['effective_url'],
            $request['body'],
            $request['headers'],
            $response['status'],
            $response['body'],
            $response['transfer_stats']['total_time'],
            $exception
        );
 
        throw $exception;
    }
 
    private function tryDeserialize400Error($response)
    {
        return $this->tryDeserializeError($response, 'Elasticsearch\Common\Exceptions\BadRequest400Exception');
    }
Arguments
  1. "{"error":{"root_cause":[{"type":"exception","reason":"Trying to create too many scroll contexts. Must be less than or equal to: [500]. This limit can be set by changing the [search.max_open_scroll_context] setting."}],"type":"search_phase_execution_exception","reason":"all shards failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":"publications","node":"YCLdyR2pTwewb88SFH0bJg","reason":{"type":"exception","reason":"Trying to create too many scroll contexts. Must be less than or equal to: [500]. This limit can be set by changing the [search.max_open_scroll_context] setting."}}]},"status":500}"
    
/var/www/html/purr/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php
                            $response['body'],
                            $response['transfer_stats']['total_time'],
                            $exception
                        );
                        throw $exception;
                    }
                } else {
                    $connection->markAlive();
 
                    if (isset($response['body']) === true) {
                        $response['body'] = stream_get_contents($response['body']);
                        $this->lastRequest['response']['body'] = $response['body'];
                    }
 
                    if ($response['status'] >= 400 && $response['status'] < 500) {
                        $ignore = isset($request['client']['ignore']) ? $request['client']['ignore'] : [];
                        $this->process4xxError($request, $response, $ignore);
                    } elseif ($response['status'] >= 500) {
                        $ignore = isset($request['client']['ignore']) ? $request['client']['ignore'] : [];
                        $this->process5xxError($request, $response, $ignore);
                    }
 
                    // No error, deserialize
                    $response['body'] = $this->serializer->deserialize($response['body'], $response['transfer_stats']);
                }
                $this->logRequestSuccess(
                    $request['http_method'],
                    $response['effective_url'],
                    $request['body'],
                    $request['headers'],
                    $response['status'],
                    $response['body'],
                    $response['transfer_stats']['total_time']
                );
 
                return isset($request['client']['verbose']) && $request['client']['verbose'] === true ? $response : $response['body'];
            });
 
            return $response;
        };
Arguments
  1. array:5 [
      "http_method" => "GET"
      "scheme" => "http"
      "uri" => "/publications/_doc/_search?scroll=30s&size=10"
      "body" => "{"query":{"bool":{"should":{"match_all":{}},"minimum_should_match":1,"filter":[{"term":{"status":"published"}},{"term":{"subject.raw":"Botany"}},{"term":{"subject.raw":"Sorghum"}},{"term":{"subject.raw":"Plant Pathology"}},{"term":{"type":"dataset"}},{"range":{"date":{"gte":"2020||\/y","lte":"2020||\/y","format":"yyyy"}}}]}},"highlight":{"number_of_fragments":3,"fragment_size":150,"fields":{"description":{},"title":{},"subject.raw":{},"subject":{},"id":{},"creator.raw":{},"creator":{},"date":{}}},"aggs":{"subject_buckets":{"composite":{"sources":{"subject":{"terms":{"field":"subject.raw"}}},"size":2000,"after":{"subject":"Sorghum"}}}}}"
      "headers" => array:3 [
        "Host" => array:1 [
          0 => "lib-es.lib.purdue.edu:9200"
        ]
        "Content-Type" => array:1 [
          0 => "application/json"
        ]
        "Accept" => array:1 [
          0 => "application/json"
        ]
      ]
    ]
    
  2. array:8 [
      "transfer_stats" => array:28 [
        "url" => "http://lib-es.lib.purdue.edu:9200/publications/_doc/_search?scroll=30s&size=10"
        "content_type" => "application/json; charset=UTF-8"
        "http_code" => 500
        "header_size" => 217
        "request_size" => 818
        "filetime" => -1
        "ssl_verify_result" => 0
        "redirect_count" => 0
        "total_time" => 0.014976
        "namelookup_time" => 1.2E-5
        "connect_time" => 1.2E-5
        "pretransfer_time" => 3.8E-5
        "size_upload" => 643.0
        "size_download" => 621.0
        "speed_download" => 44357.0
        "speed_upload" => 45928.0
        "download_content_length" => 621.0
        "upload_content_length" => 643.0
        "starttransfer_time" => 0.014946
        "redirect_time" => 0.0
        "redirect_url" => ""
        "primary_ip" => "128.210.126.180"
        "certinfo" => []
        "primary_port" => 9200
        "local_ip" => "128.210.126.113"
        "local_port" => 36220
        "error" => ""
        "errno" => 0
      ]
      "curl" => array:2 [
        "error" => ""
        "errno" => 0
      ]
      "effective_url" => "http://lib-es.lib.purdue.edu:9200/publications/_doc/_search?scroll=30s&size=10"
      "headers" => array:3 [
        "Warning" => array:1 [
          0 => "299 Elasticsearch-7.3.1-4749ba6 "[types removal] Specifying types in search requests is deprecated.""
        ]
        "content-type" => array:1 [
          0 => "application/json; charset=UTF-8"
        ]
        "content-length" => array:1 [
          0 => "621"
        ]
      ]
      "version" => "1.1"
      "status" => 500
      "reason" => "Internal Server Error"
      "body" => "{"error":{"root_cause":[{"type":"exception","reason":"Trying to create too many scroll contexts. Must be less than or equal to: [500]. This limit can be set by changing the [search.max_open_scroll_context] setting."}],"type":"search_phase_execution_exception","reason":"all shards failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":"publications","node":"YCLdyR2pTwewb88SFH0bJg","reason":{"type":"exception","reason":"Trying to create too many scroll contexts. Must be less than or equal to: [500]. This limit can be set by changing the [search.max_open_scroll_context] setting."}}]},"status":500}"
    ]
    
  3. []
    
/var/www/html/purr/vendor/react/promise/src/FulfilledPromise.php
{
    private $value;
 
    public function __construct($value = null)
    {
        if ($value instanceof PromiseInterface) {
            throw new \InvalidArgumentException('You cannot create React\Promise\FulfilledPromise with a promise. Use React\Promise\resolve($promiseOrValue) instead.');
        }
 
        $this->value = $value;
    }
 
    public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null)
    {
        if (null === $onFulfilled) {
            return $this;
        }
 
        try {
            return resolve($onFulfilled($this->value));
        } catch (\Throwable $exception) {
            return new RejectedPromise($exception);
        } catch (\Exception $exception) {
            return new RejectedPromise($exception);
        }
    }
 
    public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null)
    {
        if (null === $onFulfilled) {
            return;
        }
 
        $result = $onFulfilled($this->value);
 
        if ($result instanceof ExtendedPromiseInterface) {
            $result->done();
        }
    }
 
Arguments
  1. array:8 [
      "transfer_stats" => array:28 [
        "url" => "http://lib-es.lib.purdue.edu:9200/publications/_doc/_search?scroll=30s&size=10"
        "content_type" => "application/json; charset=UTF-8"
        "http_code" => 500
        "header_size" => 217
        "request_size" => 818
        "filetime" => -1
        "ssl_verify_result" => 0
        "redirect_count" => 0
        "total_time" => 0.014976
        "namelookup_time" => 1.2E-5
        "connect_time" => 1.2E-5
        "pretransfer_time" => 3.8E-5
        "size_upload" => 643.0
        "size_download" => 621.0
        "speed_download" => 44357.0
        "speed_upload" => 45928.0
        "download_content_length" => 621.0
        "upload_content_length" => 643.0
        "starttransfer_time" => 0.014946
        "redirect_time" => 0.0
        "redirect_url" => ""
        "primary_ip" => "128.210.126.180"
        "certinfo" => []
        "primary_port" => 9200
        "local_ip" => "128.210.126.113"
        "local_port" => 36220
        "error" => ""
        "errno" => 0
      ]
      "curl" => array:2 [
        "error" => ""
        "errno" => 0
      ]
      "effective_url" => "http://lib-es.lib.purdue.edu:9200/publications/_doc/_search?scroll=30s&size=10"
      "headers" => array:3 [
        "Warning" => array:1 [
          0 => "299 Elasticsearch-7.3.1-4749ba6 "[types removal] Specifying types in search requests is deprecated.""
        ]
        "content-type" => array:1 [
          0 => "application/json; charset=UTF-8"
        ]
        "content-length" => array:1 [
          0 => "621"
        ]
      ]
      "version" => "1.1"
      "status" => 500
      "reason" => "Internal Server Error"
      "body" => "{"error":{"root_cause":[{"type":"exception","reason":"Trying to create too many scroll contexts. Must be less than or equal to: [500]. This limit can be set by changing the [search.max_open_scroll_context] setting."}],"type":"search_phase_execution_exception","reason":"all shards failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":"publications","node":"YCLdyR2pTwewb88SFH0bJg","reason":{"type":"exception","reason":"Trying to create too many scroll contexts. Must be less than or equal to: [500]. This limit can be set by changing the [search.max_open_scroll_context] setting."}}]},"status":500}"
    ]
    
/var/www/html/purr/vendor/guzzlehttp/ringphp/src/Future/CompletedFutureValue.php
 
    public function cancel() {}
 
    public function promise()
    {
        if (!$this->cachedPromise) {
            $this->cachedPromise = $this->error
                ? new RejectedPromise($this->error)
                : new FulfilledPromise($this->result);
        }
 
        return $this->cachedPromise;
    }
 
    public function then(
        callable $onFulfilled = null,
        callable $onRejected = null,
        callable $onProgress = null
    ) {
        return $this->promise()->then($onFulfilled, $onRejected, $onProgress);
    }
}
 
Arguments
  1. Closure($response) {#292 …5}
    
  2. null
    
  3. null
    
/var/www/html/purr/vendor/guzzlehttp/ringphp/src/Core.php
 
    /**
     * Returns a proxied future that modifies the dereferenced value of another
     * future using a promise.
     *
     * @param FutureArrayInterface $future      Future to wrap with a new future
     * @param callable    $onFulfilled Invoked when the future fulfilled
     * @param callable    $onRejected  Invoked when the future rejected
     * @param callable    $onProgress  Invoked when the future progresses
     *
     * @return FutureArray
     */
    public static function proxy(
        FutureArrayInterface $future,
        callable $onFulfilled = null,
        callable $onRejected = null,
        callable $onProgress = null
    ) {
        return new FutureArray(
            $future->then($onFulfilled, $onRejected, $onProgress),
            [$future, 'wait'],
            [$future, 'cancel']
        );
    }
 
    /**
     * Returns a debug stream based on the provided variable.
     *
     * @param mixed $value Optional value
     *
     * @return resource
     */
    public static function getDebugResource($value = null)
    {
        if (is_resource($value)) {
            return $value;
        } elseif (defined('STDOUT')) {
            return STDOUT;
        } else {
            return fopen('php://output', 'w');
Arguments
  1. Closure($response) {#292 …5}
    
  2. null
    
  3. null
    
/var/www/html/purr/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php
                    } elseif ($response['status'] >= 500) {
                        $ignore = isset($request['client']['ignore']) ? $request['client']['ignore'] : [];
                        $this->process5xxError($request, $response, $ignore);
                    }
 
                    // No error, deserialize
                    $response['body'] = $this->serializer->deserialize($response['body'], $response['transfer_stats']);
                }
                $this->logRequestSuccess(
                    $request['http_method'],
                    $response['effective_url'],
                    $request['body'],
                    $request['headers'],
                    $response['status'],
                    $response['body'],
                    $response['transfer_stats']['total_time']
                );
 
                return isset($request['client']['verbose']) && $request['client']['verbose'] === true ? $response : $response['body'];
            });
 
            return $response;
        };
    }
 
    /**
     * @param string $uri
     * @param array $params
     *
     * @return string
     */
    private function getURI($uri, $params)
    {
        if (isset($params) === true && !empty($params)) {
            array_walk($params, function (&$value, &$key) {
                if ($value === true) {
                    $value = 'true';
                } elseif ($value === false) {
                    $value = 'false';
                }
Arguments
  1. CompletedFutureArray {#290}
    
  2. Closure($response) {#292 …5}
    
/var/www/html/purr/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php
 
        $request = [
            'http_method' => $method,
            'scheme'      => $this->transportSchema,
            'uri'         => $this->getURI($uri, $params),
            'body'        => $body,
            'headers'     => array_merge([
                'Host'  => [$this->host]
            ], $this->headers)
        ];
 
        $request = array_replace_recursive($request, $this->connectionParams, $options);
 
        // RingPHP does not like if client is empty
        if (empty($request['client'])) {
            unset($request['client']);
        }
 
        $handler = $this->handler;
        $future = $handler($request, $this, $transport, $options);
 
        return $future;
    }
 
    /** @return string */
    public function getTransportSchema()
    {
        return $this->transportSchema;
    }
 
    /** @return array */
    public function getLastRequestInfo()
    {
        return $this->lastRequest;
    }
 
    private function wrapHandler(callable $handler)
    {
        return function (array $request, Connection $connection, Transport $transport = null, $options) use ($handler) {
 
Arguments
  1. array:5 [
      "http_method" => "GET"
      "scheme" => "http"
      "uri" => "/publications/_doc/_search?scroll=30s&size=10"
      "body" => "{"query":{"bool":{"should":{"match_all":{}},"minimum_should_match":1,"filter":[{"term":{"status":"published"}},{"term":{"subject.raw":"Botany"}},{"term":{"subject.raw":"Sorghum"}},{"term":{"subject.raw":"Plant Pathology"}},{"term":{"type":"dataset"}},{"range":{"date":{"gte":"2020||\/y","lte":"2020||\/y","format":"yyyy"}}}]}},"highlight":{"number_of_fragments":3,"fragment_size":150,"fields":{"description":{},"title":{},"subject.raw":{},"subject":{},"id":{},"creator.raw":{},"creator":{},"date":{}}},"aggs":{"subject_buckets":{"composite":{"sources":{"subject":{"terms":{"field":"subject.raw"}}},"size":2000,"after":{"subject":"Sorghum"}}}}}"
      "headers" => array:3 [
        "Host" => array:1 [
          0 => "lib-es.lib.purdue.edu:9200"
        ]
        "Content-Type" => array:1 [
          0 => "application/json"
        ]
        "Accept" => array:1 [
          0 => "application/json"
        ]
      ]
    ]
    
  2. Connection {#235}
    
  3. Transport {#238}
    
  4. []
    
/var/www/html/purr/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Transport.php
    public function performRequest($method, $uri, $params = null, $body = null, $options = [])
    {
        try {
            $connection  = $this->getConnection();
        } catch (Exceptions\NoNodesAvailableException $exception) {
            $this->log->critical('No alive nodes found in cluster');
            throw $exception;
        }
 
        $response             = array();
        $caughtException      = null;
        $this->lastConnection = $connection;
 
        $future = $connection->performRequest(
            $method,
            $uri,
            $params,
            $body,
            $options,
            $this
        );
 
        $future->promise()->then(
            //onSuccess
            function ($response) {
                $this->retryAttempts = 0;
                // Note, this could be a 4xx or 5xx error
            },
            //onFailure
            function ($response) {
                // Ignore 400 level errors, as that means the server responded just fine
                if (!(isset($response['code']) && $response['code'] >=400 && $response['code'] < 500)) {
                    // Otherwise schedule a check
                    $this->connectionPool->scheduleCheck();
                }
            }
        );
 
        return $future;
    }
Arguments
  1. "GET"
    
  2. "/publications/_doc/_search"
    
  3. array:2 [
      "scroll" => "30s"
      "size" => 10
    ]
    
  4. "{"query":{"bool":{"should":{"match_all":{}},"minimum_should_match":1,"filter":[{"term":{"status":"published"}},{"term":{"subject.raw":"Botany"}},{"term":{"subject.raw":"Sorghum"}},{"term":{"subject.raw":"Plant Pathology"}},{"term":{"type":"dataset"}},{"range":{"date":{"gte":"2020||\/y","lte":"2020||\/y","format":"yyyy"}}}]}},"highlight":{"number_of_fragments":3,"fragment_size":150,"fields":{"description":{},"title":{},"subject.raw":{},"subject":{},"id":{},"creator.raw":{},"creator":{},"date":{}}},"aggs":{"subject_buckets":{"composite":{"sources":{"subject":{"terms":{"field":"subject.raw"}}},"size":2000,"after":{"subject":"Sorghum"}}}}}"
    
  5. []
    
  6. Transport {#238}
    
/var/www/html/purr/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Client.php
            if (strlen(implode("", $var)) === 0) {
                throw new InvalidArgumentException("$name cannot be an array of empty strings");
            }
        }
    }
 
    /**
     * @param AbstractEndpoint $endpoint
     *
     * @throws \Exception
     * @return array
     */
    private function performRequest(AbstractEndpoint $endpoint)
    {
        $promise =  $this->transport->performRequest(
            $endpoint->getMethod(),
            $endpoint->getURI(),
            $endpoint->getParams(),
            $endpoint->getBody(),
            $endpoint->getOptions()
        );
 
        return $this->transport->resultOrFuture($promise, $endpoint->getOptions());
    }
}
 
Arguments
  1. "GET"
    
  2. "/publications/_doc/_search"
    
  3. array:2 [
      "scroll" => "30s"
      "size" => 10
    ]
    
  4. array:3 [
      "query" => array:1 [
        "bool" => array:3 [
          "should" => array:1 [
            "match_all" => {#279}
          ]
          "minimum_should_match" => 1
          "filter" => array:6 [
            0 => array:1 [
              "term" => array:1 [
                "status" => "published"
              ]
            ]
            1 => array:1 [
              "term" => array:1 [
                "subject.raw" => "Botany"
              ]
            ]
            2 => array:1 [
              "term" => array:1 [
                "subject.raw" => "Sorghum"
              ]
            ]
            3 => array:1 [
              "term" => array:1 [
                "subject.raw" => "Plant Pathology"
              ]
            ]
            4 => array:1 [
              "term" => array:1 [
                "type" => "dataset"
              ]
            ]
            5 => array:1 [
              "range" => array:1 [
                "date" => array:3 [
                  "gte" => "2020||/y"
                  "lte" => "2020||/y"
                  "format" => "yyyy"
                ]
              ]
            ]
          ]
        ]
      ]
      "highlight" => array:3 [
        "number_of_fragments" => 3
        "fragment_size" => 150
        "fields" => array:8 [
          "description" => {#286}
          "title" => {#283}
          "subject.raw" => {#281}
          "subject" => {#284}
          "id" => {#275}
          "creator.raw" => {#285}
          "creator" => {#282}
          "date" => {#274}
        ]
      ]
      "aggs" => array:1 [
        "subject_buckets" => array:1 [
          "composite" => array:3 [
            "sources" => array:1 [
              "subject" => array:1 [
                "terms" => array:1 [
                  "field" => "subject.raw"
                ]
              ]
            ]
            "size" => 2000
            "after" => array:1 [
              "subject" => "Sorghum"
            ]
          ]
        ]
      ]
    ]
    
  5. []
    
/var/www/html/purr/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Client.php
     *
     * @return array
     */
    public function search($params = array())
    {
        $index = $this->extractArgument($params, 'index');
        $type = $this->extractArgument($params, 'type');
        $body = $this->extractArgument($params, 'body');
 
        /** @var callable $endpointBuilder */
        $endpointBuilder = $this->endpoints;
 
        /** @var \Elasticsearch\Endpoints\Search $endpoint */
        $endpoint = $endpointBuilder('Search');
        $endpoint->setIndex($index)
                 ->setType($type)
                 ->setBody($body);
        $endpoint->setParams($params);
 
        return $this->performRequest($endpoint);
    }
 
    /**
     * $params['index']              = (list) A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices
     *        ['type']               = (list) A comma-separated list of document types to search; leave empty to perform the operation on all types
     *        ['preference']         = (string) Specify the node or shard the operation should be performed on (default: random)
     *        ['routing']            = (string) Specific routing value
     *        ['local']              = (bool) Return local information, do not retrieve the state from master node (default: false)
     *        ['ignore_unavailable'] = (bool) Whether specified concrete indices should be ignored when unavailable (missing or closed)
     *        ['allow_no_indices']   = (bool) Whether to ignore if a wildcard indices expression resolves into no concrete indices. (This includes `_all` string or when no indices have been specified)
     *        ['expand_wildcards']   = (enum) Whether to expand wildcard expression to concrete indices that are open, closed or both.
     *
     * @param array $params Associative array of parameters
     *
     * @return array
     */
    public function searchShards($params = array())
    {
        $index = $this->extractArgument($params, 'index');
        $type = $this->extractArgument($params, 'type');
Arguments
  1. Search {#287}
    
/var/www/html/purr/app/Service/ElasticSearchService.php
                    'subject_buckets' => [
                        'composite' => [
                            'sources' => [
                                'subject' => [
                                    'terms' => [
                                        'field' => 'subject.raw'
                                    ]
                                ]
                            ],
                            'size' => 2000,
                            'after' => [
                                'subject' => $afterSub
                            ]
                        ]
                    ]
                ]
            ]
        ];
 
        return $this->client->search($params);
    }
 
    function autocomplete(string $field, string $string){
        if ($field == "subject" || $field == "creator"){
            $params = [
                'index' => $this->index,
                'type' => '_doc',
                'body' => [
                    'size' => 0,   //search hits are not required
                    'aggs' => [
                        $field => [
                            'terms' => [
                                'field' => $field . '.raw',
                                'include' => '.*' . strtolower($string) . '.*|.*' . ucwords($string, ' ') . '.*'
                            ]
                        ]
                    ]
                ]
            ];
        }
Arguments
  1. array:2 [
      "scroll" => "30s"
      "size" => 10
    ]
    
/var/www/html/purr/app/Http/Controllers/PurrrController.php
        }
    }
    
    /**
     * Get top 10 high level subjects and occurance number
     */
    private function _getHighFreqSubject($result, $query, $highFreqSubjects)
    {
        $subjectFacets["buckets"] = $subArr = $totalSub = $afterSub = [];
        
        if (!empty($result["aggregations"]["subject_buckets"]["buckets"]))
        {
            foreach ($result["aggregations"]["subject_buckets"]["buckets"] as $bucket)
            {
                $totalSub[$bucket["key"]["subject"]] = $bucket["doc_count"];
            }
            
            $afterSub = $result["aggregations"]["subject_buckets"]["after_key"]["subject"];
            
            $nextResult = $this->elasticSearchService->searchNextSubList($query, $afterSub);
            
            while (!empty($nextResult["aggregations"]["subject_buckets"]["buckets"]))
            {
                foreach ($nextResult["aggregations"]["subject_buckets"]["buckets"] as $bucket)
                {
                    $totalSub[$bucket["key"]["subject"]] = $bucket["doc_count"];
                }
                
                $afterSubInNextResult = $nextResult["aggregations"]["subject_buckets"]["after_key"]["subject"];
                
                $nextResult = $this->elasticSearchService->searchNextSubList($query, $afterSubInNextResult);
            }
        }
        
        foreach ($highFreqSubjects as $highFreqSub)
        {
            if (array_key_exists($highFreqSub, $totalSub))
            {
                $subArr[$highFreqSub] = $totalSub[$highFreqSub];
            }
Arguments
  1. array:1 [
      "bool" => array:3 [
        "should" => array:1 [
          "match_all" => {#279}
        ]
        "minimum_should_match" => 1
        "filter" => array:6 [
          0 => array:1 [
            "term" => array:1 [
              "status" => "published"
            ]
          ]
          1 => array:1 [
            "term" => array:1 [
              "subject.raw" => "Botany"
            ]
          ]
          2 => array:1 [
            "term" => array:1 [
              "subject.raw" => "Sorghum"
            ]
          ]
          3 => array:1 [
            "term" => array:1 [
              "subject.raw" => "Plant Pathology"
            ]
          ]
          4 => array:1 [
            "term" => array:1 [
              "type" => "dataset"
            ]
          ]
          5 => array:1 [
            "range" => array:1 [
              "date" => array:3 [
                "gte" => "2020||/y"
                "lte" => "2020||/y"
                "format" => "yyyy"
              ]
            ]
          ]
        ]
      ]
    ]
    
  2. "Sorghum"
    
/var/www/html/purr/app/Http/Controllers/PurrrController.php
        
        // Set page number to 1 if sum total of subject or creator changes
        $this->_setPageNum($filters, 'subject', $pageNum);
        $this->_setPageNum($filters, 'creator', $pageNum);
        
        // Get current search result
        if ($this->totalPages >= $pageNum)
        {
            $curResult = (empty($pageNum) || $pageNum == 1) ? $result : $this->dataArr[$pageNum - 1];
        }
        else
        {
            $curResult = (empty($pageNum) || $pageNum == 1) ? $result : $this->dataArr[$this->totalPages - 1];
        }
        
        // Get the total number of datasets
        $hitsTotal = $curResult['hits']['total']['value'];
        
        // Get high frequency subjects and occurance number
        $subjectFacets = $this->_getHighFreqSubject($result, $query, $highFreqSubjects);
        
        $showSubjectHeading = $this->_compareFacetsWithFilter($subjectFacets, $filters['subject'], 'subject');
        $showCreatorHeading = $this->_compareFacetsWithFilter($curResult['aggregations']['creator'], $filters['creator'], 'creator');
        
        return view('home/index', [
            'filters' => $filters,
            'q' => $request->query->get('q', ''),
            'displayNum' => $displayNum,
            'totalPages' => $this->totalPages,
            'pageNum' => $pageNum,
            'result' => $curResult,
            'hitsTotal' => $hitsTotal,
            'subjectFacets' => $subjectFacets,
            'fieldSelected' => $fieldSelected,
            'sortSelected' => $sortSelected,
            'showSubjectHeading' => $showSubjectHeading,
            'showCreatorHeading' => $showCreatorHeading
        ]);
    }
    
Arguments
  1. array:6 [
      "_scroll_id" => "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAIOfTcWWUNMZHlSMnBUd2V3Yjg4U0ZIMGJKZw=="
      "took" => 3
      "timed_out" => false
      "_shards" => array:4 [
        "total" => 1
        "successful" => 1
        "skipped" => 0
        "failed" => 0
      ]
      "hits" => array:3 [
        "total" => array:2 [
          "value" => 1
          "relation" => "eq"
        ]
        "max_score" => 1.0
        "hits" => array:1 [
          0 => array:6 [
            "_index" => "publications"
            "_type" => "_doc"
            "_id" => "10.4231/EZDX-XT41"
            "_score" => 1.0
            "_source" => array:13 [
              "title" => "SNP datasets and passport information of sorghum accessions from Ethiopia"
              "id" => "10.4231/EZDX-XT41"
              "set" => ""
              "identifier" => "https://doi.org/10.4231/EZDX-XT41"
              "date" => "2020-08-03T05:47:11Z"
              "description" => "Agro-climatic information, phenotypic and SNP datasets were generated for 1628 Ethiopian sorghum accessions and utilized for a study on germplasm characterization and genome-environment association studies."
              "subject" => array:8 [
                0 => "Botany"
                1 => "Ethiopia"
                2 => "Genomics"
                3 => "Germplasm"
                4 => "Landrace"
                5 => "Phenotyping"
                6 => "Plant Pathology"
                7 => "Sorghum"
              ]
              "creator" => array:16 [
                0 => "Adane Gebreyohannes"
                1 => "Alemnesh Bekele"
                2 => "Alemu Tirfessa"
                3 => "Amare Nega"
                4 => "Amare Seyoum"
                5 => "Chemeda Birhanu"
                6 => "Dagnachew Lule"
                7 => "Gebisa Ejeta"
                8 => "Getachew Ayana"
                9 => "Gezahegn Tessema"
                10 => "Habte Nida"
                11 => "Kebede Dessalegn"
                12 => "Moges Mekonen"
                13 => "Tamirat Bejiga"
                14 => "Tesfaye Mengiste, 0000-0001-8865-994X"
                15 => "Tesfaye Tesso"
              ]
              "status" => "published"
              "type" => "dataset"
              "source" => "PURR"
              "unavailability" => false
              "version" => "2.0"
            ]
            "highlight" => array:1 [
              "subject.raw" => array:3 [
                0 => "<em>Botany</em>"
                1 => "<em>Plant Pathology</em>"
                2 => "<em>Sorghum</em>"
              ]
            ]
          ]
        ]
      ]
      "aggregations" => array:4 [
        "date" => array:1 [
          "buckets" => array:1 [
            2020 => array:3 [
              "key_as_string" => "2020"
              "key" => 1577836800000
              "doc_count" => 1
            ]
          ]
        ]
        "subject_buckets" => array:2 [
          "after_key" => array:1 [
            "subject" => "Sorghum"
          ]
          "buckets" => array:8 [
            0 => array:2 [
              "key" => array:1 [
                "subject" => "Botany"
              ]
              "doc_count" => 1
            ]
            1 => array:2 [
              "key" => array:1 [
                "subject" => "Ethiopia"
              ]
              "doc_count" => 1
            ]
            2 => array:2 [
              "key" => array:1 [
                "subject" => "Genomics"
              ]
              "doc_count" => 1
            ]
            3 => array:2 [
              "key" => array:1 [
                "subject" => "Germplasm"
              ]
              "doc_count" => 1
            ]
            4 => array:2 [
              "key" => array:1 [
                "subject" => "Landrace"
              ]
              "doc_count" => 1
            ]
            5 => array:2 [
              "key" => array:1 [
                "subject" => "Phenotyping"
              ]
              "doc_count" => 1
            ]
            6 => array:2 [
              "key" => array:1 [
                "subject" => "Plant Pathology"
              ]
              "doc_count" => 1
            ]
            7 => array:2 [
              "key" => array:1 [
                "subject" => "Sorghum"
              ]
              "doc_count" => 1
            ]
          ]
        ]
        "creator" => array:3 [
          "doc_count_error_upper_bound" => 0
          "sum_other_doc_count" => 6
          "buckets" => array:10 [
            0 => array:2 [
              "key" => "Adane Gebreyohannes"
              "doc_count" => 1
            ]
            1 => array:2 [
              "key" => "Alemnesh Bekele"
              "doc_count" => 1
            ]
            2 => array:2 [
              "key" => "Alemu Tirfessa"
              "doc_count" => 1
            ]
            3 => array:2 [
              "key" => "Amare Nega"
              "doc_count" => 1
            ]
            4 => array:2 [
              "key" => "Amare Seyoum"
              "doc_count" => 1
            ]
            5 => array:2 [
              "key" => "Chemeda Birhanu"
              "doc_count" => 1
            ]
            6 => array:2 [
              "key" => "Dagnachew Lule"
              "doc_count" => 1
            ]
            7 => array:2 [
              "key" => "Gebisa Ejeta"
              "doc_count" => 1
            ]
            8 => array:2 [
              "key" => "Getachew Ayana"
              "doc_count" => 1
            ]
            9 => array:2 [
              "key" => "Gezahegn Tessema"
              "doc_count" => 1
            ]
          ]
        ]
        "type" => array:3 [
          "doc_count_error_upper_bound" => 0
          "sum_other_doc_count" => 0
          "buckets" => array:1 [
            0 => array:2 [
              "key" => "dataset"
              "doc_count" => 1
            ]
          ]
        ]
      ]
    ]
    
  2. array:1 [
      "bool" => array:3 [
        "should" => array:1 [
          "match_all" => {#279}
        ]
        "minimum_should_match" => 1
        "filter" => array:6 [
          0 => array:1 [
            "term" => array:1 [
              "status" => "published"
            ]
          ]
          1 => array:1 [
            "term" => array:1 [
              "subject.raw" => "Botany"
            ]
          ]
          2 => array:1 [
            "term" => array:1 [
              "subject.raw" => "Sorghum"
            ]
          ]
          3 => array:1 [
            "term" => array:1 [
              "subject.raw" => "Plant Pathology"
            ]
          ]
          4 => array:1 [
            "term" => array:1 [
              "type" => "dataset"
            ]
          ]
          5 => array:1 [
            "range" => array:1 [
              "date" => array:3 [
                "gte" => "2020||/y"
                "lte" => "2020||/y"
                "format" => "yyyy"
              ]
            ]
          ]
        ]
      ]
    ]
    
  3. array:102 [
      0 => "Accounting"
      1 => "Aeronautics and Astronautics Engineering"
      2 => "African-American Studies"
      3 => "Agricultural Economics"
      4 => "Agricultural Education"
      5 => "Agricultural Extension"
      6 => "Agriculture"
      7 => "Agriculture - Biological Engineering"
      8 => "Agronomy"
      9 => "American Studies"
      10 => "Animal Science"
      11 => "Anthropology"
      12 => "Art and Design"
      13 => "Asian American Studies"
      14 => "Asian Studies"
      15 => "Aviation Technology"
      16 => "Biochemistry"
      17 => "Bioinformatics"
      18 => "Biomedical Engineering"
      19 => "Botany"
      20 => "Building Construction Management"
      21 => "Career"
      22 => "Chemical Engineering"
      23 => "Chemistry"
      24 => "Civil Engineering"
      25 => "Classical Studies"
      26 => "Communication"
      27 => "Comparative Literature"
      28 => "Computer Graphics Technology"
      29 => "Computer Science"
      30 => "Computers"
      31 => "Construction Engineering and Management"
      32 => "Consumer Science -Consumer Research"
      33 => "Crop Science"
      34 => "Dance"
      35 => "Data Curation"
      36 => "Earth and Atmospheric Sciences"
      37 => "Economics"
      38 => "Education"
      39 => "Electrical & Computer Engineering"
      40 => "Engineering Education"
      41 => "Entomology"
      42 => "Entrepreneurship"
      43 => "Environmental Engineering"
      44 => "Family Studies"
      45 => "Film Studies (Motion Pictures)"
      46 => "Finance"
      47 => "Food Science"
      48 => "Forestry & Natural Resources"
      49 => "Geographic Information Systems (GIS)"
      50 => "Health & Kinesiology"
      51 => "Health Sciences"
      52 => "Hearing"
      53 => "History"
      54 => "Homeland Security"
      55 => "Horticulture & Landscape Architecture"
      56 => "Hospitality & Tourism Management"
      57 => "Human Resources"
      58 => "Humanities"
      59 => "Industrial Engineering"
      60 => "Interdisciplinary Research"
      61 => "Jewish Studies"
      62 => "Language and languages"
      63 => "Law"
      64 => "Library Science"
      65 => "Life Sciences"
      66 => "Linguistics"
      67 => "Literature"
      68 => "Management Information Systems"
      69 => "Managerial Communications"
      70 => "Marketing"
      71 => "Mathematics"
      72 => "Mechanical Engineering"
      73 => "Medicinal Chemistry"
      74 => "Medieval Studies"
      75 => "Military Science"
      76 => "Molecular Biosciences"
      77 => "Molecular Pharmacology"
      78 => "Music"
      79 => "Nuclear Engineering"
      80 => "Nursing"
      81 => "Nutrition"
      82 => "Organizational Behavior"
      83 => "Organizational Leadership & Supervision"
      84 => "Pharmacy"
      85 => "Philosophy"
      86 => "Physics"
      87 => "Plant Pathology"
      88 => "Political Science"
      89 => "Psychological Sciences"
      90 => "Quantitative Methods"
      91 => "Religious Studies"
      92 => "Social Entrepreneurship"
      93 => "Sociology"
      94 => "Soil Science"
      95 => "Speech"
      96 => "Statistics"
      97 => "Strategic Management"
      98 => "Theatre"
      99 => "Tourism"
      100 => "Veterinary Medicine"
      101 => "Women's Studies"
    ]
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Controller.php
    /**
     * Get the middleware assigned to the controller.
     *
     * @return array
     */
    public function getMiddleware()
    {
        return $this->middleware;
    }
 
    /**
     * Execute an action on the controller.
     *
     * @param  string  $method
     * @param  array   $parameters
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function callAction($method, $parameters)
    {
        return call_user_func_array([$this, $method], $parameters);
    }
 
    /**
     * Handle calls to missing methods on the controller.
     *
     * @param  string  $method
     * @param  array   $parameters
     * @return mixed
     *
     * @throws \BadMethodCallException
     */
    public function __call($method, $parameters)
    {
        throw new BadMethodCallException(sprintf(
            'Method %s::%s does not exist.', static::class, $method
        ));
    }
}
 
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Controller.php
    /**
     * Get the middleware assigned to the controller.
     *
     * @return array
     */
    public function getMiddleware()
    {
        return $this->middleware;
    }
 
    /**
     * Execute an action on the controller.
     *
     * @param  string  $method
     * @param  array   $parameters
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function callAction($method, $parameters)
    {
        return call_user_func_array([$this, $method], $parameters);
    }
 
    /**
     * Handle calls to missing methods on the controller.
     *
     * @param  string  $method
     * @param  array   $parameters
     * @return mixed
     *
     * @throws \BadMethodCallException
     */
    public function __call($method, $parameters)
    {
        throw new BadMethodCallException(sprintf(
            'Method %s::%s does not exist.', static::class, $method
        ));
    }
}
 
Arguments
  1. array:2 [
      0 => PurrrController {#222}
      1 => "index"
    ]
    
  2. array:1 [
      0 => Request {#43
        #json: null
        #convertedFiles: null
        #userResolver: Closure($guard = null) {#209 …5}
        #routeResolver: Closure() {#211 …5}
        +attributes: ParameterBag {#45}
        +request: ParameterBag {#51}
        +query: ParameterBag {#51}
        +server: ServerBag {#47}
        +files: FileBag {#48}
        +cookies: ParameterBag {#46}
        +headers: HeaderBag {#49}
        #content: null
        #languages: null
        #charsets: null
        #encodings: null
        #acceptableContentTypes: array:1 [
          0 => "*/*"
        ]
        #pathInfo: "/registry"
        #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
        #baseUrl: ""
        #basePath: null
        #method: "GET"
        #format: null
        #session: Store {#265}
        #locale: null
        #defaultLocale: "en"
        -isHostValid: true
        -isForwardedValid: true
        basePath: ""
        format: "html"
      }
    ]
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php
    {
        $this->container = $container;
    }
 
    /**
     * Dispatch a request to a given controller and method.
     *
     * @param  \Illuminate\Routing\Route  $route
     * @param  mixed  $controller
     * @param  string  $method
     * @return mixed
     */
    public function dispatch(Route $route, $controller, $method)
    {
        $parameters = $this->resolveClassMethodDependencies(
            $route->parametersWithoutNulls(), $controller, $method
        );
 
        if (method_exists($controller, 'callAction')) {
            return $controller->callAction($method, $parameters);
        }
 
        return $controller->{$method}(...array_values($parameters));
    }
 
    /**
     * Get the middleware for the controller instance.
     *
     * @param  \Illuminate\Routing\Controller  $controller
     * @param  string  $method
     * @return array
     */
    public function getMiddleware($controller, $method)
    {
        if (! method_exists($controller, 'getMiddleware')) {
            return [];
        }
 
        return collect($controller->getMiddleware())->reject(function ($data) use ($method) {
            return static::methodExcludedByOptions($method, $data['options']);
Arguments
  1. "index"
    
  2. array:1 [
      0 => Request {#43
        #json: null
        #convertedFiles: null
        #userResolver: Closure($guard = null) {#209 …5}
        #routeResolver: Closure() {#211 …5}
        +attributes: ParameterBag {#45}
        +request: ParameterBag {#51}
        +query: ParameterBag {#51}
        +server: ServerBag {#47}
        +files: FileBag {#48}
        +cookies: ParameterBag {#46}
        +headers: HeaderBag {#49}
        #content: null
        #languages: null
        #charsets: null
        #encodings: null
        #acceptableContentTypes: array:1 [
          0 => "*/*"
        ]
        #pathInfo: "/registry"
        #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
        #baseUrl: ""
        #basePath: null
        #method: "GET"
        #format: null
        #session: Store {#265}
        #locale: null
        #defaultLocale: "en"
        -isHostValid: true
        -isForwardedValid: true
        basePath: ""
        format: "html"
      }
    ]
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Route.php
    protected function runCallable()
    {
        $callable = $this->action['uses'];
 
        return $callable(...array_values($this->resolveMethodDependencies(
            $this->parametersWithoutNulls(), new ReflectionFunction($this->action['uses'])
        )));
    }
 
    /**
     * Run the route action and return the response.
     *
     * @return mixed
     *
     * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
     */
    protected function runController()
    {
        return $this->controllerDispatcher()->dispatch(
            $this, $this->getController(), $this->getControllerMethod()
        );
    }
 
    /**
     * Get the controller instance for the route.
     *
     * @return mixed
     */
    public function getController()
    {
        if (! $this->controller) {
            $class = $this->parseControllerCallback()[0];
 
            $this->controller = $this->container->make(ltrim($class, '\\'));
        }
 
        return $this->controller;
    }
 
    /**
Arguments
  1. Route {#146}
    
  2. PurrrController {#222}
    
  3. "index"
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Route.php
     *
     * @throws \UnexpectedValueException
     */
    protected function parseAction($action)
    {
        return RouteAction::parse($this->uri, $action);
    }
 
    /**
     * Run the route action and return the response.
     *
     * @return mixed
     */
    public function run()
    {
        $this->container = $this->container ?: new Container;
 
        try {
            if ($this->isControllerAction()) {
                return $this->runController();
            }
 
            return $this->runCallable();
        } catch (HttpResponseException $e) {
            return $e->getResponse();
        }
    }
 
    /**
     * Checks whether the route's action is a controller.
     *
     * @return bool
     */
    protected function isControllerAction()
    {
        return is_string($this->action['uses']);
    }
 
    /**
     * Run the route action and return the response.
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Router.php
    /**
     * Run the given route within a Stack "onion" instance.
     *
     * @param  \Illuminate\Routing\Route  $route
     * @param  \Illuminate\Http\Request  $request
     * @return mixed
     */
    protected function runRouteWithinStack(Route $route, Request $request)
    {
        $shouldSkipMiddleware = $this->container->bound('middleware.disable') &&
                                $this->container->make('middleware.disable') === true;
 
        $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route);
 
        return (new Pipeline($this->container))
                        ->send($request)
                        ->through($middleware)
                        ->then(function ($request) use ($route) {
                            return $this->prepareResponse(
                                $request, $route->run()
                            );
                        });
    }
 
    /**
     * Gather the middleware for the given route with resolved class names.
     *
     * @param  \Illuminate\Routing\Route  $route
     * @return array
     */
    public function gatherRouteMiddleware(Route $route)
    {
        $middleware = collect($route->gatherMiddleware())->map(function ($name) {
            return (array) MiddlewareNameResolver::resolve($name, $this->middleware, $this->middlewareGroups);
        })->flatten();
 
        return $this->sortMiddleware($middleware);
    }
 
    /**
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php
use Symfony\Component\Debug\Exception\FatalThrowableError;
 
/**
 * This extended pipeline catches any exceptions that occur during each slice.
 *
 * The exceptions are converted to HTTP responses for proper middleware handling.
 */
class Pipeline extends BasePipeline
{
    /**
     * Get the final piece of the Closure onion.
     *
     * @param  \Closure  $destination
     * @return \Closure
     */
    protected function prepareDestination(Closure $destination)
    {
        return function ($passable) use ($destination) {
            try {
                return $destination($passable);
            } catch (Exception $e) {
                return $this->handleException($passable, $e);
            } catch (Throwable $e) {
                return $this->handleException($passable, new FatalThrowableError($e));
            }
        };
    }
 
    /**
     * Get a Closure that represents a slice of the application onion.
     *
     * @return \Closure
     */
    protected function carry()
    {
        return function ($stack, $pipe) {
            return function ($passable) use ($stack, $pipe) {
                try {
                    $slice = parent::carry();
 
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php
     */
    public function __construct(Registrar $router)
    {
        $this->router = $router;
    }
 
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $this->router->substituteBindings($route = $request->route());
 
        $this->router->substituteImplicitBindings($route);
 
        return $next($request);
    }
}
 
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                    // the appropriate method and arguments, returning the results back out.
                    return $pipe($passable, $stack);
                } elseif (! is_object($pipe)) {
                    [$name, $parameters] = $this->parsePipeString($pipe);
 
                    // If the pipe is a string we will parse the string and resolve the class out
                    // of the dependency injection container. We can then build a callable and
                    // execute the pipe function giving in the parameters that are required.
                    $pipe = $this->getContainer()->make($name);
 
                    $parameters = array_merge([$passable, $stack], $parameters);
                } else {
                    // If the pipe is already an object we'll just make a callable and pass it to
                    // the pipe as-is. There is no need to do any extra parsing and formatting
                    // since the object we're given was already a fully instantiated object.
                    $parameters = [$passable, $stack];
                }
 
                $response = method_exists($pipe, $this->method)
                                ? $pipe->{$this->method}(...$parameters)
                                : $pipe(...$parameters);
 
                return $response instanceof Responsable
                            ? $response->toResponse($this->getContainer()->make(Request::class))
                            : $response;
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
        [$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
 
        if (is_string($parameters)) {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#213 …5}
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php
                return $this->handleException($passable, new FatalThrowableError($e));
            }
        };
    }
 
    /**
     * Get a Closure that represents a slice of the application onion.
     *
     * @return \Closure
     */
    protected function carry()
    {
        return function ($stack, $pipe) {
            return function ($passable) use ($stack, $pipe) {
                try {
                    $slice = parent::carry();
 
                    $callable = $slice($stack, $pipe);
 
                    return $callable($passable);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Handle the given exception.
     *
     * @param  mixed  $passable
     * @param  \Exception  $e
     * @return mixed
     *
     * @throws \Exception
     */
    protected function handleException($passable, Exception $e)
    {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php
    }
 
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     *
     * @throws \Illuminate\Session\TokenMismatchException
     */
    public function handle($request, Closure $next)
    {
        if (
            $this->isReading($request) ||
            $this->runningUnitTests() ||
            $this->inExceptArray($request) ||
            $this->tokensMatch($request)
        ) {
            return tap($next($request), function ($response) use ($request) {
                if ($this->shouldAddXsrfTokenCookie()) {
                    $this->addCookieToResponse($request, $response);
                }
            });
        }
 
        throw new TokenMismatchException('CSRF token mismatch.');
    }
 
    /**
     * Determine if the HTTP request uses a ‘read’ verb.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return bool
     */
    protected function isReading($request)
    {
        return in_array($request->method(), ['HEAD', 'GET', 'OPTIONS']);
    }
 
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                    // the appropriate method and arguments, returning the results back out.
                    return $pipe($passable, $stack);
                } elseif (! is_object($pipe)) {
                    [$name, $parameters] = $this->parsePipeString($pipe);
 
                    // If the pipe is a string we will parse the string and resolve the class out
                    // of the dependency injection container. We can then build a callable and
                    // execute the pipe function giving in the parameters that are required.
                    $pipe = $this->getContainer()->make($name);
 
                    $parameters = array_merge([$passable, $stack], $parameters);
                } else {
                    // If the pipe is already an object we'll just make a callable and pass it to
                    // the pipe as-is. There is no need to do any extra parsing and formatting
                    // since the object we're given was already a fully instantiated object.
                    $parameters = [$passable, $stack];
                }
 
                $response = method_exists($pipe, $this->method)
                                ? $pipe->{$this->method}(...$parameters)
                                : $pipe(...$parameters);
 
                return $response instanceof Responsable
                            ? $response->toResponse($this->getContainer()->make(Request::class))
                            : $response;
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
        [$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
 
        if (is_string($parameters)) {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#249 …5}
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php
                return $this->handleException($passable, new FatalThrowableError($e));
            }
        };
    }
 
    /**
     * Get a Closure that represents a slice of the application onion.
     *
     * @return \Closure
     */
    protected function carry()
    {
        return function ($stack, $pipe) {
            return function ($passable) use ($stack, $pipe) {
                try {
                    $slice = parent::carry();
 
                    $callable = $slice($stack, $pipe);
 
                    return $callable($passable);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Handle the given exception.
     *
     * @param  mixed  $passable
     * @param  \Exception  $e
     * @return mixed
     *
     * @throws \Exception
     */
    protected function handleException($passable, Exception $e)
    {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        // If the current session has an "errors" variable bound to it, we will share
        // its value with all view instances so the views can easily access errors
        // without having to bind. An empty bag is set when there aren't errors.
        $this->view->share(
            'errors', $request->session()->get('errors') ?: new ViewErrorBag
        );
 
        // Putting the errors in the view for every view allows the developer to just
        // assume that some errors are always available, which is convenient since
        // they don't have to continually run checks for the presence of errors.
 
        return $next($request);
    }
}
 
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                    // the appropriate method and arguments, returning the results back out.
                    return $pipe($passable, $stack);
                } elseif (! is_object($pipe)) {
                    [$name, $parameters] = $this->parsePipeString($pipe);
 
                    // If the pipe is a string we will parse the string and resolve the class out
                    // of the dependency injection container. We can then build a callable and
                    // execute the pipe function giving in the parameters that are required.
                    $pipe = $this->getContainer()->make($name);
 
                    $parameters = array_merge([$passable, $stack], $parameters);
                } else {
                    // If the pipe is already an object we'll just make a callable and pass it to
                    // the pipe as-is. There is no need to do any extra parsing and formatting
                    // since the object we're given was already a fully instantiated object.
                    $parameters = [$passable, $stack];
                }
 
                $response = method_exists($pipe, $this->method)
                                ? $pipe->{$this->method}(...$parameters)
                                : $pipe(...$parameters);
 
                return $response instanceof Responsable
                            ? $response->toResponse($this->getContainer()->make(Request::class))
                            : $response;
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
        [$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
 
        if (is_string($parameters)) {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#250 …5}
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php
                return $this->handleException($passable, new FatalThrowableError($e));
            }
        };
    }
 
    /**
     * Get a Closure that represents a slice of the application onion.
     *
     * @return \Closure
     */
    protected function carry()
    {
        return function ($stack, $pipe) {
            return function ($passable) use ($stack, $pipe) {
                try {
                    $slice = parent::carry();
 
                    $callable = $slice($stack, $pipe);
 
                    return $callable($passable);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Handle the given exception.
     *
     * @param  mixed  $passable
     * @param  \Exception  $e
     * @return mixed
     *
     * @throws \Exception
     */
    protected function handleException($passable, Exception $e)
    {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (! $this->sessionConfigured()) {
            return $next($request);
        }
 
        // If a session driver has been configured, we will need to start the session here
        // so that the data is ready for an application. Note that the Laravel sessions
        // do not make use of PHP "native" sessions in any way since they are crappy.
        $request->setLaravelSession(
            $session = $this->startSession($request)
        );
 
        $this->collectGarbage($session);
 
        $response = $next($request);
 
        $this->storeCurrentUrl($request, $session);
 
        $this->addCookieToResponse($response, $session);
 
        // Again, if the session has been configured we will need to close out the session
        // so that the attributes may be persisted to some storage medium. We will also
        // add the session identifier cookie to the application response headers now.
        $this->saveSession($request);
 
        return $response;
    }
 
    /**
     * Start the session for the given request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Contracts\Session\Session
     */
    protected function startSession(Request $request)
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                    // the appropriate method and arguments, returning the results back out.
                    return $pipe($passable, $stack);
                } elseif (! is_object($pipe)) {
                    [$name, $parameters] = $this->parsePipeString($pipe);
 
                    // If the pipe is a string we will parse the string and resolve the class out
                    // of the dependency injection container. We can then build a callable and
                    // execute the pipe function giving in the parameters that are required.
                    $pipe = $this->getContainer()->make($name);
 
                    $parameters = array_merge([$passable, $stack], $parameters);
                } else {
                    // If the pipe is already an object we'll just make a callable and pass it to
                    // the pipe as-is. There is no need to do any extra parsing and formatting
                    // since the object we're given was already a fully instantiated object.
                    $parameters = [$passable, $stack];
                }
 
                $response = method_exists($pipe, $this->method)
                                ? $pipe->{$this->method}(...$parameters)
                                : $pipe(...$parameters);
 
                return $response instanceof Responsable
                            ? $response->toResponse($this->getContainer()->make(Request::class))
                            : $response;
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
        [$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
 
        if (is_string($parameters)) {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#251 …5}
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php
                return $this->handleException($passable, new FatalThrowableError($e));
            }
        };
    }
 
    /**
     * Get a Closure that represents a slice of the application onion.
     *
     * @return \Closure
     */
    protected function carry()
    {
        return function ($stack, $pipe) {
            return function ($passable) use ($stack, $pipe) {
                try {
                    $slice = parent::carry();
 
                    $callable = $slice($stack, $pipe);
 
                    return $callable($passable);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Handle the given exception.
     *
     * @param  mixed  $passable
     * @param  \Exception  $e
     * @return mixed
     *
     * @throws \Exception
     */
    protected function handleException($passable, Exception $e)
    {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php
     * Create a new CookieQueue instance.
     *
     * @param  \Illuminate\Contracts\Cookie\QueueingFactory  $cookies
     * @return void
     */
    public function __construct(CookieJar $cookies)
    {
        $this->cookies = $cookies;
    }
 
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $response = $next($request);
 
        foreach ($this->cookies->getQueuedCookies() as $cookie) {
            $response->headers->setCookie($cookie);
        }
 
        return $response;
    }
}
 
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                    // the appropriate method and arguments, returning the results back out.
                    return $pipe($passable, $stack);
                } elseif (! is_object($pipe)) {
                    [$name, $parameters] = $this->parsePipeString($pipe);
 
                    // If the pipe is a string we will parse the string and resolve the class out
                    // of the dependency injection container. We can then build a callable and
                    // execute the pipe function giving in the parameters that are required.
                    $pipe = $this->getContainer()->make($name);
 
                    $parameters = array_merge([$passable, $stack], $parameters);
                } else {
                    // If the pipe is already an object we'll just make a callable and pass it to
                    // the pipe as-is. There is no need to do any extra parsing and formatting
                    // since the object we're given was already a fully instantiated object.
                    $parameters = [$passable, $stack];
                }
 
                $response = method_exists($pipe, $this->method)
                                ? $pipe->{$this->method}(...$parameters)
                                : $pipe(...$parameters);
 
                return $response instanceof Responsable
                            ? $response->toResponse($this->getContainer()->make(Request::class))
                            : $response;
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
        [$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
 
        if (is_string($parameters)) {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#252 …5}
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php
                return $this->handleException($passable, new FatalThrowableError($e));
            }
        };
    }
 
    /**
     * Get a Closure that represents a slice of the application onion.
     *
     * @return \Closure
     */
    protected function carry()
    {
        return function ($stack, $pipe) {
            return function ($passable) use ($stack, $pipe) {
                try {
                    $slice = parent::carry();
 
                    $callable = $slice($stack, $pipe);
 
                    return $callable($passable);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Handle the given exception.
     *
     * @param  mixed  $passable
     * @param  \Exception  $e
     * @return mixed
     *
     * @throws \Exception
     */
    protected function handleException($passable, Exception $e)
    {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php
     * Disable encryption for the given cookie name(s).
     *
     * @param  string|array  $name
     * @return void
     */
    public function disableFor($name)
    {
        $this->except = array_merge($this->except, (array) $name);
    }
 
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function handle($request, Closure $next)
    {
        return $this->encrypt($next($this->decrypt($request)));
    }
 
    /**
     * Decrypt the cookies on the request.
     *
     * @param  \Symfony\Component\HttpFoundation\Request  $request
     * @return \Symfony\Component\HttpFoundation\Request
     */
    protected function decrypt(Request $request)
    {
        foreach ($request->cookies as $key => $cookie) {
            if ($this->isDisabled($key)) {
                continue;
            }
 
            try {
                $request->cookies->set($key, $this->decryptCookie($key, $cookie));
            } catch (DecryptException $e) {
                $request->cookies->set($key, null);
            }
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                    // the appropriate method and arguments, returning the results back out.
                    return $pipe($passable, $stack);
                } elseif (! is_object($pipe)) {
                    [$name, $parameters] = $this->parsePipeString($pipe);
 
                    // If the pipe is a string we will parse the string and resolve the class out
                    // of the dependency injection container. We can then build a callable and
                    // execute the pipe function giving in the parameters that are required.
                    $pipe = $this->getContainer()->make($name);
 
                    $parameters = array_merge([$passable, $stack], $parameters);
                } else {
                    // If the pipe is already an object we'll just make a callable and pass it to
                    // the pipe as-is. There is no need to do any extra parsing and formatting
                    // since the object we're given was already a fully instantiated object.
                    $parameters = [$passable, $stack];
                }
 
                $response = method_exists($pipe, $this->method)
                                ? $pipe->{$this->method}(...$parameters)
                                : $pipe(...$parameters);
 
                return $response instanceof Responsable
                            ? $response->toResponse($this->getContainer()->make(Request::class))
                            : $response;
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
        [$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
 
        if (is_string($parameters)) {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#253 …5}
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php
                return $this->handleException($passable, new FatalThrowableError($e));
            }
        };
    }
 
    /**
     * Get a Closure that represents a slice of the application onion.
     *
     * @return \Closure
     */
    protected function carry()
    {
        return function ($stack, $pipe) {
            return function ($passable) use ($stack, $pipe) {
                try {
                    $slice = parent::carry();
 
                    $callable = $slice($stack, $pipe);
 
                    return $callable($passable);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Handle the given exception.
     *
     * @param  mixed  $passable
     * @param  \Exception  $e
     * @return mixed
     *
     * @throws \Exception
     */
    protected function handleException($passable, Exception $e)
    {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
    public function via($method)
    {
        $this->method = $method;
 
        return $this;
    }
 
    /**
     * Run the pipeline with a final destination callback.
     *
     * @param  \Closure  $destination
     * @return mixed
     */
    public function then(Closure $destination)
    {
        $pipeline = array_reduce(
            array_reverse($this->pipes), $this->carry(), $this->prepareDestination($destination)
        );
 
        return $pipeline($this->passable);
    }
 
    /**
     * Run the pipeline and return the result.
     *
     * @return mixed
     */
    public function thenReturn()
    {
        return $this->then(function ($passable) {
            return $passable;
        });
    }
 
    /**
     * Get the final piece of the Closure onion.
     *
     * @param  \Closure  $destination
     * @return \Closure
     */
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Router.php
     *
     * @param  \Illuminate\Routing\Route  $route
     * @param  \Illuminate\Http\Request  $request
     * @return mixed
     */
    protected function runRouteWithinStack(Route $route, Request $request)
    {
        $shouldSkipMiddleware = $this->container->bound('middleware.disable') &&
                                $this->container->make('middleware.disable') === true;
 
        $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route);
 
        return (new Pipeline($this->container))
                        ->send($request)
                        ->through($middleware)
                        ->then(function ($request) use ($route) {
                            return $this->prepareResponse(
                                $request, $route->run()
                            );
                        });
    }
 
    /**
     * Gather the middleware for the given route with resolved class names.
     *
     * @param  \Illuminate\Routing\Route  $route
     * @return array
     */
    public function gatherRouteMiddleware(Route $route)
    {
        $middleware = collect($route->gatherMiddleware())->map(function ($name) {
            return (array) MiddlewareNameResolver::resolve($name, $this->middleware, $this->middlewareGroups);
        })->flatten();
 
        return $this->sortMiddleware($middleware);
    }
 
    /**
     * Sort the given middleware by priority.
     *
Arguments
  1. Closure($request) {#208 …5}
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Router.php
        return $route;
    }
 
    /**
     * Return the response for the given route.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Illuminate\Routing\Route  $route
     * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse
     */
    protected function runRoute(Request $request, Route $route)
    {
        $request->setRouteResolver(function () use ($route) {
            return $route;
        });
 
        $this->events->dispatch(new Events\RouteMatched($route, $request));
 
        return $this->prepareResponse($request,
            $this->runRouteWithinStack($route, $request)
        );
    }
 
    /**
     * Run the given route within a Stack "onion" instance.
     *
     * @param  \Illuminate\Routing\Route  $route
     * @param  \Illuminate\Http\Request  $request
     * @return mixed
     */
    protected function runRouteWithinStack(Route $route, Request $request)
    {
        $shouldSkipMiddleware = $this->container->bound('middleware.disable') &&
                                $this->container->make('middleware.disable') === true;
 
        $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route);
 
        return (new Pipeline($this->container))
                        ->send($request)
                        ->through($middleware)
Arguments
  1. Route {#146}
    
  2. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Router.php
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse
     */
    public function dispatch(Request $request)
    {
        $this->currentRequest = $request;
 
        return $this->dispatchToRoute($request);
    }
 
    /**
     * Dispatch the request to a route and return the response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse
     */
    public function dispatchToRoute(Request $request)
    {
        return $this->runRoute($request, $this->findRoute($request));
    }
 
    /**
     * Find the route matching a given request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Routing\Route
     */
    protected function findRoute($request)
    {
        $this->current = $route = $this->routes->match($request);
 
        $this->container->instance(Route::class, $route);
 
        return $route;
    }
 
    /**
     * Return the response for the given route.
     *
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Route {#146}
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Router.php
     * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse
     */
    public function respondWithRoute($name)
    {
        $route = tap($this->routes->getByName($name))->bind($this->currentRequest);
 
        return $this->runRoute($this->currentRequest, $route);
    }
 
    /**
     * Dispatch the request to the application.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse
     */
    public function dispatch(Request $request)
    {
        $this->currentRequest = $request;
 
        return $this->dispatchToRoute($request);
    }
 
    /**
     * Dispatch the request to a route and return the response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse
     */
    public function dispatchToRoute(Request $request)
    {
        return $this->runRoute($request, $this->findRoute($request));
    }
 
    /**
     * Find the route matching a given request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Routing\Route
     */
    protected function findRoute($request)
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php
     * @return void
     */
    public function bootstrap()
    {
        if (! $this->app->hasBeenBootstrapped()) {
            $this->app->bootstrapWith($this->bootstrappers());
        }
    }
 
    /**
     * Get the route dispatcher callback.
     *
     * @return \Closure
     */
    protected function dispatchToRouter()
    {
        return function ($request) {
            $this->app->instance('request', $request);
 
            return $this->router->dispatch($request);
        };
    }
 
    /**
     * Call the terminate method on any terminable middleware.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Illuminate\Http\Response  $response
     * @return void
     */
    public function terminate($request, $response)
    {
        $this->terminateMiddleware($request, $response);
 
        $this->app->terminate();
    }
 
    /**
     * Call the terminate method on any terminable middleware.
     *
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php
use Symfony\Component\Debug\Exception\FatalThrowableError;
 
/**
 * This extended pipeline catches any exceptions that occur during each slice.
 *
 * The exceptions are converted to HTTP responses for proper middleware handling.
 */
class Pipeline extends BasePipeline
{
    /**
     * Get the final piece of the Closure onion.
     *
     * @param  \Closure  $destination
     * @return \Closure
     */
    protected function prepareDestination(Closure $destination)
    {
        return function ($passable) use ($destination) {
            try {
                return $destination($passable);
            } catch (Exception $e) {
                return $this->handleException($passable, $e);
            } catch (Throwable $e) {
                return $this->handleException($passable, new FatalThrowableError($e));
            }
        };
    }
 
    /**
     * Get a Closure that represents a slice of the application onion.
     *
     * @return \Closure
     */
    protected function carry()
    {
        return function ($stack, $pipe) {
            return function ($passable) use ($stack, $pipe) {
                try {
                    $slice = parent::carry();
 
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/fideloper/proxy/src/TrustProxies.php
    {
        $this->config = $config;
    }
 
    /**
     * Handle an incoming request.
     *
     * @param \Illuminate\Http\Request $request
     * @param \Closure                 $next
     *
     * @throws \Symfony\Component\HttpKernel\Exception\HttpException
     *
     * @return mixed
     */
    public function handle(Request $request, Closure $next)
    {
        $request::setTrustedProxies([], $this->getTrustedHeaderNames()); // Reset trusted proxies between requests
        $this->setTrustedProxyIpAddresses($request);
 
        return $next($request);
    }
 
    /**
     * Sets the trusted proxies on the request to the value of trustedproxy.proxies
     *
     * @param \Illuminate\Http\Request $request
     */
    protected function setTrustedProxyIpAddresses(Request $request)
    {
        $trustedIps = $this->proxies ?: $this->config->get('trustedproxy.proxies');
 
        // Trust any IP address that calls us
        // `**` for backwards compatibility, but is deprecated
        if ($trustedIps === '*' || $trustedIps === '**') {
            return $this->setTrustedProxyIpAddressesToTheCallingIp($request);
        }
 
        // Support IPs addresses separated by comma
        $trustedIps = is_string($trustedIps) ? array_map('trim', explode(',', $trustedIps)) : $trustedIps;
 
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                    // the appropriate method and arguments, returning the results back out.
                    return $pipe($passable, $stack);
                } elseif (! is_object($pipe)) {
                    [$name, $parameters] = $this->parsePipeString($pipe);
 
                    // If the pipe is a string we will parse the string and resolve the class out
                    // of the dependency injection container. We can then build a callable and
                    // execute the pipe function giving in the parameters that are required.
                    $pipe = $this->getContainer()->make($name);
 
                    $parameters = array_merge([$passable, $stack], $parameters);
                } else {
                    // If the pipe is already an object we'll just make a callable and pass it to
                    // the pipe as-is. There is no need to do any extra parsing and formatting
                    // since the object we're given was already a fully instantiated object.
                    $parameters = [$passable, $stack];
                }
 
                $response = method_exists($pipe, $this->method)
                                ? $pipe->{$this->method}(...$parameters)
                                : $pipe(...$parameters);
 
                return $response instanceof Responsable
                            ? $response->toResponse($this->getContainer()->make(Request::class))
                            : $response;
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
        [$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
 
        if (is_string($parameters)) {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#188 …5}
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php
                return $this->handleException($passable, new FatalThrowableError($e));
            }
        };
    }
 
    /**
     * Get a Closure that represents a slice of the application onion.
     *
     * @return \Closure
     */
    protected function carry()
    {
        return function ($stack, $pipe) {
            return function ($passable) use ($stack, $pipe) {
                try {
                    $slice = parent::carry();
 
                    $callable = $slice($stack, $pipe);
 
                    return $callable($passable);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Handle the given exception.
     *
     * @param  mixed  $passable
     * @param  \Exception  $e
     * @return mixed
     *
     * @throws \Exception
     */
    protected function handleException($passable, Exception $e)
    {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php
 
namespace Illuminate\Foundation\Http\Middleware;
 
use Closure;
use Symfony\Component\HttpFoundation\ParameterBag;
 
class TransformsRequest
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $this->clean($request);
 
        return $next($request);
    }
 
    /**
     * Clean the request's data.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return void
     */
    protected function clean($request)
    {
        $this->cleanParameterBag($request->query);
 
        if ($request->isJson()) {
            $this->cleanParameterBag($request->json());
        } elseif ($request->request !== $request->query) {
            $this->cleanParameterBag($request->request);
        }
    }
 
    /**
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                    // the appropriate method and arguments, returning the results back out.
                    return $pipe($passable, $stack);
                } elseif (! is_object($pipe)) {
                    [$name, $parameters] = $this->parsePipeString($pipe);
 
                    // If the pipe is a string we will parse the string and resolve the class out
                    // of the dependency injection container. We can then build a callable and
                    // execute the pipe function giving in the parameters that are required.
                    $pipe = $this->getContainer()->make($name);
 
                    $parameters = array_merge([$passable, $stack], $parameters);
                } else {
                    // If the pipe is already an object we'll just make a callable and pass it to
                    // the pipe as-is. There is no need to do any extra parsing and formatting
                    // since the object we're given was already a fully instantiated object.
                    $parameters = [$passable, $stack];
                }
 
                $response = method_exists($pipe, $this->method)
                                ? $pipe->{$this->method}(...$parameters)
                                : $pipe(...$parameters);
 
                return $response instanceof Responsable
                            ? $response->toResponse($this->getContainer()->make(Request::class))
                            : $response;
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
        [$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
 
        if (is_string($parameters)) {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#189 …5}
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php
                return $this->handleException($passable, new FatalThrowableError($e));
            }
        };
    }
 
    /**
     * Get a Closure that represents a slice of the application onion.
     *
     * @return \Closure
     */
    protected function carry()
    {
        return function ($stack, $pipe) {
            return function ($passable) use ($stack, $pipe) {
                try {
                    $slice = parent::carry();
 
                    $callable = $slice($stack, $pipe);
 
                    return $callable($passable);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Handle the given exception.
     *
     * @param  mixed  $passable
     * @param  \Exception  $e
     * @return mixed
     *
     * @throws \Exception
     */
    protected function handleException($passable, Exception $e)
    {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php
 
namespace Illuminate\Foundation\Http\Middleware;
 
use Closure;
use Symfony\Component\HttpFoundation\ParameterBag;
 
class TransformsRequest
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $this->clean($request);
 
        return $next($request);
    }
 
    /**
     * Clean the request's data.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return void
     */
    protected function clean($request)
    {
        $this->cleanParameterBag($request->query);
 
        if ($request->isJson()) {
            $this->cleanParameterBag($request->json());
        } elseif ($request->request !== $request->query) {
            $this->cleanParameterBag($request->request);
        }
    }
 
    /**
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                    // the appropriate method and arguments, returning the results back out.
                    return $pipe($passable, $stack);
                } elseif (! is_object($pipe)) {
                    [$name, $parameters] = $this->parsePipeString($pipe);
 
                    // If the pipe is a string we will parse the string and resolve the class out
                    // of the dependency injection container. We can then build a callable and
                    // execute the pipe function giving in the parameters that are required.
                    $pipe = $this->getContainer()->make($name);
 
                    $parameters = array_merge([$passable, $stack], $parameters);
                } else {
                    // If the pipe is already an object we'll just make a callable and pass it to
                    // the pipe as-is. There is no need to do any extra parsing and formatting
                    // since the object we're given was already a fully instantiated object.
                    $parameters = [$passable, $stack];
                }
 
                $response = method_exists($pipe, $this->method)
                                ? $pipe->{$this->method}(...$parameters)
                                : $pipe(...$parameters);
 
                return $response instanceof Responsable
                            ? $response->toResponse($this->getContainer()->make(Request::class))
                            : $response;
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
        [$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
 
        if (is_string($parameters)) {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#190 …5}
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php
                return $this->handleException($passable, new FatalThrowableError($e));
            }
        };
    }
 
    /**
     * Get a Closure that represents a slice of the application onion.
     *
     * @return \Closure
     */
    protected function carry()
    {
        return function ($stack, $pipe) {
            return function ($passable) use ($stack, $pipe) {
                try {
                    $slice = parent::carry();
 
                    $callable = $slice($stack, $pipe);
 
                    return $callable($passable);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Handle the given exception.
     *
     * @param  mixed  $passable
     * @param  \Exception  $e
     * @return mixed
     *
     * @throws \Exception
     */
    protected function handleException($passable, Exception $e)
    {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php
class ValidatePostSize
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     *
     * @throws \Illuminate\Http\Exceptions\PostTooLargeException
     */
    public function handle($request, Closure $next)
    {
        $max = $this->getPostMaxSize();
 
        if ($max > 0 && $request->server('CONTENT_LENGTH') > $max) {
            throw new PostTooLargeException;
        }
 
        return $next($request);
    }
 
    /**
     * Determine the server 'post_max_size' as bytes.
     *
     * @return int
     */
    protected function getPostMaxSize()
    {
        if (is_numeric($postMaxSize = ini_get('post_max_size'))) {
            return (int) $postMaxSize;
        }
 
        $metric = strtoupper(substr($postMaxSize, -1));
        $postMaxSize = (int) $postMaxSize;
 
        switch ($metric) {
            case 'K':
                return $postMaxSize * 1024;
            case 'M':
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                    // the appropriate method and arguments, returning the results back out.
                    return $pipe($passable, $stack);
                } elseif (! is_object($pipe)) {
                    [$name, $parameters] = $this->parsePipeString($pipe);
 
                    // If the pipe is a string we will parse the string and resolve the class out
                    // of the dependency injection container. We can then build a callable and
                    // execute the pipe function giving in the parameters that are required.
                    $pipe = $this->getContainer()->make($name);
 
                    $parameters = array_merge([$passable, $stack], $parameters);
                } else {
                    // If the pipe is already an object we'll just make a callable and pass it to
                    // the pipe as-is. There is no need to do any extra parsing and formatting
                    // since the object we're given was already a fully instantiated object.
                    $parameters = [$passable, $stack];
                }
 
                $response = method_exists($pipe, $this->method)
                                ? $pipe->{$this->method}(...$parameters)
                                : $pipe(...$parameters);
 
                return $response instanceof Responsable
                            ? $response->toResponse($this->getContainer()->make(Request::class))
                            : $response;
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
        [$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
 
        if (is_string($parameters)) {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#191 …5}
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php
                return $this->handleException($passable, new FatalThrowableError($e));
            }
        };
    }
 
    /**
     * Get a Closure that represents a slice of the application onion.
     *
     * @return \Closure
     */
    protected function carry()
    {
        return function ($stack, $pipe) {
            return function ($passable) use ($stack, $pipe) {
                try {
                    $slice = parent::carry();
 
                    $callable = $slice($stack, $pipe);
 
                    return $callable($passable);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Handle the given exception.
     *
     * @param  mixed  $passable
     * @param  \Exception  $e
     * @return mixed
     *
     * @throws \Exception
     */
    protected function handleException($passable, Exception $e)
    {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php
     *
     * @throws \Symfony\Component\HttpKernel\Exception\HttpException
     */
    public function handle($request, Closure $next)
    {
        if ($this->app->isDownForMaintenance()) {
            $data = json_decode(file_get_contents($this->app->storagePath().'/framework/down'), true);
 
            if (isset($data['allowed']) && IpUtils::checkIp($request->ip(), (array) $data['allowed'])) {
                return $next($request);
            }
 
            if ($this->inExceptArray($request)) {
                return $next($request);
            }
 
            throw new MaintenanceModeException($data['time'], $data['retry'], $data['message']);
        }
 
        return $next($request);
    }
 
    /**
     * Determine if the request has a URI that should be accessible in maintenance mode.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return bool
     */
    protected function inExceptArray($request)
    {
        foreach ($this->except as $except) {
            if ($except !== '/') {
                $except = trim($except, '/');
            }
 
            if ($request->fullUrlIs($except) || $request->is($except)) {
                return true;
            }
        }
 
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                    // the appropriate method and arguments, returning the results back out.
                    return $pipe($passable, $stack);
                } elseif (! is_object($pipe)) {
                    [$name, $parameters] = $this->parsePipeString($pipe);
 
                    // If the pipe is a string we will parse the string and resolve the class out
                    // of the dependency injection container. We can then build a callable and
                    // execute the pipe function giving in the parameters that are required.
                    $pipe = $this->getContainer()->make($name);
 
                    $parameters = array_merge([$passable, $stack], $parameters);
                } else {
                    // If the pipe is already an object we'll just make a callable and pass it to
                    // the pipe as-is. There is no need to do any extra parsing and formatting
                    // since the object we're given was already a fully instantiated object.
                    $parameters = [$passable, $stack];
                }
 
                $response = method_exists($pipe, $this->method)
                                ? $pipe->{$this->method}(...$parameters)
                                : $pipe(...$parameters);
 
                return $response instanceof Responsable
                            ? $response->toResponse($this->getContainer()->make(Request::class))
                            : $response;
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
        [$name, $parameters] = array_pad(explode(':', $pipe, 2), 2, []);
 
        if (is_string($parameters)) {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#192 …5}
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php
                return $this->handleException($passable, new FatalThrowableError($e));
            }
        };
    }
 
    /**
     * Get a Closure that represents a slice of the application onion.
     *
     * @return \Closure
     */
    protected function carry()
    {
        return function ($stack, $pipe) {
            return function ($passable) use ($stack, $pipe) {
                try {
                    $slice = parent::carry();
 
                    $callable = $slice($stack, $pipe);
 
                    return $callable($passable);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Handle the given exception.
     *
     * @param  mixed  $passable
     * @param  \Exception  $e
     * @return mixed
     *
     * @throws \Exception
     */
    protected function handleException($passable, Exception $e)
    {
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
    public function via($method)
    {
        $this->method = $method;
 
        return $this;
    }
 
    /**
     * Run the pipeline with a final destination callback.
     *
     * @param  \Closure  $destination
     * @return mixed
     */
    public function then(Closure $destination)
    {
        $pipeline = array_reduce(
            array_reverse($this->pipes), $this->carry(), $this->prepareDestination($destination)
        );
 
        return $pipeline($this->passable);
    }
 
    /**
     * Run the pipeline and return the result.
     *
     * @return mixed
     */
    public function thenReturn()
    {
        return $this->then(function ($passable) {
            return $passable;
        });
    }
 
    /**
     * Get the final piece of the Closure onion.
     *
     * @param  \Closure  $destination
     * @return \Closure
     */
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php
    }
 
    /**
     * Send the given request through the middleware / router.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    protected function sendRequestThroughRouter($request)
    {
        $this->app->instance('request', $request);
 
        Facade::clearResolvedInstance('request');
 
        $this->bootstrap();
 
        return (new Pipeline($this->app))
                    ->send($request)
                    ->through($this->app->shouldSkipMiddleware() ? [] : $this->middleware)
                    ->then($this->dispatchToRouter());
    }
 
    /**
     * Bootstrap the application for HTTP requests.
     *
     * @return void
     */
    public function bootstrap()
    {
        if (! $this->app->hasBeenBootstrapped()) {
            $this->app->bootstrapWith($this->bootstrappers());
        }
    }
 
    /**
     * Get the route dispatcher callback.
     *
     * @return \Closure
     */
    protected function dispatchToRouter()
Arguments
  1. Closure($request) {#44 …4}
    
/var/www/html/purr/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php
            $router->middlewareGroup($key, $middleware);
        }
 
        foreach ($this->routeMiddleware as $key => $middleware) {
            $router->aliasMiddleware($key, $middleware);
        }
    }
 
    /**
     * Handle an incoming HTTP request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function handle($request)
    {
        try {
            $request->enableHttpMethodParameterOverride();
 
            $response = $this->sendRequestThroughRouter($request);
        } catch (Exception $e) {
            $this->reportException($e);
 
            $response = $this->renderException($request, $e);
        } catch (Throwable $e) {
            $this->reportException($e = new FatalThrowableError($e));
 
            $response = $this->renderException($request, $e);
        }
 
        $this->app['events']->dispatch(
            new Events\RequestHandled($request, $response)
        );
 
        return $response;
    }
 
    /**
     * Send the given request through the middleware / router.
     *
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/var/www/html/purr/public/index.php
*/
 
$app = require_once __DIR__.'/../bootstrap/app.php';
 
/*
|--------------------------------------------------------------------------
| Run The Application
|--------------------------------------------------------------------------
|
| Once we have the application, we can handle the incoming request
| through the kernel, and send the associated response back to
| the client's browser allowing them to enjoy the creative
| and wonderful application we have prepared for them.
|
*/
 
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
 
$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);
 
$response->send();
 
$kernel->terminate($request, $response);
 
Arguments
  1. Request {#43
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#209 …5}
      #routeResolver: Closure() {#211 …5}
      +attributes: ParameterBag {#45}
      +request: ParameterBag {#51}
      +query: ParameterBag {#51}
      +server: ServerBag {#47}
      +files: FileBag {#48}
      +cookies: ParameterBag {#46}
      +headers: HeaderBag {#49}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/registry"
      #requestUri: "/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Store {#265}
      #locale: null
      #defaultLocale: "en"
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    

Environment & details:

Key Value
subject
array:3 [
  1 => "Botany"
  2 => "Sorghum"
  3 => "Plant Pathology"
]
page
"1"
type
array:1 [
  0 => "dataset"
]
date
array:1 [
  0 => "2020"
]
empty
empty
empty
empty
Key Value
USER
"www-data"
HOME
"/var/www"
HTTP_HOST
"purr.lib.purdue.edu"
HTTP_USER_AGENT
"claudebot"
HTTP_ACCEPT
"*/*"
REDIRECT_STATUS
"200"
SERVER_NAME
"purr.lib.purdue.edu"
SERVER_PORT
"443"
SERVER_ADDR
"128.210.126.113"
REMOTE_PORT
"39600"
REMOTE_ADDR
"34.205.246.61"
SERVER_SOFTWARE
"nginx/1.14.0"
GATEWAY_INTERFACE
"CGI/1.1"
HTTPS
"on"
REQUEST_SCHEME
"https"
SERVER_PROTOCOL
"HTTP/1.1"
DOCUMENT_ROOT
"/var/www/html/purr/public"
DOCUMENT_URI
"/index.php"
REQUEST_URI
"/registry?subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
SCRIPT_NAME
"/index.php"
CONTENT_LENGTH
""
CONTENT_TYPE
""
REQUEST_METHOD
"GET"
QUERY_STRING
"subject%5B1%5D=Botany&subject%5B2%5D=Sorghum&subject%5B3%5D=Plant%20Pathology&page=1&type%5B0%5D=dataset&date%5B0%5D=2020"
SCRIPT_FILENAME
"/var/www/html/purr/public/index.php"
FCGI_ROLE
"RESPONDER"
PHP_SELF
"/index.php"
REQUEST_TIME_FLOAT
1711623165.1538
REQUEST_TIME
1711623165
APP_NAME
"PURR"
APP_ENV
"production"
APP_KEY
"base64:JRPtO7U1nOKYSi1sT1k+0czNVvWkIf2oplAjIacN55I="
APP_DEBUG
"true"
APP_URL
"https://purr.lib.purdue.edu"
LOG_CHANNEL
"stack"
DB_CONNECTION
"mysql"
DB_HOST
"127.0.0.1"
DB_PORT
"3306"
DB_DATABASE
"homestead"
DB_USERNAME
"homestead"
DB_PASSWORD
"secret"
BROADCAST_DRIVER
"log"
CACHE_DRIVER
"file"
QUEUE_CONNECTION
"sync"
SESSION_DRIVER
"file"
SESSION_LIFETIME
"120"
REDIS_HOST
"127.0.0.1"
REDIS_PASSWORD
"null"
REDIS_PORT
"6379"
MAIL_DRIVER
"smtp"
MAIL_HOST
"libmail.lib.purdue.edu"
MAIL_PORT
"25"
MAIL_USERNAME
"null"
MAIL_PASSWORD
"null"
MAIL_ENCRYPTION
"null"
MAIL_FROM_ADDRESS
"purr@purdue.edu"
MAIL_FROM_NAME
"PURR_Registry"
AWS_ACCESS_KEY_ID
""
AWS_SECRET_ACCESS_KEY
""
AWS_DEFAULT_REGION
"us-east-1"
AWS_BUCKET
""
PUSHER_APP_ID
""
PUSHER_APP_KEY
""
PUSHER_APP_SECRET
""
PUSHER_APP_CLUSTER
"mt1"
MIX_PUSHER_APP_KEY
""
MIX_PUSHER_APP_CLUSTER
"mt1"
ELASTICSEARCH_HOST
"lib-es.lib.purdue.edu"
ELASTICSEARCH_PORT
"9200"
ELASTICSEARCH_SCHEME
"https"
ELASTICSEARCH_USER
""
ELASTICSEARCH_PASS
""
PRODCUTION_DOI_SERVICE_CREDENTIAL
"PURDUE.PURDUELIB:#BoilerLib1869!#"
DEV_DOI_SERVICE_CREDENTIAL
"PURDUE.DDCC:Purduedatacite2018"
Key Value
APP_NAME
"PURR"
APP_ENV
"production"
APP_KEY
"base64:JRPtO7U1nOKYSi1sT1k+0czNVvWkIf2oplAjIacN55I="
APP_DEBUG
"true"
APP_URL
"https://purr.lib.purdue.edu"
LOG_CHANNEL
"stack"
DB_CONNECTION
"mysql"
DB_HOST
"127.0.0.1"
DB_PORT
"3306"
DB_DATABASE
"homestead"
DB_USERNAME
"homestead"
DB_PASSWORD
"secret"
BROADCAST_DRIVER
"log"
CACHE_DRIVER
"file"
QUEUE_CONNECTION
"sync"
SESSION_DRIVER
"file"
SESSION_LIFETIME
"120"
REDIS_HOST
"127.0.0.1"
REDIS_PASSWORD
"null"
REDIS_PORT
"6379"
MAIL_DRIVER
"smtp"
MAIL_HOST
"libmail.lib.purdue.edu"
MAIL_PORT
"25"
MAIL_USERNAME
"null"
MAIL_PASSWORD
"null"
MAIL_ENCRYPTION
"null"
MAIL_FROM_ADDRESS
"purr@purdue.edu"
MAIL_FROM_NAME
"PURR_Registry"
AWS_ACCESS_KEY_ID
""
AWS_SECRET_ACCESS_KEY
""
AWS_DEFAULT_REGION
"us-east-1"
AWS_BUCKET
""
PUSHER_APP_ID
""
PUSHER_APP_KEY
""
PUSHER_APP_SECRET
""
PUSHER_APP_CLUSTER
"mt1"
MIX_PUSHER_APP_KEY
""
MIX_PUSHER_APP_CLUSTER
"mt1"
ELASTICSEARCH_HOST
"lib-es.lib.purdue.edu"
ELASTICSEARCH_PORT
"9200"
ELASTICSEARCH_SCHEME
"https"
ELASTICSEARCH_USER
""
ELASTICSEARCH_PASS
""
PRODCUTION_DOI_SERVICE_CREDENTIAL
"PURDUE.PURDUELIB:#BoilerLib1869!#"
DEV_DOI_SERVICE_CREDENTIAL
"PURDUE.DDCC:Purduedatacite2018"
0. Whoops\Handler\PrettyPageHandler