/home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Database/Connection.php
                  
                         * @param  array     $bindings
     * @param  \Closure  $callback
     * @return mixed
     *
     * @throws \Illuminate\Database\QueryException
     */
    protected function runQueryCallback($query, $bindings, Closure $callback)
    {
        // To execute the statement, we'll simply call the callback, which will actually
        // run the SQL against the PDO connection. Then we can calculate the time it
        // took to execute and log the query SQL, bindings and time in our memory.
        try {
            $result = $callback($query, $bindings);
        }
 
        // If an exception occurs when attempting to run a query, we'll format the error
        // message to include the bindings with SQL, which will make this exception a
        // lot more helpful to the developer instead of just the database's errors.
        catch (Exception $e) {
            throw new QueryException(
                $query, $this->prepareBindings($bindings), $e
            );
        }
 
        return $result;
    }
 
    /**
     * Log a query in the connection's query log.
     *
     * @param  string  $query
     * @param  array   $bindings
     * @param  float|null  $time
     * @return void
     */
    public function logQuery($query, $bindings, $time = null)
    {
        $this->event(new QueryExecuted($query, $bindings, $time, $this));
 
        if ($this->loggingQueries) {
                  
                          
              Arguments
          
          
              "SQLSTATE[HY000] [2002] Connection refused (SQL: select * from `roles`)"
           
        
                
       
            
        
                                [internal]
                  
                
                          
              Arguments
          
          
              App\Providers\AuthServiceProvider {#133}
29
           
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php
                  
                                );
        }
    }
 
    /**
     * Create a new PDO connection instance.
     *
     * @param  string  $dsn
     * @param  string  $username
     * @param  string  $password
     * @param  array  $options
     * @return \PDO
     */
    protected function createPdoConnection($dsn, $username, $password, $options)
    {
        if (class_exists(PDOConnection::class) && ! $this->isPersistentConnection($options)) {
            return new PDOConnection($dsn, $username, $password, $options);
        }
 
        return new PDO($dsn, $username, $password, $options);
    }
 
    /**
     * Determine if the connection is persistent.
     *
     * @param  array  $options
     * @return bool
     */
    protected function isPersistentConnection($options)
    {
        return isset($options[PDO::ATTR_PERSISTENT]) &&
               $options[PDO::ATTR_PERSISTENT];
    }
 
    /**
     * Handle an exception that occurred during connect execution.
     *
     * @param  \Throwable  $e
     * @param  string  $dsn
     * @param  string  $username
                  
                          
              Arguments
          
          
              "SQLSTATE[HY000] [2002] Connection refused"
           
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php
                  
                                );
        }
    }
 
    /**
     * Create a new PDO connection instance.
     *
     * @param  string  $dsn
     * @param  string  $username
     * @param  string  $password
     * @param  array  $options
     * @return \PDO
     */
    protected function createPdoConnection($dsn, $username, $password, $options)
    {
        if (class_exists(PDOConnection::class) && ! $this->isPersistentConnection($options)) {
            return new PDOConnection($dsn, $username, $password, $options);
        }
 
        return new PDO($dsn, $username, $password, $options);
    }
 
    /**
     * Determine if the connection is persistent.
     *
     * @param  array  $options
     * @return bool
     */
    protected function isPersistentConnection($options)
    {
        return isset($options[PDO::ATTR_PERSISTENT]) &&
               $options[PDO::ATTR_PERSISTENT];
    }
 
    /**
     * Handle an exception that occurred during connect execution.
     *
     * @param  \Throwable  $e
     * @param  string  $dsn
     * @param  string  $username
                  
                          
              Arguments
          
          
              "mysql:host=127.0.0.1;port=3306;dbname=iranrasm_db"
"iranrasm_user"
"ga~%54Uhk4YT"
array:5 [
  8 => 0
  3 => 2
  11 => 0
  17 => false
  20 => false
]
           
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php
                  
                     
    /**
     * Create a new PDO connection.
     *
     * @param  string  $dsn
     * @param  array   $config
     * @param  array   $options
     * @return \PDO
     *
     * @throws \Exception
     */
    public function createConnection($dsn, array $config, array $options)
    {
        [$username, $password] = [
            $config['username'] ?? null, $config['password'] ?? null,
        ];
 
        try {
            return $this->createPdoConnection(
                $dsn, $username, $password, $options
            );
        } catch (Exception $e) {
            return $this->tryAgainIfCausedByLostConnection(
                $e, $dsn, $username, $password, $options
            );
        }
    }
 
    /**
     * Create a new PDO connection instance.
     *
     * @param  string  $dsn
     * @param  string  $username
     * @param  string  $password
     * @param  array  $options
     * @return \PDO
     */
    protected function createPdoConnection($dsn, $username, $password, $options)
    {
        if (class_exists(PDOConnection::class) && ! $this->isPersistentConnection($options)) {
                  
                          
              Arguments
          
          
              "mysql:host=127.0.0.1;port=3306;dbname=iranrasm_db"
"iranrasm_user"
"ga~%54Uhk4YT"
array:5 [
  8 => 0
  3 => 2
  11 => 0
  17 => false
  20 => false
]
           
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php
                  
                    use PDO;
 
class MySqlConnector extends Connector implements ConnectorInterface
{
    /**
     * Establish a database connection.
     *
     * @param  array  $config
     * @return \PDO
     */
    public function connect(array $config)
    {
        $dsn = $this->getDsn($config);
 
        $options = $this->getOptions($config);
 
        // We need to grab the PDO options that should be used while making the brand
        // new connection instance. The PDO options control various aspects of the
        // connection's behavior, and some might be specified by the developers.
        $connection = $this->createConnection($dsn, $config, $options);
 
        if (! empty($config['database'])) {
            $connection->exec("use `{$config['database']}`;");
        }
 
        $this->configureEncoding($connection, $config);
 
        // Next, we will check to see if a timezone has been specified in this config
        // and if it has we will issue a statement to modify the timezone with the
        // database. Setting this DB timezone is an optional configuration item.
        $this->configureTimezone($connection, $config);
 
        $this->setModes($connection, $config);
 
        return $connection;
    }
 
    /**
     * Set the connection character set and collation.
     *
                  
                          
              Arguments
          
          
              "mysql:host=127.0.0.1;port=3306;dbname=iranrasm_db"
array:14 [
  "driver" => "mysql"
  "host" => "127.0.0.1"
  "port" => "3306"
  "database" => "iranrasm_db"
  "username" => "iranrasm_user"
  "password" => "ga~%54Uhk4YT"
  "unix_socket" => ""
  "charset" => "utf8mb4"
  "collation" => "utf8mb4_unicode_ci"
  "prefix" => ""
  "prefix_indexes" => true
  "strict" => true
  "engine" => null
  "name" => "mysql"
]
array:5 [
  8 => 0
  3 => 2
  11 => 0
  17 => false
  20 => false
]
           
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php
                  
                        {
        return array_key_exists('host', $config)
                            ? $this->createPdoResolverWithHosts($config)
                            : $this->createPdoResolverWithoutHosts($config);
    }
 
    /**
     * Create a new Closure that resolves to a PDO instance with a specific host or an array of hosts.
     *
     * @param  array  $config
     * @return \Closure
     */
    protected function createPdoResolverWithHosts(array $config)
    {
        return function () use ($config) {
            foreach (Arr::shuffle($hosts = $this->parseHosts($config)) as $key => $host) {
                $config['host'] = $host;
 
                try {
                    return $this->createConnector($config)->connect($config);
                } catch (PDOException $e) {
                    continue;
                }
            }
 
            throw $e;
        };
    }
 
    /**
     * Parse the hosts configuration item into an array.
     *
     * @param  array  $config
     * @return array
     */
    protected function parseHosts(array $config)
    {
        $hosts = Arr::wrap($config['host']);
 
        if (empty($hosts)) {
                  
                          
              Arguments
          
          
              array:14 [
  "driver" => "mysql"
  "host" => "127.0.0.1"
  "port" => "3306"
  "database" => "iranrasm_db"
  "username" => "iranrasm_user"
  "password" => "ga~%54Uhk4YT"
  "unix_socket" => ""
  "charset" => "utf8mb4"
  "collation" => "utf8mb4_unicode_ci"
  "prefix" => ""
  "prefix_indexes" => true
  "strict" => true
  "engine" => null
  "name" => "mysql"
]
           
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Database/Connection.php
                  
                     
            $this->doctrineConnection = new DoctrineConnection([
                'pdo' => $this->getPdo(),
                'dbname' => $this->getConfig('database'),
                'driver' => $driver->getName(),
            ], $driver);
        }
 
        return $this->doctrineConnection;
    }
 
    /**
     * Get the current PDO connection.
     *
     * @return \PDO
     */
    public function getPdo()
    {
        if ($this->pdo instanceof Closure) {
            return $this->pdo = call_user_func($this->pdo);
        }
 
        return $this->pdo;
    }
 
    /**
     * Get the current PDO connection used for reading.
     *
     * @return \PDO
     */
    public function getReadPdo()
    {
        if ($this->transactions > 0) {
            return $this->getPdo();
        }
 
        if ($this->recordsModified && $this->getConfig('sticky')) {
            return $this->getPdo();
        }
 
                  
                
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Database/Connection.php
                  
                     
            $this->doctrineConnection = new DoctrineConnection([
                'pdo' => $this->getPdo(),
                'dbname' => $this->getConfig('database'),
                'driver' => $driver->getName(),
            ], $driver);
        }
 
        return $this->doctrineConnection;
    }
 
    /**
     * Get the current PDO connection.
     *
     * @return \PDO
     */
    public function getPdo()
    {
        if ($this->pdo instanceof Closure) {
            return $this->pdo = call_user_func($this->pdo);
        }
 
        return $this->pdo;
    }
 
    /**
     * Get the current PDO connection used for reading.
     *
     * @return \PDO
     */
    public function getReadPdo()
    {
        if ($this->transactions > 0) {
            return $this->getPdo();
        }
 
        if ($this->recordsModified && $this->getConfig('sticky')) {
            return $this->getPdo();
        }
 
                  
                          
              Arguments
          
          
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Database/Connection.php
                  
                        /**
     * Get the current PDO connection used for reading.
     *
     * @return \PDO
     */
    public function getReadPdo()
    {
        if ($this->transactions > 0) {
            return $this->getPdo();
        }
 
        if ($this->recordsModified && $this->getConfig('sticky')) {
            return $this->getPdo();
        }
 
        if ($this->readPdo instanceof Closure) {
            return $this->readPdo = call_user_func($this->readPdo);
        }
 
        return $this->readPdo ?: $this->getPdo();
    }
 
    /**
     * Set the PDO connection.
     *
     * @param  \PDO|\Closure|null  $pdo
     * @return $this
     */
    public function setPdo($pdo)
    {
        $this->transactions = 0;
 
        $this->pdo = $pdo;
 
        return $this;
    }
 
    /**
     * Set the PDO connection used for reading.
     *
                  
                
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Database/Connection.php
                  
                        protected function prepared(PDOStatement $statement)
    {
        $statement->setFetchMode($this->fetchMode);
 
        $this->event(new Events\StatementPrepared(
            $this, $statement
        ));
 
        return $statement;
    }
 
    /**
     * Get the PDO connection to use for a select query.
     *
     * @param  bool  $useReadPdo
     * @return \PDO
     */
    protected function getPdoForSelect($useReadPdo = true)
    {
        return $useReadPdo ? $this->getReadPdo() : $this->getPdo();
    }
 
    /**
     * Run an insert statement against the database.
     *
     * @param  string  $query
     * @param  array   $bindings
     * @return bool
     */
    public function insert($query, $bindings = [])
    {
        return $this->statement($query, $bindings);
    }
 
    /**
     * Run an update statement against the database.
     *
     * @param  string  $query
     * @param  array   $bindings
     * @return int
                  
                
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Database/Connection.php
                  
                     
    /**
     * Run a select statement against the database.
     *
     * @param  string  $query
     * @param  array  $bindings
     * @param  bool  $useReadPdo
     * @return array
     */
    public function select($query, $bindings = [], $useReadPdo = true)
    {
        return $this->run($query, $bindings, function ($query, $bindings) use ($useReadPdo) {
            if ($this->pretending()) {
                return [];
            }
 
            // For select statements, we'll simply execute the query and return an array
            // of the database result set. Each element in the array will be a single
            // row from the database table, and will either be an array or objects.
            $statement = $this->prepared($this->getPdoForSelect($useReadPdo)
                              ->prepare($query));
 
            $this->bindValues($statement, $this->prepareBindings($bindings));
 
            $statement->execute();
 
            return $statement->fetchAll();
        });
    }
 
    /**
     * Run a select statement against the database and returns a generator.
     *
     * @param  string  $query
     * @param  array  $bindings
     * @param  bool  $useReadPdo
     * @return \Generator
     */
    public function cursor($query, $bindings = [], $useReadPdo = true)
    {
                  
                          
              Arguments
          
          
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Database/Connection.php
                  
                            return $result;
    }
 
    /**
     * Run a SQL statement.
     *
     * @param  string    $query
     * @param  array     $bindings
     * @param  \Closure  $callback
     * @return mixed
     *
     * @throws \Illuminate\Database\QueryException
     */
    protected function runQueryCallback($query, $bindings, Closure $callback)
    {
        // To execute the statement, we'll simply call the callback, which will actually
        // run the SQL against the PDO connection. Then we can calculate the time it
        // took to execute and log the query SQL, bindings and time in our memory.
        try {
            $result = $callback($query, $bindings);
        }
 
        // If an exception occurs when attempting to run a query, we'll format the error
        // message to include the bindings with SQL, which will make this exception a
        // lot more helpful to the developer instead of just the database's errors.
        catch (Exception $e) {
            throw new QueryException(
                $query, $this->prepareBindings($bindings), $e
            );
        }
 
        return $result;
    }
 
    /**
     * Log a query in the connection's query log.
     *
     * @param  string  $query
     * @param  array   $bindings
     * @param  float|null  $time
                  
                          
              Arguments
          
          
              "select * from `roles`"
[]
           
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Database/Connection.php
                  
                         * Run a SQL statement and log its execution context.
     *
     * @param  string    $query
     * @param  array     $bindings
     * @param  \Closure  $callback
     * @return mixed
     *
     * @throws \Illuminate\Database\QueryException
     */
    protected function run($query, $bindings, Closure $callback)
    {
        $this->reconnectIfMissingConnection();
 
        $start = microtime(true);
 
        // Here we will run this query. If an exception occurs we'll determine if it was
        // caused by a connection that has been lost. If that is the cause, we'll try
        // to re-establish connection and re-run the query with a fresh connection.
        try {
            $result = $this->runQueryCallback($query, $bindings, $callback);
        } catch (QueryException $e) {
            $result = $this->handleQueryException(
                $e, $query, $bindings, $callback
            );
        }
 
        // Once we have run the query we will calculate the time that it took to run and
        // then log the query, bindings, and execution time so we will report them on
        // the event that the developer needs them. We'll log time in milliseconds.
        $this->logQuery(
            $query, $bindings, $this->getElapsedTime($start)
        );
 
        return $result;
    }
 
    /**
     * Run a SQL statement.
     *
     * @param  string    $query
                  
                          
              Arguments
          
          
              "select * from `roles`"
[]
Closure($query, $bindings) {#188 …4}
           
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Database/Connection.php
                  
                         */
    public function select($query, $bindings = [], $useReadPdo = true)
    {
        return $this->run($query, $bindings, function ($query, $bindings) use ($useReadPdo) {
            if ($this->pretending()) {
                return [];
            }
 
            // For select statements, we'll simply execute the query and return an array
            // of the database result set. Each element in the array will be a single
            // row from the database table, and will either be an array or objects.
            $statement = $this->prepared($this->getPdoForSelect($useReadPdo)
                              ->prepare($query));
 
            $this->bindValues($statement, $this->prepareBindings($bindings));
 
            $statement->execute();
 
            return $statement->fetchAll();
        });
    }
 
    /**
     * Run a select statement against the database and returns a generator.
     *
     * @param  string  $query
     * @param  array  $bindings
     * @param  bool  $useReadPdo
     * @return \Generator
     */
    public function cursor($query, $bindings = [], $useReadPdo = true)
    {
        $statement = $this->run($query, $bindings, function ($query, $bindings) use ($useReadPdo) {
            if ($this->pretending()) {
                return [];
            }
 
            // First we will create a statement for the query. Then, we will set the fetch
            // mode and prepare the bindings for the query. Once that's done we will be
            // ready to execute the query against the database and return the cursor.
                  
                          
              Arguments
          
          
              "select * from `roles`"
[]
Closure($query, $bindings) {#188 …4}
           
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php
                  
                         *
     * @param  array  $columns
     * @return \Illuminate\Support\Collection
     */
    public function get($columns = ['*'])
    {
        return collect($this->onceWithColumns($columns, function () {
            return $this->processor->processSelect($this, $this->runSelect());
        }));
    }
 
    /**
     * Run the query as a "select" statement against the connection.
     *
     * @return array
     */
    protected function runSelect()
    {
        return $this->connection->select(
            $this->toSql(), $this->getBindings(), ! $this->useWritePdo
        );
    }
 
    /**
     * Paginate the given query into a simple paginator.
     *
     * @param  int  $perPage
     * @param  array  $columns
     * @param  string  $pageName
     * @param  int|null  $page
     * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
     */
    public function paginate($perPage = 15, $columns = ['*'], $pageName = 'page', $page = null)
    {
        $page = $page ?: Paginator::resolveCurrentPage($pageName);
 
        $total = $this->getCountForPagination($columns);
 
        $results = $total ? $this->forPage($page, $perPage)->get($columns) : collect();
 
                  
                          
              Arguments
          
          
              "select * from `roles`"
[]
true
           
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php
                  
                         * @param  string  $column
     * @return mixed
     */
    public function value($column)
    {
        $result = (array) $this->first([$column]);
 
        return count($result) > 0 ? reset($result) : null;
    }
 
    /**
     * Execute the query as a "select" statement.
     *
     * @param  array  $columns
     * @return \Illuminate\Support\Collection
     */
    public function get($columns = ['*'])
    {
        return collect($this->onceWithColumns($columns, function () {
            return $this->processor->processSelect($this, $this->runSelect());
        }));
    }
 
    /**
     * Run the query as a "select" statement against the connection.
     *
     * @return array
     */
    protected function runSelect()
    {
        return $this->connection->select(
            $this->toSql(), $this->getBindings(), ! $this->useWritePdo
        );
    }
 
    /**
     * Paginate the given query into a simple paginator.
     *
     * @param  int  $perPage
     * @param  array  $columns
                  
                
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php
                  
                        }
 
    /**
     * Execute the given callback while selecting the given columns.
     *
     * After running the callback, the columns are reset to the original value.
     *
     * @param  array  $columns
     * @param  callable  $callback
     * @return mixed
     */
    protected function onceWithColumns($columns, $callback)
    {
        $original = $this->columns;
 
        if (is_null($original)) {
            $this->columns = $columns;
        }
 
        $result = $callback();
 
        $this->columns = $original;
 
        return $result;
    }
 
    /**
     * Insert a new record into the database.
     *
     * @param  array  $values
     * @return bool
     */
    public function insert(array $values)
    {
        // Since every insert gets treated like a batch insert, we will make sure the
        // bindings are structured in a way that is convenient when building these
        // inserts statements by verifying these elements are actually an array.
        if (empty($values)) {
            return true;
        }
                  
                
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php
                  
                         * @return mixed
     */
    public function value($column)
    {
        $result = (array) $this->first([$column]);
 
        return count($result) > 0 ? reset($result) : null;
    }
 
    /**
     * Execute the query as a "select" statement.
     *
     * @param  array  $columns
     * @return \Illuminate\Support\Collection
     */
    public function get($columns = ['*'])
    {
        return collect($this->onceWithColumns($columns, function () {
            return $this->processor->processSelect($this, $this->runSelect());
        }));
    }
 
    /**
     * Run the query as a "select" statement against the connection.
     *
     * @return array
     */
    protected function runSelect()
    {
        return $this->connection->select(
            $this->toSql(), $this->getBindings(), ! $this->useWritePdo
        );
    }
 
    /**
     * Paginate the given query into a simple paginator.
     *
     * @param  int  $perPage
     * @param  array  $columns
     * @param  string  $pageName
                  
                          
              Arguments
          
          
              array:1 [
  0 => "*"
]
Closure() {#187 …4}
           
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php
                  
                            // If we actually found models we will also eager load any relationships that
        // have been specified as needing to be eager loaded, which will solve the
        // n+1 query issue for the developers to avoid running a lot of queries.
        if (count($models = $builder->getModels($columns)) > 0) {
            $models = $builder->eagerLoadRelations($models);
        }
 
        return $builder->getModel()->newCollection($models);
    }
 
    /**
     * Get the hydrated models without eager loading.
     *
     * @param  array  $columns
     * @return \Illuminate\Database\Eloquent\Model[]|static[]
     */
    public function getModels($columns = ['*'])
    {
        return $this->model->hydrate(
            $this->query->get($columns)->all()
        )->all();
    }
 
    /**
     * Eager load the relationships for the models.
     *
     * @param  array  $models
     * @return array
     */
    public function eagerLoadRelations(array $models)
    {
        foreach ($this->eagerLoad as $name => $constraints) {
            // For nested eager loads we'll skip loading them here and they will be set as an
            // eager load on the query to retrieve the relation so that they will be eager
            // loaded on that query, because that is where they get hydrated as models.
            if (strpos($name, '.') === false) {
                $models = $this->eagerLoadRelation($models, $name, $constraints);
            }
        }
 
                  
                          
              Arguments
          
          
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php
                  
                        {
        if ($result = $this->first([$column])) {
            return $result->{$column};
        }
    }
 
    /**
     * Execute the query as a "select" statement.
     *
     * @param  array  $columns
     * @return \Illuminate\Database\Eloquent\Collection|static[]
     */
    public function get($columns = ['*'])
    {
        $builder = $this->applyScopes();
 
        // If we actually found models we will also eager load any relationships that
        // have been specified as needing to be eager loaded, which will solve the
        // n+1 query issue for the developers to avoid running a lot of queries.
        if (count($models = $builder->getModels($columns)) > 0) {
            $models = $builder->eagerLoadRelations($models);
        }
 
        return $builder->getModel()->newCollection($models);
    }
 
    /**
     * Get the hydrated models without eager loading.
     *
     * @param  array  $columns
     * @return \Illuminate\Database\Eloquent\Model[]|static[]
     */
    public function getModels($columns = ['*'])
    {
        return $this->model->hydrate(
            $this->query->get($columns)->all()
        )->all();
    }
 
    /**
                  
                          
              Arguments
          
          
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php
                  
                         *
     * @return \Illuminate\Database\Query\Builder
     */
    public static function onWriteConnection()
    {
        $instance = new static;
 
        return $instance->newQuery()->useWritePdo();
    }
 
    /**
     * Get all of the models from the database.
     *
     * @param  array|mixed  $columns
     * @return \Illuminate\Database\Eloquent\Collection|static[]
     */
    public static function all($columns = ['*'])
    {
        return (new static)->newQuery()->get(
            is_array($columns) ? $columns : func_get_args()
        );
    }
 
    /**
     * Begin querying a model with eager loading.
     *
     * @param  array|string  $relations
     * @return \Illuminate\Database\Eloquent\Builder|static
     */
    public static function with($relations)
    {
        return (new static)->newQuery()->with(
            is_string($relations) ? func_get_args() : $relations
        );
    }
 
    /**
     * Eager load relations on the model.
     *
     * @param  array|string  $relations
                  
                          
              Arguments
          
          
        
                
       
            
        
                                /home/iranrasm/public_html/app/Providers/AuthServiceProvider.php
                  
                     
        Gate::define('agency', function ($user, $agency) {
            return $user->id == $agency->user_id;
        });
//        Gate::define('tour', function ($agency, $tour) {
//            return $agency->id == $tour->agency_id;
//        });
 
            foreach ($this->getRoles() as $role) {
                Gate::define($role->name, function ($user) use ($role) {
                    return $user->hasRole($role->name);
                });
            }
 
 
    }
 
    protected function getRoles()
    {
       return Role::all();
   }
}
 
                  
                
                
       
            
        
                                /home/iranrasm/public_html/app/Providers/AuthServiceProvider.php
                  
                         */
    public function boot()
    {
        $this->registerPolicies();
 
            Gate::before(function ($user, $ability) {
                if ($user->hasRole('admin')) {
                    return true;
                }
        });
 
 
        Gate::define('agency', function ($user, $agency) {
            return $user->id == $agency->user_id;
        });
//        Gate::define('tour', function ($agency, $tour) {
//            return $agency->id == $tour->agency_id;
//        });
 
            foreach ($this->getRoles() as $role) {
                Gate::define($role->name, function ($user) use ($role) {
                    return $user->hasRole($role->name);
                });
            }
 
 
    }
 
    protected function getRoles()
    {
       return Role::all();
   }
}
 
                  
                
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php
                  
                    class BoundMethod
{
    /**
     * Call the given Closure / class@method and inject its dependencies.
     *
     * @param  \Illuminate\Container\Container  $container
     * @param  callable|string  $callback
     * @param  array  $parameters
     * @param  string|null  $defaultMethod
     * @return mixed
     */
    public static function call($container, $callback, array $parameters = [], $defaultMethod = null)
    {
        if (static::isCallableWithAtSign($callback) || $defaultMethod) {
            return static::callClass($container, $callback, $parameters, $defaultMethod);
        }
 
        return static::callBoundMethod($container, $callback, function () use ($container, $callback, $parameters) {
            return call_user_func_array(
                $callback, static::getMethodDependencies($container, $callback, $parameters)
            );
        });
    }
 
    /**
     * Call a string reference to a class using Class@method syntax.
     *
     * @param  \Illuminate\Container\Container  $container
     * @param  string  $target
     * @param  array  $parameters
     * @param  string|null  $defaultMethod
     * @return mixed
     *
     * @throws \InvalidArgumentException
     */
    protected static function callClass($container, $target, array $parameters = [], $defaultMethod = null)
    {
        $segments = explode('@', $target);
 
        // We will assume an @ sign is used to delimit the class name from the method
                  
                
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php
                  
                    class BoundMethod
{
    /**
     * Call the given Closure / class@method and inject its dependencies.
     *
     * @param  \Illuminate\Container\Container  $container
     * @param  callable|string  $callback
     * @param  array  $parameters
     * @param  string|null  $defaultMethod
     * @return mixed
     */
    public static function call($container, $callback, array $parameters = [], $defaultMethod = null)
    {
        if (static::isCallableWithAtSign($callback) || $defaultMethod) {
            return static::callClass($container, $callback, $parameters, $defaultMethod);
        }
 
        return static::callBoundMethod($container, $callback, function () use ($container, $callback, $parameters) {
            return call_user_func_array(
                $callback, static::getMethodDependencies($container, $callback, $parameters)
            );
        });
    }
 
    /**
     * Call a string reference to a class using Class@method syntax.
     *
     * @param  \Illuminate\Container\Container  $container
     * @param  string  $target
     * @param  array  $parameters
     * @param  string|null  $defaultMethod
     * @return mixed
     *
     * @throws \InvalidArgumentException
     */
    protected static function callClass($container, $target, array $parameters = [], $defaultMethod = null)
    {
        $segments = explode('@', $target);
 
        // We will assume an @ sign is used to delimit the class name from the method
                  
                          
              Arguments
          
          
              array:2 [
  0 => App\Providers\AuthServiceProvider {#133}
  1 => "boot"
]
[]
           
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php
                  
                         * @param  callable  $callback
     * @param  mixed  $default
     * @return mixed
     */
    protected static function callBoundMethod($container, $callback, $default)
    {
        if (! is_array($callback)) {
            return $default instanceof Closure ? $default() : $default;
        }
 
        // Here we need to turn the array callable into a Class@method string we can use to
        // examine the container and see if there are any method bindings for this given
        // method. If there are, we can call this method binding callback immediately.
        $method = static::normalizeMethod($callback);
 
        if ($container->hasMethodBinding($method)) {
            return $container->callMethodBinding($method, $callback[0]);
        }
 
        return $default instanceof Closure ? $default() : $default;
    }
 
    /**
     * Normalize the given callback into a Class@method string.
     *
     * @param  callable  $callback
     * @return string
     */
    protected static function normalizeMethod($callback)
    {
        $class = is_string($callback[0]) ? $callback[0] : get_class($callback[0]);
 
        return "{$class}@{$callback[1]}";
    }
 
    /**
     * Get all dependencies for a given method.
     *
     * @param  \Illuminate\Container\Container  $container
     * @param  callable|string  $callback
                  
                
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php
                  
                        /**
     * Call the given Closure / class@method and inject its dependencies.
     *
     * @param  \Illuminate\Container\Container  $container
     * @param  callable|string  $callback
     * @param  array  $parameters
     * @param  string|null  $defaultMethod
     * @return mixed
     */
    public static function call($container, $callback, array $parameters = [], $defaultMethod = null)
    {
        if (static::isCallableWithAtSign($callback) || $defaultMethod) {
            return static::callClass($container, $callback, $parameters, $defaultMethod);
        }
 
        return static::callBoundMethod($container, $callback, function () use ($container, $callback, $parameters) {
            return call_user_func_array(
                $callback, static::getMethodDependencies($container, $callback, $parameters)
            );
        });
    }
 
    /**
     * Call a string reference to a class using Class@method syntax.
     *
     * @param  \Illuminate\Container\Container  $container
     * @param  string  $target
     * @param  array  $parameters
     * @param  string|null  $defaultMethod
     * @return mixed
     *
     * @throws \InvalidArgumentException
     */
    protected static function callClass($container, $target, array $parameters = [], $defaultMethod = null)
    {
        $segments = explode('@', $target);
 
        // We will assume an @ sign is used to delimit the class name from the method
        // name. We will split on this @ sign and then build a callable array that
        // we can pass right back into the "call" method for dependency binding.
                  
                          
              Arguments
          
          
              Illuminate\Foundation\Application {#2}
array:2 [
  0 => App\Providers\AuthServiceProvider {#133}
  1 => "boot"
]
Closure() {#32 …3}
           
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Container/Container.php
                  
                         * @return \Closure
     */
    public function wrap(Closure $callback, array $parameters = [])
    {
        return function () use ($callback, $parameters) {
            return $this->call($callback, $parameters);
        };
    }
 
    /**
     * Call the given Closure / class@method and inject its dependencies.
     *
     * @param  callable|string  $callback
     * @param  array  $parameters
     * @param  string|null  $defaultMethod
     * @return mixed
     */
    public function call($callback, array $parameters = [], $defaultMethod = null)
    {
        return BoundMethod::call($this, $callback, $parameters, $defaultMethod);
    }
 
    /**
     * Get a closure to resolve the given type from the container.
     *
     * @param  string  $abstract
     * @return \Closure
     */
    public function factory($abstract)
    {
        return function () use ($abstract) {
            return $this->make($abstract);
        };
    }
 
    /**
     * An alias function name for make().
     *
     * @param  string  $abstract
     * @param  array  $parameters
                  
                          
              Arguments
          
          
              Illuminate\Foundation\Application {#2}
array:2 [
  0 => App\Providers\AuthServiceProvider {#133}
  1 => "boot"
]
[]
null
           
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php
                  
                     
        array_walk($this->serviceProviders, function ($p) {
            $this->bootProvider($p);
        });
 
        $this->booted = true;
 
        $this->fireAppCallbacks($this->bootedCallbacks);
    }
 
    /**
     * Boot the given service provider.
     *
     * @param  \Illuminate\Support\ServiceProvider  $provider
     * @return mixed
     */
    protected function bootProvider(ServiceProvider $provider)
    {
        if (method_exists($provider, 'boot')) {
            return $this->call([$provider, 'boot']);
        }
    }
 
    /**
     * Register a new boot listener.
     *
     * @param  callable  $callback
     * @return void
     */
    public function booting($callback)
    {
        $this->bootingCallbacks[] = $callback;
    }
 
    /**
     * Register a new "booted" listener.
     *
     * @param  callable  $callback
     * @return void
     */
                  
                          
              Arguments
          
          
              array:2 [
  0 => App\Providers\AuthServiceProvider {#133}
  1 => "boot"
]
           
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php
                  
                        }
 
    /**
     * Boot the application's service providers.
     *
     * @return void
     */
    public function boot()
    {
        if ($this->booted) {
            return;
        }
 
        // Once the application has booted we will also fire some "booted" callbacks
        // for any listeners that need to do work after this initial booting gets
        // finished. This is useful when ordering the boot-up processes we run.
        $this->fireAppCallbacks($this->bootingCallbacks);
 
        array_walk($this->serviceProviders, function ($p) {
            $this->bootProvider($p);
        });
 
        $this->booted = true;
 
        $this->fireAppCallbacks($this->bootedCallbacks);
    }
 
    /**
     * Boot the given service provider.
     *
     * @param  \Illuminate\Support\ServiceProvider  $provider
     * @return mixed
     */
    protected function bootProvider(ServiceProvider $provider)
    {
        if (method_exists($provider, 'boot')) {
            return $this->call([$provider, 'boot']);
        }
    }
 
                  
                          
              Arguments
          
          
              App\Providers\AuthServiceProvider {#133}
           
        
                
       
            
        
                                [internal]
                  
                
                          
              Arguments
          
          
              App\Providers\AuthServiceProvider {#133}
29
           
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php
                  
                     
    /**
     * Boot the application's service providers.
     *
     * @return void
     */
    public function boot()
    {
        if ($this->booted) {
            return;
        }
 
        // Once the application has booted we will also fire some "booted" callbacks
        // for any listeners that need to do work after this initial booting gets
        // finished. This is useful when ordering the boot-up processes we run.
        $this->fireAppCallbacks($this->bootingCallbacks);
 
        array_walk($this->serviceProviders, function ($p) {
            $this->bootProvider($p);
        });
 
        $this->booted = true;
 
        $this->fireAppCallbacks($this->bootedCallbacks);
    }
 
    /**
     * Boot the given service provider.
     *
     * @param  \Illuminate\Support\ServiceProvider  $provider
     * @return mixed
     */
    protected function bootProvider(ServiceProvider $provider)
    {
        if (method_exists($provider, 'boot')) {
            return $this->call([$provider, 'boot']);
        }
    }
 
    /**
                  
                          
              Arguments
          
          
              array:34 [
  0 => Illuminate\Events\EventServiceProvider {#6}
  1 => Illuminate\Log\LogServiceProvider {#8}
  2 => Illuminate\Routing\RoutingServiceProvider {#10}
  3 => Illuminate\Auth\AuthServiceProvider {#22}
  4 => Illuminate\Cookie\CookieServiceProvider {#51}
  5 => Illuminate\Database\DatabaseServiceProvider {#53}
  6 => Illuminate\Encryption\EncryptionServiceProvider {#60}
  7 => Illuminate\Filesystem\FilesystemServiceProvider {#62}
  8 => Illuminate\Foundation\Providers\FormRequestServiceProvider {#68}
  9 => Illuminate\Foundation\Providers\FoundationServiceProvider {#67}
  10 => Illuminate\Notifications\NotificationServiceProvider {#71}
  11 => Illuminate\Pagination\PaginationServiceProvider {#73}
  12 => Illuminate\Session\SessionServiceProvider {#77}
  13 => Illuminate\View\ViewServiceProvider {#81}
  14 => BeyondCode\DumpServer\DumpServerServiceProvider {#85}
  15 => Cviebrock\EloquentSluggable\ServiceProvider {#93}
  16 => Fideloper\Proxy\TrustedProxyServiceProvider {#95}
  17 => Intervention\Image\ImageServiceProvider {#96}
  18 => Illuminate\Notifications\NexmoChannelServiceProvider {#99}
  19 => Illuminate\Notifications\SlackChannelServiceProvider {#102}
  20 => Maatwebsite\Excel\ExcelServiceProvider {#104}
  21 => Carbon\Laravel\ServiceProvider {#115}
  22 => Rap2hpoutre\FastExcel\Providers\FastExcelServiceProvider {#116}
  23 => UxWeb\SweetAlert\SweetAlertServiceProvider {#118}
  24 => Collective\Html\HtmlServiceProvider {#123}
  25 => Yajra\DataTables\HtmlServiceProvider {#122}
  26 => Yajra\DataTables\ButtonsServiceProvider {#121}
  27 => Yajra\DataTables\DataTablesServiceProvider {#128}
  28 => App\Providers\AppServiceProvider {#132}
  29 => App\Providers\AuthServiceProvider {#133}
  30 => App\Providers\EventServiceProvider {#134}
  31 => App\Providers\RouteServiceProvider {#135}
  32 => Illuminate\Translation\TranslationServiceProvider {#147}
  33 => Illuminate\Hashing\HashServiceProvider {#194}
]
Closure($p) {#30 …4}
           
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/BootProviders.php
                  
                    <?php
 
namespace Illuminate\Foundation\Bootstrap;
 
use Illuminate\Contracts\Foundation\Application;
 
class BootProviders
{
    /**
     * Bootstrap the given application.
     *
     * @param  \Illuminate\Contracts\Foundation\Application  $app
     * @return void
     */
    public function bootstrap(Application $app)
    {
        $app->boot();
    }
}
 
                  
                
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php
                  
                        {
        $this->register(new EventServiceProvider($this));
        $this->register(new LogServiceProvider($this));
        $this->register(new RoutingServiceProvider($this));
    }
 
    /**
     * Run the given array of bootstrap classes.
     *
     * @param  string[]  $bootstrappers
     * @return void
     */
    public function bootstrapWith(array $bootstrappers)
    {
        $this->hasBeenBootstrapped = true;
 
        foreach ($bootstrappers as $bootstrapper) {
            $this['events']->dispatch('bootstrapping: '.$bootstrapper, [$this]);
 
            $this->make($bootstrapper)->bootstrap($this);
 
            $this['events']->dispatch('bootstrapped: '.$bootstrapper, [$this]);
        }
    }
 
    /**
     * Register a callback to run after loading the environment.
     *
     * @param  \Closure  $callback
     * @return void
     */
    public function afterLoadingEnvironment(Closure $callback)
    {
        return $this->afterBootstrapping(
            LoadEnvironmentVariables::class, $callback
        );
    }
 
    /**
     * Register a callback to run before a bootstrapper.
                  
                          
              Arguments
          
          
              Illuminate\Foundation\Application {#2}
           
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php
                  
                     
        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()
    {
        return function ($request) {
            $this->app->instance('request', $request);
 
            return $this->router->dispatch($request);
        };
    }
 
    /**
     * Call the terminate method on any terminable middleware.
     *
                  
                          
              Arguments
          
          
              array:6 [
  0 => "Illuminate\Foundation\Bootstrap\LoadEnvironmentVariables"
  1 => "Illuminate\Foundation\Bootstrap\LoadConfiguration"
  2 => "Illuminate\Foundation\Bootstrap\HandleExceptions"
  3 => "Illuminate\Foundation\Bootstrap\RegisterFacades"
  4 => "Illuminate\Foundation\Bootstrap\RegisterProviders"
  5 => "Illuminate\Foundation\Bootstrap\BootProviders"
]
           
        
                
       
            
        
                                /home/iranrasm/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php
                  
                            $this->app['events']->dispatch(
            new Events\RequestHandled($request, $response)
        );
 
        return $response;
    }
 
    /**
     * 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());
        }
    }
 
    /**
                  
                
                
       
            
        
                                /home/iranrasm/public_html/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
          
          
              Illuminate\Http\Request {#42
  #json: null
  #convertedFiles: null
  #userResolver: null
  #routeResolver: null
  +attributes: Symfony\Component\HttpFoundation\ParameterBag {#44}
  +request: Symfony\Component\HttpFoundation\ParameterBag {#50}
  +query: Symfony\Component\HttpFoundation\ParameterBag {#50}
  +server: Symfony\Component\HttpFoundation\ServerBag {#46}
  +files: Symfony\Component\HttpFoundation\FileBag {#47}
  +cookies: Symfony\Component\HttpFoundation\ParameterBag {#45}
  +headers: Symfony\Component\HttpFoundation\HeaderBag {#48}
  #content: null
  #languages: null
  #charsets: null
  #encodings: null
  #acceptableContentTypes: array:1 [
    0 => "*/*"
  ]
  #pathInfo: null
  #requestUri: null
  #baseUrl: null
  #basePath: null
  #method: null
  #format: null
  #session: null
  #locale: null
  #defaultLocale: "en"
  -preferredFormat: null
  -isHostValid: true
  -isForwardedValid: true
  pathInfo: "/buy/index/3535"
  requestUri: "/buy/index/3535"
  baseUrl: ""
  basePath: ""
  method: "GET"
  format: "html"
}
           
        
                
       
            
        
                                /home/iranrasm/public_html/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
          
          
              Illuminate\Http\Request {#42
  #json: null
  #convertedFiles: null
  #userResolver: null
  #routeResolver: null
  +attributes: Symfony\Component\HttpFoundation\ParameterBag {#44}
  +request: Symfony\Component\HttpFoundation\ParameterBag {#50}
  +query: Symfony\Component\HttpFoundation\ParameterBag {#50}
  +server: Symfony\Component\HttpFoundation\ServerBag {#46}
  +files: Symfony\Component\HttpFoundation\FileBag {#47}
  +cookies: Symfony\Component\HttpFoundation\ParameterBag {#45}
  +headers: Symfony\Component\HttpFoundation\HeaderBag {#48}
  #content: null
  #languages: null
  #charsets: null
  #encodings: null
  #acceptableContentTypes: array:1 [
    0 => "*/*"
  ]
  #pathInfo: null
  #requestUri: null
  #baseUrl: null
  #basePath: null
  #method: null
  #format: null
  #session: null
  #locale: null
  #defaultLocale: "en"
  -preferredFormat: null
  -isHostValid: true
  -isForwardedValid: true
  pathInfo: "/buy/index/3535"
  requestUri: "/buy/index/3535"
  baseUrl: ""
  basePath: ""
  method: "GET"
  format: "html"
}