initial commit
Dev Ghai

Dev Ghai commited on 2013-09-26 06:24:15
Showing 257 changed files, with 60135 additions and 0 deletions.

... ...
@@ -0,0 +1,25 @@
1
+<?php
2
+
3
+/*
4
+ * To change this template, choose Tools | Templates
5
+ * and open the template in the editor.
6
+ */
7
+
8
+/**
9
+ * Description of AnswerObject
10
+ *
11
+ * @author dghai
12
+ */
13
+class AnswerObject
14
+{
15
+    public $id;
16
+    public $ques_id ;
17
+    public $value;
18
+    public $attachment_path;
19
+    public $comment;
20
+    public $survey_id ;
21
+    public $date;
22
+    public $sequence;
23
+}
24
+
25
+?>
... ...
@@ -0,0 +1,368 @@
1
+<?php
2
+
3
+/*
4
+ * To change this template, choose Tools | Templates
5
+ * and open the template in the editor.
6
+ */
7
+
8
+/**
9
+ * Description of BizLayer
10
+ *
11
+ * @author dghai
12
+ */
13
+require_once 'ErrorObject.php';
14
+require_once 'Dao.php';
15
+
16
+class BizLayer
17
+{
18
+    //this is needed to make sure arbitrary code is not executed.
19
+    //functionName => number_of_arguments
20
+    private $_functionRegistry;
21
+    private $_functionRegistry_arrayCalls;
22
+    private $_dao;
23
+    private $_requestObject;
24
+    
25
+    function __construct($request)
26
+    {
27
+        $this->_dao = new Dao($request);
28
+        //return error object if connection to DB failed.
29
+        if($this->_dao instanceof ErrorObject)
30
+        {
31
+            return $this->_dao;
32
+        }
33
+        
34
+        $this->_requestObject = $request;
35
+        
36
+        //values for methods will be one less here as we are adding request's
37
+        //hash value in function call for purposes of the application.
38
+        //Basically value here indicates how many values should the client pass.
39
+        $this->_functionRegistry = array
40
+                (
41
+            "IsAuthorizedUser"      => 3,
42
+            "GetQuestions"          => 1,
43
+            "GetAges"               => 0,
44
+            "GetWeights"            => 0,
45
+            "SetNewUserInfo"        => 3,
46
+            "IsUsernameAvailable"   => 1,
47
+            "UpdateUserInfo"        => 11,
48
+            "GetCarModel"           => 2,
49
+            "GetPreviousAnswers"    => 1,
50
+            "SetNewSurvey"          => 3,
51
+            "SetEndSurvey"          => 1,
52
+            "ResetPassword"         => 1,
53
+            "ChangePassword"        => 3,
54
+            "GetBadges"             => 1,
55
+            "SetBadges"             => 2,
56
+            
57
+                );
58
+        
59
+        $this->_functionRegistry_arrayCalls = array
60
+                (
61
+            "SetAnswers"            => 'answersArray',
62
+                );
63
+    }
64
+    
65
+//    private function GetSurveysForUser($loginId)
66
+//    {
67
+//        $allSurveys = $this->_dao->GetSurveysForUser($loginId);
68
+//        if(!is_array($allSurveys))
69
+//        {
70
+//            //if this is not an array, then it simply means its an error. return that.
71
+//            return $allSurveys;
72
+//        }
73
+//        //send only 3 latest surveys of the surveys that the user has already taken
74
+//        $numTakenSurveys = 0;
75
+//        $surveys = array();
76
+//        foreach ($allSurveys as $key=>$value)
77
+//        {
78
+//            if($value->survey_id > 0 && $numTakenSurveys < 3)
79
+//            {
80
+//                array_push ($surveys, $value);
81
+//                $numTakenSurveys++;
82
+//            }
83
+//            else if($value->survey_id == -1)
84
+//                array_push ($surveys, $value);
85
+//        }
86
+//        return $surveys;
87
+//    }
88
+    
89
+    function IsAuthorizedUser($hash, $username, $isAdmin, $password)
90
+    {
91
+        $retval = $this->_dao->IsUserAuthorized($username, $password, $isAdmin);
92
+        if(!($retval instanceof Users))
93
+        {
94
+            //check if the user is admin
95
+            $retval = $this->_dao->IsUserAdmin($username, $password);
96
+            $_SESSION[$hash] = $retval;
97
+            return;
98
+        }
99
+        $badges = $this->_dao->GetBadges($username);
100
+        //suppress error when retrieving badges. 
101
+        //Client wont be checking for nested server errors.
102
+        $retval->badges = $badges instanceof ErrorObject ? array() : $badges;
103
+        
104
+        //same for surveys that a user has
105
+        $surveys = $this->_dao->GetSurveysForUser($username);
106
+        $retval->surveys = $surveys instanceof ErrorObject ? array() : $surveys;
107
+        $_SESSION[$hash] = $retval;
108
+    }
109
+    
110
+    function ChangePassword($hash, $username,  $newPassword,  $oldPassword)
111
+    {
112
+        require_once 'DbTables.php';
113
+        $authorizedUser = $this->_dao->IsUserAuthorized($username, $oldPassword, false);
114
+        if($authorizedUser instanceof Users)
115
+        {
116
+            $_SESSION[$hash] = $this->_dao->SetNewPassword($username, $newPassword);
117
+            return;
118
+        }
119
+        
120
+        $_SESSION[$hash] = $authorizedUser;
121
+    }
122
+    
123
+    public function GetQuestions($hash, $surveyId)
124
+    {
125
+        $retval = $this->_dao->GetSurveyQuestions($surveyId);
126
+        $_SESSION[$hash] = $retval;
127
+    }
128
+    
129
+    public function SetAnswers($hash, array $answersArray)
130
+    {
131
+        $retval = $this->_dao->SetAnswers($answersArray);
132
+        $_SESSION[$hash] = $retval;
133
+    }
134
+    
135
+    public function GetAges($hash)
136
+    {
137
+        $retval = $this->_dao->GetAgeRanges();
138
+        $arrayAges = array();
139
+        foreach($retval as $key=>$value)
140
+        {
141
+            $arrayAges []= $value->age_from.' to '.$value->age_to;
142
+        }
143
+        $_SESSION[$hash] = $arrayAges;
144
+    }
145
+    
146
+    public function GetWeights($hash)
147
+    {
148
+        $retval = $this->_dao->GetWeightRanges();
149
+        $arrayWeights = array();
150
+        foreach($retval as $key=>$value)
151
+        {
152
+            $arrayWeights []= $value->weight_from.' to '.$value->weight_to;
153
+        }
154
+        $_SESSION[$hash] = $arrayWeights;
155
+    }
156
+    
157
+    public function IsUsernameAvailable($hash, $username)
158
+    {
159
+        $retval = $this->_dao->IsUsernameAvailable($username);
160
+        $_SESSION[$hash] = $retval;
161
+    }
162
+
163
+    public function SetNewUserInfo($hash, $username, $email, $password)
164
+    {
165
+        $_SESSION[$hash] = $this->_dao->SetNewUserInfo($username, $password, $email);
166
+    }
167
+    
168
+    public function UpdateUserInfo($hash, $sittingHeight, $weightRange, 
169
+            $upperLegLength, $shirtSize, $gender, $zip, $email, $ageRange, 
170
+            $height, $shoeSize, $userid)
171
+    {
172
+        $_SESSION[$hash] = $this->_dao->UpdateUserInfo(
173
+                                                        $userid, 
174
+                                                        $email, 
175
+                                                        $zip, 
176
+                                                        $height, 
177
+                                                        $sittingHeight, 
178
+                                                        $upperLegLength, 
179
+                                                        $weightRange, 
180
+                                                        $ageRange, 
181
+                                                        $gender, 
182
+                                                        $shirtSize, 
183
+                                                        $shoeSize
184
+                                                      );
185
+    }
186
+
187
+    function GetCarModel($hash, $year, $make)
188
+    {
189
+        $_SESSION[$hash] = $this->_dao->GetCarModel($make, $year);
190
+    }
191
+    
192
+    function GetPreviousAnswers($hash, $activeSurveyId)
193
+    {
194
+        $_SESSION[$hash] = $this->_dao->GetPreviousAnswers($activeSurveyId);
195
+    }
196
+
197
+    function SetNewSurvey($hash, $vehicleId, $questionSet_id, $userId)
198
+    {
199
+        $_SESSION[$hash] = $this->_dao->SetNewSurvey($vehicleId, $questionSet_id, $userId);
200
+    }
201
+    
202
+    private function SetEndSurvey($surveyId)
203
+    {
204
+        $_SESSION[$hash] = $this->_dao->SetEndSurvey($surveyId);
205
+    }
206
+    
207
+    private function GeneratePassword()
208
+    {
209
+        $newPassLength = rand(5, 10);
210
+        $newPass = '';
211
+        for($i = 0; $i<$newPassLength; $i++)
212
+        {
213
+            $newPass = $newPass.chr(rand(97, 122));
214
+        }
215
+        return $newPass;
216
+    }
217
+    
218
+    private function EmailNewPassword($username, $toEmailId, $newPassword)
219
+    {
220
+        //from dataendpoint.php
221
+        global $config;
222
+        $webmaster_email = $config->GetWebmasterEmail();
223
+        $htmlEmail = strtr($config->GetResetPasswordEmailTemplate() , array(
224
+                            '{username}'        => $username,
225
+                            '{password}'        => $newPassword,
226
+                            '{webmaster_email}' => $webmaster_email,
227
+                        )
228
+                      );
229
+        $plaintextEmail = strtr($config->GetResetPasswordEmailPlaintextTemplate() , array(
230
+                            '{username}'        => $username,
231
+                            '{password}'        => $newPassword,
232
+                            '{webmaster_email}' => $webmaster_email,
233
+                        )
234
+                      );
235
+                
236
+        require_once 'Base/src/ezc_bootstrap.php';
237
+        // Create a new mail composer object
238
+        $mail = new ezcMailComposer();
239
+        // Specify the "from" mail address
240
+        $mail->from = new ezcMailAddress( $config->GetWebmasterEmail(), $config->GetWebmasterName() );
241
+        // Add one "to" mail address (multiple can be added)
242
+        $mail->addTo( new ezcMailAddress( $toEmailId, 'Guest' ) );
243
+        // Specify the subject of the mail
244
+        $mail->subject = $config->GetResetPasswordEmailSubject();
245
+        // Specify the body text of the mail
246
+        $mail->plainText = $plaintextEmail;
247
+        $mail->htmlText = $htmlEmail;
248
+        // Generate the mail
249
+        $mail->build();
250
+        // Create a new SMTP transport object with an SSLv3 connection.
251
+        // The port will be 465 by default, use the 4th argument to change it.
252
+        // Username and password (2nd and 3rd arguments) are left blank, which means
253
+        // the mail host does not need authentication.
254
+        // The 5th parameter is the $options object which specifies a SSLV3 connection
255
+        // (default is ezcMailSmtpTransport::CONNECTION_PLAIN).
256
+        $options = new ezcMailSmtpTransportOptions();
257
+        $options->connectionType = ezcMailSmtpTransport::CONNECTION_SSLV3;
258
+        $transport = new ezcMailSmtpTransport( $config->GetSMTPServer(),
259
+                                               $config->GetSMTPUsername(), 
260
+                                               $config->GetSMTPPassword(), 
261
+                                               $config->GetSMTPPort(), 
262
+                                               $options );
263
+        // The option can also be specified via the option property:
264
+        $transport->options->connectionType = ezcMailSmtpTransport::CONNECTION_SSLV3;
265
+        // Use the SMTP transport to send the created mail object
266
+        try
267
+        {
268
+            $transport->send( $mail );
269
+            return true;
270
+        }
271
+        catch (ezcMailTransportException $e)
272
+        {
273
+            return false;
274
+        }
275
+    }
276
+
277
+    public function ResetPassword($hash, $loginId)
278
+    {
279
+        $toEmail = $this->_dao->GetEmailForLoginId($loginId);
280
+        if($toEmail instanceof ErrorObject || $toEmail === false)
281
+        {
282
+            $_SESSION[$hash] = $toEmail;
283
+            return;
284
+        }
285
+        $newPassword = $this->GeneratePassword();
286
+                
287
+        $isUpdateSuccessful = $this->_dao->SetNewPassword($loginId, $newPassword);
288
+        if($isUpdateSuccessful instanceof ErrorObject || $isUpdateSuccessful === false)
289
+        {
290
+            $_SESSION[$hash] = $isUpdateSuccessful;
291
+            return;
292
+        }
293
+        $_SESSION[$hash] = $this->EmailNewPassword($loginId, $toEmail, $newPassword);
294
+        
295
+    }
296
+    
297
+    public function GetBadges($hash, $loginId)
298
+    {
299
+        $_SESSION[$hash] = $this->_dao->GetBadges($loginId);
300
+    }
301
+    
302
+    public function SetBadges($hash, $userid, array $badgesArray)
303
+    {
304
+        //Database Programmer:
305
+        //On Ipad, all badges are retrieved, stored in a collection, new badges
306
+        //earned are added to that collection and that is sent back at the end
307
+        //of the survey. To prevent infinite badges being added for the user,
308
+        //I need to first check badges they already had and then insert the new
309
+        //ones only. I am not deleting all badges of the user first and then
310
+        //inserting all of them because that would require delete privileges,
311
+        //which I have not given to the user for security purposes.
312
+        //
313
+        //IPad Programmer:
314
+        //and its cruch time and the ipad programmer went crazy...
315
+        //
316
+        //Databse Programmer:
317
+        //Yeah... that too! :D
318
+        
319
+        $previousBadges = $this->_dao->GetBadges($userid);
320
+        $newBadges = array_diff($badgesArray, $previousBadges);
321
+        $_SESSION[$hash] = $this->_dao->SetBadges($userid, $newBadges);
322
+    }
323
+    //returns response obj
324
+    function CallFunction()
325
+    {
326
+        $functionCall = $this->_requestObject->call;
327
+        //copy argument array
328
+        $functionArguments = array();
329
+        $functionArguments['hash'] = $this->_requestObject->requestHash;
330
+        
331
+        //if its an unregistered call, return an error
332
+        if(array_key_exists($functionCall, $this->_functionRegistry))
333
+        {
334
+            foreach(array_keys($this->_requestObject->paramArray) as $key)
335
+            {
336
+                $functionArguments[$key] = $this->_requestObject->paramArray[$key];
337
+            }
338
+        }
339
+        else if(array_key_exists($functionCall, $this->_functionRegistry_arrayCalls))
340
+        {
341
+            $functionArguments[$this->_functionRegistry_arrayCalls[$functionCall]] = $this->_requestObject->paramArray;
342
+        }
343
+        else
344
+        {
345
+            $this->_dao->CloseConnection();
346
+            return new ErrorObject($this->_requestObject, E_VROOM_INVALID_FUNCTION_CALL);
347
+        }
348
+        //just check if we are sending any error. if yes, then mark it as an error
349
+        call_user_func_array(array($this, $functionCall), $functionArguments);
350
+        
351
+        //need to use hashes because call_user_func_array makes a new instance
352
+        //of the class being called and hence not returning a value.
353
+        
354
+        $responseData = $_SESSION[$this->_requestObject->requestHash];
355
+        unset($_SESSION[$this->_requestObject->requestHash]);
356
+        $response = new ResponseObject(
357
+                                        $this->_requestObject->requestHash, 
358
+                                        $responseData, 
359
+                                        $responseData instanceof ErrorObject
360
+                                      );
361
+        //close the db connection once the request has been served
362
+        $this->_dao->CloseConnection();
363
+        
364
+        return $response;
365
+    }
366
+}
367
+
368
+?>
... ...
@@ -0,0 +1,351 @@
1
+<?php
2
+
3
+/*
4
+ * To change this template, choose Tools | Templates
5
+ * and open the template in the editor.
6
+ */
7
+
8
+/**
9
+ * Description of config
10
+ *
11
+ * @author dghai
12
+ */
13
+//set_include_path(getcwd().'\phpseclib\\' . PATH_SEPARATOR . getcwd().'\ezcMail\\' . PATH_SEPARATOR.get_include_path());
14
+set_include_path('./phpseclib/'.PATH_SEPARATOR.'./ezcMail/'.get_include_path());
15
+require_once 'ErrorObject.php';
16
+
17
+class Config {
18
+    /**
19
+     * Stores configuration options specific to production environment.
20
+     * @var array
21
+     */
22
+    private $_prodConfig;
23
+
24
+    /**
25
+     * Stores configuration options specific to development environment.
26
+     * @var array
27
+     */
28
+    private $_devConfig;
29
+
30
+    /**
31
+     * Stores configuration options common to both, prod and dev, environments.
32
+     * @var type
33
+     */
34
+    private $_commonConfig;
35
+
36
+    /**
37
+     * Holds whether current server is production or not depending on the
38
+     * environment variables.
39
+     * @var boolean
40
+     */
41
+    private $_isProd;
42
+
43
+    function __construct()
44
+    {
45
+        $this->_isProd = ($_SERVER['production_server'] == 1);
46
+        $this->_commonConfig = array(
47
+            'response_privateKey' => '-----BEGIN RSA PRIVATE KEY-----
48
+MIICXAIBAAKBgQCH0uzPQmyPgcMPWTYly2CkaNpHG7/riXLHZ5H4s1vFH9uYIjBtHCWJsW6WuOvI
49
+cVpPc6NIagGuxP1oauJcdDSq/Z7JMPA6RLBFN8jiPuoHMuOyaxOlagu2JCAZU42mDrKwgfGiSPiS
50
+L2iMr2rI76dirt/wJXY1wKPSwtAKtbFYPQIDAQABAoGACO9769CzYqeHRSG52betBnPtdEMjl6PF
51
+vM+X/1QRZAEKCdKp++ufnpThMSI+RMQMTHDPm6p5rN1BzJZHiQyOEF4cCA+h4HA3XyRRAIkNQWrp
52
+1EjjZnvaFDtLaNj1RiTFc6RsWNtoTCvzdA5nX8qqjG4B95VDQMcvoy3CRw/1MtECQQCKs8/KDrfP
53
+a8fJvvKcwSNwzNkH6YfKGncS6kizBJVs+x/GZOd5IpdQuFcF1tpnNdvxRhFoZw+ra/2Y8g7+XaJF
54
+AkEA+q/xu44NZIFMq8Bv8SRwM8ehNGUVchITjVPZzv1voXlQjfMT1MjaZ/VaRriGiIrBZp8HyI7k
55
+3KNAhYvgctI5mQJAZhC/XS7Lb+UeFYVfvp4ZWE5Ffp8If15ONSsV6DX9Rz7cOP/Tnb4onwunbfKW
56
+sNBfUwJ+mNcOHtTOvpeRFPkOCQJBALMoTRViZxXeBmJ0zEvFY97Nm9rrJxF387s8Itx4aXA4WCaq
57
+gxC+XsCPK26Bb7xjleZ2X0SpQsyga3tFxSmqLnkCQBXPDx8K1QiYQzbTPhz++n+luJBsyYe6YLRT
58
+eXO1AChZRkjOFfJK5XljlqsHCLoFanLBuYVVSOzVWY+A93wH9HM=
59
+-----END RSA PRIVATE KEY-----',
60
+
61
+            'response_publicKey' => '-----BEGIN PUBLIC KEY-----
62
+MIGJAoGBAIfS7M9CbI+Bww9ZNiXLYKRo2kcbv+uJcsdnkfizW8Uf25giMG0cJYmxbpa468hxWk9z
63
+o0hqAa7E/Whq4lx0NKr9nskw8DpEsEU3yOI+6gcy47JrE6VqC7YkIBlTjaYOsrCB8aJI+JIvaIyv
64
+asjvp2Ku3/AldjXAo9LC0Aq1sVg9AgMBAAE=
65
+-----END PUBLIC KEY-----',
66
+
67
+            'request_publicKey' => '-----BEGIN PUBLIC KEY-----
68
+MIGJAoGBAI5zstNY9OkGNfEM667y6NMb8WwQ+gw662tKp/2ica0dmqVRaXPEcT7O7uN/BOE+XBId
69
+KlvXkywdLD4s9CMp9OfVvmzxjTLH6z04Y20lOanZYs1PBiJhsqVwXEewHlXPMZjCwoZ5ZYcVIprr
70
+SmQMgecfDEGfbMnbZDmQmft7KHbNAgMBAAE=
71
+-----END PUBLIC KEY-----',
72
+
73
+            'request_privateKey' => '-----BEGIN RSA PRIVATE KEY-----
74
+MIICWwIBAAKBgQCOc7LTWPTpBjXxDOuu8ujTG/FsEPoMOutrSqf9onGtHZqlUWlzxHE+zu7jfwTh
75
+PlwSHSpb15MsHSw+LPQjKfTn1b5s8Y0yx+s9OGNtJTmp2WLNTwYiYbKlcFxHsB5VzzGYwsKGeWWH
76
+FSKa60pkDIHnHwxBn2zJ22Q5kJn7eyh2zQIDAQABAoGAKbgdu8L2OxasDpQbpCmU4VryKhWQvas1
77
+zj7XkzMTesFMTLVanmJ+Tgg5s1u8WKE0QsPS54HrosRKdE0jFPdRN3Icc1cyCrk21z2W8EEMHxZc
78
+VTvAN+E/W9uTTMyDoE6s0rcHmr1+8GHAEXJKFnvHpO9ZKmb1rmXN4p8k9doHkCsCQQCs8C361xll
79
+/0ZdKrYa3ZTO557osy0tcM5gE7i33VgqDCjg1dvOHDr7SSb3RtNB8Uxn4qrseW18YCUHXXLrJLVj
80
+AkEA0t8LrYBeY51ijAux9zHi2ByieKGCZHNIN1Pv9VjjT+pnuneEScA7hP43UjtmnmbLQ+3D2/vA
81
+kmqOT2wmTYGyDwJAfRjUOeJE9ho9nQFbb32fujekJLIP2RIDx04czavoranUHCe285ZKOCHHdRIf
82
+mVDiMzes6pg/0bt+raA0k9Ie/wJAF1FgyjPKvDs4HYJhkJMsoXcxJCO/9nmk/7FBdKD6qeiixcTX
83
+lQwzyLYPygEVjOiTC5TsNpQ1LDuqNvAfoCx6UwJAPSem4EDDHkSd0zN7TaEIoBKT6A0wNBI9io7z
84
+ZZlytwQR1g8gVahz+MjFWvpvseAi14Tsc0ZpU5HPB0Mu5qJ2kQ==
85
+-----END RSA PRIVATE KEY-----',
86
+
87
+            'enable_connection_encryption' => false,
88
+            
89
+            'reset_password_email_template'=>
90
+            '<p>Hi!</p><p>Here\'s your new password for the Carview application:
91
+                <ul><li>Username: {username}</li><li>Password: {password}</li>
92
+                </ul></p><p>Please tell us how we are doing by mailing
93
+                your thoughts to {webmaster_email}.</p><p>Thank you!<br/>
94
+                Team Carview</p>',
95
+            
96
+            'reset_password_email_plaintext' =>
97
+            'Hi!\nHere\'s your new password for the Carview application:\n
98
+                \nUsername: {username}
99
+                \nPassword: {password}
100
+                \nPlease tell us how we are doing by mailing
101
+                your thoughts to {webmaster_email}.
102
+                \n\nThank you!
103
+                \nTeam Carview',
104
+            
105
+            'reset_password_email_subject'  =>
106
+            'Your Carview Password'
107
+        );
108
+
109
+        $this->_devConfig = array(
110
+            'db_schema' => 'vroom360',
111
+
112
+            'db_server' => 'localhost',
113
+            'db_server_port' => '3306',
114
+
115
+            'db_user' => 'webuser',
116
+            'db_user_password' => '2b00a6ee707290a755f1a880783fcc40',
117
+
118
+            'save_error_to_db' => true,
119
+
120
+            'log_requests'     => false,
121
+            
122
+            'webmaster_email'  => '[email protected]',
123
+            'webmaster_name'   => 'VRoom360 Websmaster',
124
+            
125
+            'smtp_server'      => 'mail.devghai.com',
126
+            'smtp_port'        => 465,
127
+            'smtp_username'    => 'vroom360+devghai.com',
128
+            'smtp_password'    => 'vroom360',
129
+            
130
+            'filestore'        => '.\images\\',
131
+            'path_separator'   => '\\',
132
+        );
133
+
134
+        $this->_prodConfig = array (
135
+            'db_schema' => 'devghai_vroom360',
136
+
137
+            'db_server' => 'localhost',
138
+            'db_server_port' => '3306',
139
+
140
+            'db_user' => 'devghai_webuser',
141
+            'db_user_password' => '2b00a6ee707290a755f1a880783fcc40',
142
+
143
+            'save_error_to_db' => true,
144
+
145
+            'log_requests'     => false,
146
+            
147
+            'webmaster_email'  => '[email protected]',
148
+            'webmaster_name'   => 'VRoom360 Websmaster',
149
+            
150
+            'smtp_server'      => 'mail.devghai.com',
151
+            'smtp_port'        => 465,
152
+            'smtp_username'    => 'vroom360+devghai.com',
153
+            'smtp_password'    => 'vroom360',
154
+            
155
+            'filestore'        => './images/',
156
+            'path_separator'   => '/',
157
+        );
158
+    }
159
+
160
+    public function GetResponsePrivateKey()
161
+    {
162
+        return $this->_commonConfig['response_privateKey'];
163
+    }
164
+
165
+    public function GetResponsePublicKey()
166
+    {
167
+        return $this->_commonConfig['response_publicKey'];
168
+    }
169
+
170
+    public function GetRequestPrivateKey()
171
+    {
172
+        return $this->_commonConfig['request_privateKey'];
173
+    }
174
+
175
+    public function GetRequestPublicKey()
176
+    {
177
+        return $this->_commonConfig['request_publicKey'];
178
+    }
179
+
180
+    public function GetDbSchema()
181
+    {
182
+        if($this->_isProd)
183
+        {
184
+            return $this->_prodConfig['db_schema'];
185
+        }
186
+
187
+        return $this->_devConfig['db_schema'];
188
+    }
189
+
190
+    public function GetDbServer()
191
+    {
192
+        if($this->_isProd)
193
+        {
194
+            return $this->_prodConfig['db_server'];
195
+        }
196
+
197
+        return $this->_devConfig['db_server'];
198
+    }
199
+
200
+    public function GetDbPort()
201
+    {
202
+        if($this->_isProd)
203
+        {
204
+            return $this->_prodConfig['db_server_port'];
205
+        }
206
+
207
+        return $this->_devConfig['db_server_port'];
208
+    }
209
+
210
+    public function GetDbUser()
211
+    {
212
+        if($this->_isProd)
213
+        {
214
+            return $this->_prodConfig['db_user'];
215
+        }
216
+
217
+        return $this->_devConfig['db_user'];
218
+    }
219
+
220
+    public function GetDbUserPassword()
221
+    {
222
+        if($this->_isProd)
223
+        {
224
+            return $this->_prodConfig['db_user_password'];
225
+        }
226
+
227
+        return $this->_devConfig['db_user_password'];
228
+    }
229
+
230
+    public function IsConnectionEncryptionEnabled()
231
+    {
232
+        return $this->_commonConfig['enable_connection_encryption'];
233
+    }
234
+
235
+    public function IsSavingErrorToDbEnabled()
236
+    {
237
+        if($this->_isProd)
238
+        {
239
+            return $this->_prodConfig['save_error_to_db'];
240
+        }
241
+
242
+        return $this->_devConfig['save_error_to_db'];
243
+    }
244
+
245
+    public function IsLoggingRequestsEnabled()
246
+    {
247
+        if($this->_isProd)
248
+        {
249
+            return $this->_prodConfig['log_requests'];
250
+        }
251
+
252
+        return $this->_devConfig['log_requests'];
253
+    }
254
+    
255
+    public function GetResetPasswordEmailTemplate()
256
+    {
257
+        return $this->_commonConfig['reset_password_email_template'];
258
+    }
259
+    
260
+    public function GetResetPasswordEmailPlaintextTemplate()
261
+    {
262
+        return $this->_commonConfig['reset_password_email_plaintext'];
263
+    }
264
+    
265
+    public function GetResetPasswordEmailSubject()
266
+    {
267
+        return $this->_commonConfig['reset_password_email_subject'];
268
+    }
269
+    
270
+    public function GetWebmasterEmail()
271
+    {
272
+        if($this->_isProd)
273
+        {
274
+            return $this->_prodConfig['webmaster_email'];
275
+        }
276
+
277
+        return $this->_devConfig['webmaster_email'];
278
+    }
279
+    
280
+    public function GetWebmasterName()
281
+    {
282
+        if($this->_isProd)
283
+        {
284
+            return $this->_prodConfig['webmaster_name'];
285
+        }
286
+
287
+        return $this->_devConfig['webmaster_name'];
288
+    }
289
+    
290
+    public function GetSMTPServer()
291
+    {
292
+        if($this->_isProd)
293
+        {
294
+            return $this->_prodConfig['smtp_server'];
295
+        }
296
+
297
+        return $this->_devConfig['smtp_server'];
298
+    }
299
+    
300
+    public function GetSMTPPort()
301
+    {
302
+        if($this->_isProd)
303
+        {
304
+            return $this->_prodConfig['smtp_port'];
305
+        }
306
+
307
+        return $this->_devConfig['smtp_port'];
308
+    }
309
+    
310
+    public function GetSMTPUsername()
311
+    {
312
+        if($this->_isProd)
313
+        {
314
+            return $this->_prodConfig['smtp_username'];
315
+        }
316
+
317
+        return $this->_devConfig['smtp_username'];
318
+    }
319
+    
320
+    public function GetSMTPPassword()
321
+    {
322
+        if($this->_isProd)
323
+        {
324
+            return $this->_prodConfig['smtp_password'];
325
+        }
326
+
327
+        return $this->_devConfig['smtp_password'];
328
+    }
329
+    
330
+    public function GetFilestore()
331
+    {
332
+        if($this->_isProd)
333
+        {
334
+            return $this->_prodConfig['filestore'];
335
+        }
336
+
337
+        return $this->_devConfig['filestore'];
338
+    }
339
+    
340
+    public function GetPathSeparator()
341
+    {
342
+        if($this->_isProd)
343
+        {
344
+            return $this->_prodConfig['path_separator'];
345
+        }
346
+
347
+        return $this->_devConfig['path_separator'];
348
+    }
349
+}
350
+
351
+?>
... ...
@@ -0,0 +1,1286 @@
1
+<?php
2
+
3
+/*
4
+ * To change this template, choose Tools | Templates
5
+ * and open the template in the editor.
6
+ */
7
+
8
+/**
9
+ * Description of dao
10
+ *
11
+ * @author dghai
12
+ */
13
+
14
+require_once 'Config.php';
15
+require_once 'DbTables.php';
16
+
17
+class Dao 
18
+{
19
+    private $_dbConnection;
20
+    private $_config;
21
+    //stores request made to server. Used for logging in case error occurs.
22
+    private $_request; 
23
+    private $_queries = array
24
+    (
25
+        'isAuthorized'
26
+            =>
27
+           'SELECT `users_loginId`, `users_ageid`, `users_gender`, 
28
+                   `users_height`, `users_shoesize`, `users_weightid`, `users_zip`, 
29
+                   `users_shirtsize`, `users_email`, `user_sittingheight`, 
30
+                   `user_upperleglength` 
31
+            FROM `users` 
32
+            WHERE `users_loginId` = ? AND `users_password` = PASSWORD(?)',
33
+        
34
+        'isAdminAuthorized'
35
+            =>
36
+           'SELECT `admins_id`
37
+            FROM `admins` 
38
+            WHERE `admins_id` = ? AND `admins_password` = PASSWORD(?) 
39
+                  AND `admins_active` = true
40
+            LIMIT 1',
41
+        
42
+        'isUsernameAvailable'
43
+            => 
44
+            'SELECT `users_loginId` FROM `users` WHERE `users_loginId` = ? LIMIT 1
45
+             UNION
46
+             SELECT `admins_id` FROM `admins` WHERE `admins_id` = ? LIMIT 1',
47
+        
48
+        'getSurveyQuestions'
49
+            =>
50
+            'SELECT `q`.`questions_id`,`q`.`questions_text`,
51
+                    `q`.`questions_ans_value_type`,`q`.`questions_ans_direction`,
52
+                    `q`.`questions_location_x`,`q`.`questions_location_y`,
53
+                    `q`.`questions_location_z` 
54
+            FROM `questions_in_set` `qis`
55
+                    INNER JOIN  `questions` `q` 
56
+                    ON (`qis`.`questionsinset_question_id` = `q`.`questions_id` 
57
+                        AND `q`.`questions_active` = true 
58
+                        AND `qis`.`questionsinset_set_id` = ?)',       
59
+        
60
+        'getAges'
61
+            =>
62
+            'SELECT `ages_id`, `ages_from`, `ages_to` FROM `ages`',
63
+        
64
+        'getWeights'
65
+            =>
66
+            'SELECT `weights_id`, `weights_from`, `weights_to` FROM `weights`',
67
+        
68
+        'setNewUserInfo'
69
+            =>
70
+            'INSERT INTO `users`(`users_loginId`, `users_password`, `users_email`) 
71
+             VALUES (?, PASSWORD(?), ?)',
72
+        
73
+        'setAnswer'
74
+            =>
75
+            'INSERT INTO `answers`(`answers_ques_id`, 
76
+                `answers_value`, `answers_attachment_path`, `answers_survey_id`, 
77
+                `answers_date`, `answers_sequence`, `answers_comment`) 
78
+             VALUES (?, ?, ?, ?, NOW(), ? , ?)',
79
+        
80
+        'updateAnswer'
81
+            => 
82
+            'UPDATE `answers` 
83
+             SET `answers_value` = ?, `answers_attachment_path` = ?, 
84
+                 `answers_date` = NOW(), `answers_comment` = ?
85
+             WHERE `answers_id` = ?',
86
+        
87
+        'updateUserInfo'
88
+            =>
89
+            'UPDATE `users` SET `users_ageid` = ?, `users_gender` = ?, 
90
+                `users_height` = ?, `users_shoesize` = ?, `users_weightid` = ?,
91
+                `users_zip` = ?, `users_shirtsize` = ?, `user_sittingheight` = ?, 
92
+                `user_upperleglength` = ?, `users_email` = ?
93
+             WHERE `users_loginId` = ?',
94
+        
95
+        'getCarModel'
96
+            =>
97
+            'SELECT `vehicle_id`, `vehicle_model` FROM `vehicle` 
98
+             WHERE `vehicle_make` = ? AND `vehicle_year` = ?',
99
+        
100
+        'getQuesCountForActiveSurveys'
101
+            =>
102
+            'SELECT `qs`.`questionset_id`, 
103
+                     COUNT(`qis`.`questionsinset_question_id`) AS `question_count`
104
+             FROM `questions_in_set` `qis`
105
+                    INNER JOIN `question_set` `qs` ON 
106
+                    (`qs`.`questionset_id` = `qis`.`questionsinset_set_id` 
107
+                        AND `qs`.`questionset_active` = true)
108
+             GROUP BY `qis`.`questionsinset_set_id`',
109
+        
110
+        'getAnswerCount'
111
+            =>
112
+            'SELECT `qs`.`questionset_id`, `qs`.`questionset_setname`, 
113
+                 `s`.`survey_id` , COUNT(`a`.`answers_id`) AS `answer_count`, `v`.`vehicle_make`, `v`.`vehicle_model`, `v`.`vehicle_year`
114
+             FROM `question_set` `qs`
115
+             LEFT OUTER JOIN `survey` `s` ON 
116
+                         (`qs`.`questionset_id` = `s`.`survey_question_set` 
117
+                          AND `qs`.`questionset_active` = true 
118
+                          AND `s`.`survey_user_id` = ?)
119
+             LEFT OUTER JOIN `answers` `a` ON `s`.`survey_id` = `a`.`answers_survey_id`
120
+             LEFT OUTER JOIN `vehicle` `v` ON `s`.`survey_vehicleid` = `v`.`vehicle_id`
121
+             GROUP BY `s`.`survey_id`, `qs`.`questionset_id`
122
+             ORDER BY `s`.`survey_id` DESC',
123
+        
124
+        'getPreviousAnswers'
125
+            =>
126
+            'SELECT `a`.`answers_id`, `q`.`questions_text`, `a`.`answers_value`, 
127
+                   `a`.`answers_comment`, `a`.`answers_attachment_path`
128
+             FROM `answers` `a`
129
+             INNER JOIN `questions` `q` ON `q`.`questions_id` = `a`.`answers_ques_id`
130
+             WHERE `a`.`answers_survey_id` = ?',
131
+        
132
+        'setSurveyEnded'
133
+            =>
134
+            'UPDATE `survey` SET `survey_end_date` = NOW()
135
+             WHERE `survey_id` = ?',
136
+        
137
+        'setNewSurvey'
138
+            => 
139
+            'INSERT INTO `survey` (`survey_start_date`, `survey_vehicleid`, `survey_user_id`,
140
+            `survey_question_set`, `survey_end_date`) VALUES (NOW(), ?, ?, ?, ?)',
141
+        
142
+        'getLatestSurveyId'
143
+            =>
144
+            'SELECT `survey_id`
145
+             FROM `survey`
146
+             WHERE `survey_vehicleid` = ? AND `survey_user_id` = ? 
147
+                 AND `survey_question_set` = ?
148
+             ORDER BY `survey_id` DESC
149
+             LIMIT 1',
150
+        
151
+        'resetPassword'
152
+            =>
153
+            'UPDATE `users`
154
+             SET `users_password` = PASSWORD(?)
155
+             WHERE `users_loginId` = ?',
156
+        
157
+        'getEmailId'
158
+            =>
159
+            'SELECT `users_email` FROM `users` WHERE `users_loginId` = ?',
160
+        
161
+        'getUserBadges'
162
+            =>
163
+            'SELECT `userbadges_badgeid` FROM `user_badges` WHERE `userbadges_userid` = ?',
164
+        
165
+        'setBadges'
166
+            =>
167
+            'INSERT INTO `user_badges`(`userbadges_badgeid`, `userbadges_userid`) VALUES(?,?)',
168
+    );
169
+    
170
+    function __construct($request) 
171
+    {
172
+        $this->_request = $request;
173
+        $this->_config = new Config();
174
+        //connect to DB;
175
+        $this->_dbConnection = new mysqli(
176
+                                    $this->_config->GetDbServer(),
177
+                                    $this->_config->GetDbUser(),
178
+                                    $this->_config->GetDbUserPassword(),
179
+                                    $this->_config->GetDbSchema(),
180
+                                    $this->_config->GetDbPort()
181
+                                   );
182
+        if($this->_dbConnection->connect_error)
183
+        {
184
+            return new ErrorObject($this->_request, E_VROOM_DB_CONNECT_FAILED, $this->GetMysqlError('DB Connection'));
185
+        }
186
+        //select the schema we need to use.
187
+        //if data needs to support UTF-8, mysql_set_charset should be called here.
188
+    }
189
+    
190
+    public function IsUserAuthorized($userid, $password, $isAdmin)
191
+    {
192
+        //take statement from central repository and prepare statement
193
+        if($stmt = $this->_dbConnection->prepare($this->_queries['isAuthorized']))
194
+        {
195
+            //bind parameters
196
+            $stmt->bind_param('ss', $userid, $password);
197
+            
198
+            //execute query
199
+            if(!$stmt->execute())
200
+            {
201
+                return new ErrorObject(
202
+                                        $this->_request,
203
+                                        E_VROOM_EXECUTE_QUERY_FAILED, 
204
+                                        $this->GetMysqlError($this->_queries['isAuthorized'])
205
+                                      );
206
+            }
207
+            $stmt->store_result();
208
+            
209
+            if($stmt->num_rows > 1)
210
+            {
211
+                //something's wrong with the DB. report to admin
212
+                 return new ErrorObject(
213
+                                        $this->_request,
214
+                                        E_VROOM_EXECUTE_QUERY_FAILED, 
215
+                                        $this->GetMysqlError($this->_queries['isAuthorized'])
216
+                                      );
217
+            }
218
+            else if ($stmt->num_rows === 0)
219
+            {
220
+                return false;
221
+            }
222
+            
223
+            //bind the column values to variables
224
+            $user = new Users();
225
+            /*
226
+             * "SELECT `users_id`, `users_loginId`, `users_ageid`, `users_gender`, `users_height`, `users_shoesize`, `users_weightid`, 
227
+             * `users_zip`, `users_shirtsize`, `users_email`, `user_sittngheight`, `user_upperleglength` 
228
+             */
229
+            $stmt->bind_result(
230
+                                $user->loginId, 
231
+                                $user->ageId, 
232
+                                $user->gender, 
233
+                                $user->height, 
234
+                                $user->shoesize, 
235
+                                $user->weightId, 
236
+                                $user->zip, 
237
+                                $user->shirtsize,
238
+                                $user->email,
239
+                                $user->sittingHeight,
240
+                                $user->upperLegLength
241
+                            );
242
+            //copy result from DB into bound variables
243
+            $stmt->fetch();
244
+            //return the data
245
+            return $user;
246
+            
247
+        }
248
+        else
249
+        {
250
+            return new ErrorObject(
251
+                                    $this->_request,
252
+                                    E_VROOM_PREPARE_QUERY_FAILED, 
253
+                                    $this->GetMysqlError($this->_queries['isAuthorized'])
254
+                                   );
255
+        }
256
+    }
257
+    
258
+    public function IsUserAdmin($userid, $password)
259
+    {
260
+        //take statement from central repository and prepare statement
261
+        if($stmt = $this->_dbConnection->prepare($this->_queries['isAdminAuthorized']))
262
+        {
263
+            //bind parameters
264
+            $stmt->bind_param('ss', $userid, $password);
265
+            
266
+            //execute query
267
+            if(!$stmt->execute())
268
+            {
269
+                return new ErrorObject(
270
+                                        $this->_request,
271
+                                        E_VROOM_EXECUTE_QUERY_FAILED, 
272
+                                        $this->GetMysqlError($this->_queries['isAdminAuthorized'])
273
+                                      );
274
+            }
275
+            $stmt->store_result();
276
+            $admin = new Admin();
277
+            if($stmt->num_rows > 1)
278
+            {
279
+                //something's wrong with the DB. report to admin
280
+                 return new ErrorObject(
281
+                                        $this->_request,
282
+                                        E_VROOM_EXECUTE_QUERY_FAILED, 
283
+                                        $this->GetMysqlError($this->_queries['isAdminAuthorized'])
284
+                                      );
285
+            }
286
+            else if ($stmt->num_rows === 0)
287
+            {
288
+                $admin->isAdmin = false;
289
+                return $admin;
290
+            }
291
+            
292
+            //return the data
293
+            $admin->isAdmin = true;
294
+            
295
+            return $admin;
296
+        }
297
+        else
298
+        {
299
+            return new ErrorObject(
300
+                                    $this->_request,
301
+                                    E_VROOM_PREPARE_QUERY_FAILED, 
302
+                                    $this->GetMysqlError($this->_queries['isAdminAuthorized'])
303
+                                   );
304
+        }
305
+    }
306
+    
307
+    public function IsUsernameAvailable($userid)
308
+    {
309
+        //take statement from central repository and prepare statement
310
+        if($stmt = $this->_dbConnection->prepare($this->_queries['isUsernameAvailable']))
311
+        {
312
+            //bind parameters
313
+            $stmt->bind_param('ss', $userid, $userid);
314
+            
315
+            //execute query
316
+            if(!$stmt->execute())
317
+            {
318
+                return new ErrorObject(
319
+                                        $this->_request,
320
+                                        E_VROOM_EXECUTE_QUERY_FAILED, 
321
+                                        $this->GetMysqlError($this->_queries['isUsernameAvailable'])
322
+                                      );
323
+            }
324
+            $stmt->store_result();
325
+            
326
+            return $stmt->num_rows == 0;
327
+            
328
+        }
329
+        else
330
+        {
331
+            return new ErrorObject(
332
+                                    $this->_request,
333
+                                    E_VROOM_PREPARE_QUERY_FAILED, 
334
+                                    $this->GetMysqlError($this->_queries['isUsernameAvailable'])
335
+                                   );
336
+        }
337
+    }
338
+    
339
+    public function GetAgeRanges()
340
+    {
341
+        //take statement from central repository and prepare statement
342
+        if($stmt = $this->_dbConnection->prepare($this->_queries['getAges']))
343
+        {
344
+            //execute query
345
+            if(!$stmt->execute())
346
+            {
347
+                return new ErrorObject(
348
+                                        $this->_request,
349
+                                        E_VROOM_EXECUTE_QUERY_FAILED,
350
+                                        $this->GetMysqlError($this->_queries['getAges'])
351
+                                      );
352
+            }
353
+            $stmt->store_result();
354
+            
355
+            //bind the column values to variables
356
+            $ages = array();
357
+           
358
+            $stmt->bind_result(
359
+                                $age_id,
360
+                                $age_from,
361
+                                $age_to
362
+                            );
363
+            //copy result from DB into bound variables
364
+            while($stmt->fetch())
365
+            {
366
+                $age = new Ages();
367
+                $age->age_id = $age_id;
368
+                $age->age_from = $age_from;
369
+                $age->age_to = $age_to;
370
+                
371
+                $ages[$age_id] = $age;
372
+            }
373
+            //return the data
374
+            return $ages;
375
+            
376
+        }
377
+        else
378
+        {
379
+            return new ErrorObject(
380
+                                        $this->_request,
381
+                                        E_VROOM_PREPARE_QUERY_FAILED,
382
+                                        $this->GetMysqlError($this->_queries['getAges'])
383
+                                      );
384
+        }
385
+    }
386
+    
387
+    public function GetWeightRanges()
388
+    {
389
+        //take statement from central repository and prepare statement
390
+        if($stmt = $this->_dbConnection->prepare($this->_queries['getWeights']))
391
+        {            
392
+            //execute query
393
+            if(!$stmt->execute())
394
+            {
395
+                return new ErrorObject(
396
+                                        $this->_request, 
397
+                                        E_VROOM_EXECUTE_QUERY_FAILED,
398
+                                        $this->GetMysqlError($this->_queries['getWeights'])
399
+                                      );
400
+            }
401
+            $stmt->store_result();
402
+                        
403
+            //bind the column values to variables
404
+            $weights = array();
405
+            $stmt->bind_result(
406
+                                $weight_id,
407
+                                $weight_from,
408
+                                $weight_to
409
+                            );
410
+            //copy result from DB into bound variables
411
+            while($stmt->fetch())
412
+            {
413
+                $weight = new Weights();
414
+                $weight->weight_id = $weight_id;
415
+                $weight->weight_from = $weight_from;
416
+                $weight->weight_to = $weight_to;
417
+                
418
+                $weights[$weight_id] = $weight;
419
+            }
420
+            //return the data
421
+            return $weights;
422
+        }
423
+        else
424
+        {
425
+            return new ErrorObject(
426
+                                    $this->_request, 
427
+                                    E_VROOM_PREPARE_QUERY_FAILED,
428
+                                    $this->GetMysqlError($this->_queries['getWeights'])
429
+                                  );
430
+        }
431
+    }
432
+
433
+    public function GetSurveysForUser($loginId)
434
+    {
435
+        //Get number of questions for each survey available.
436
+        $questionCount = $this->GetQuestionCountForAvailableSurveys();
437
+        
438
+        //take statement from central repository and prepare statement
439
+        if($stmt = $this->_dbConnection->prepare($this->_queries['getAnswerCount']))
440
+        {            
441
+            $stmt->bind_param('s', $loginId);
442
+            
443
+            //execute query
444
+            if(!$stmt->execute())
445
+            {
446
+                return new ErrorObject(
447
+                                        $this->_request, 
448
+                                        E_VROOM_EXECUTE_QUERY_FAILED,
449
+                                        $this->GetMysqlError($this->_queries['getAnswerCount'])
450
+                                      );
451
+            }
452
+            $stmt->store_result();
453
+                        
454
+            //bind the column values to variables
455
+            $surveys = array();
456
+            $stmt->bind_result(
457
+                                $survey_question_set_id,
458
+                                $survey_name,
459
+                                $survey_id,
460
+                                $survey_answerCount,
461
+                                $survey_vehicle_make,
462
+                                $survey_vehicle_model,
463
+                                $survey_vehicle_year
464
+                              );
465
+            //copy result from DB into bound variables
466
+            while($stmt->fetch())
467
+            {
468
+                $survey = new Survey();
469
+                $survey->survey_id = $survey_id == null ? -1 : $survey_id;
470
+                $survey->survey_question_set_id = $survey_question_set_id;
471
+                $survey->survey_name = $survey_name;
472
+                $survey->survey_quesAnswered = $survey_answerCount;
473
+                $survey->survey_quesCount = array_key_exists($survey_question_set_id, $questionCount) ? 
474
+                                            $questionCount[$survey_question_set_id] : 0;
475
+                $survey->survey_vehicle_make = $survey_vehicle_make;
476
+                $survey->survey_vehicle_model = $survey_vehicle_model;
477
+                $survey->survey_vehicle_year = $survey_vehicle_year;
478
+                
479
+                $surveys []= $survey;
480
+            }
481
+            //return the data
482
+            return $surveys;
483
+        }
484
+        else
485
+        {
486
+            return new ErrorObject(
487
+                                    $this->_request, 
488
+                                    E_VROOM_PREPARE_QUERY_FAILED,
489
+                                    $this->GetMysqlError($this->_queries['getAnswerCount'])
490
+                                  );
491
+        }
492
+    }
493
+    
494
+    private function GetQuestionCountForAvailableSurveys()
495
+    {
496
+        //take statement from central repository and prepare statement
497
+        if($stmt = $this->_dbConnection->prepare($this->_queries['getQuesCountForActiveSurveys']))
498
+        {
499
+            //execute query
500
+            if(!$stmt->execute())
501
+            {
502
+                return new ErrorObject(
503
+                                        $this->_request, 
504
+                                        E_VROOM_EXECUTE_QUERY_FAILED,
505
+                                        $this->GetMysqlError($this->_queries['getQuesCountForActiveSurveys'])
506
+                                      );
507
+            }
508
+            $stmt->store_result();
509
+                        
510
+            //bind the column values to variables
511
+            $questionCounts = array();
512
+            $stmt->bind_result(
513
+                                $survey_id,
514
+                                $maxQuestions
515
+                              );
516
+            //copy result from DB into bound variables
517
+            while($stmt->fetch())
518
+            {
519
+                $questionCounts[$survey_id] = $maxQuestions;
520
+            }
521
+            //return the data
522
+            return $questionCounts;
523
+        }
524
+        else
525
+        {
526
+            return new ErrorObject(
527
+                                    $this->_request, 
528
+                                    E_VROOM_PREPARE_QUERY_FAILED,
529
+                                    $this->GetMysqlError($this->_queries['getQuesCountForActiveSurveys'])
530
+                                  );
531
+        }
532
+    }
533
+    
534
+    public function GetPreviousAnswers($surveyId)
535
+    {
536
+        //take statement from central repository and prepare statement
537
+        if($stmt = $this->_dbConnection->prepare($this->_queries['getPreviousAnswers']))
538
+        {
539
+            $stmt->bind_param('i', $surveyId);
540
+            //execute query
541
+            if(!$stmt->execute())
542
+            {
543
+                return new ErrorObject(
544
+                                        $this->_request, 
545
+                                        E_VROOM_EXECUTE_QUERY_FAILED,
546
+                                        $this->GetMysqlError($this->_queries['getPreviousAnswers'])
547
+                                      );
548
+            }
549
+            $stmt->store_result();
550
+            //bind the column values to variables
551
+            $answers = array();
552
+            $stmt->bind_result(
553
+                                $answer_id,
554
+                                $answer_ques_text,
555
+                                $answer_value,
556
+                                $answer_comment,
557
+                                $answer_image
558
+                              );
559
+            //copy result from DB into bound variables
560
+            while($stmt->fetch())
561
+            {
562
+                $answer = new Answer();
563
+                $answer->answer_comment = $answer_comment;
564
+                $answer->answer_id = $answer_id;
565
+                $answer->answer_ques_text = $answer_ques_text;
566
+                $answer->answer_value = $answer_value;
567
+                $answer->answer_image = $answer_image;
568
+                if($answer_image != null)
569
+                {
570
+                    $imageFile = $this->_config->GetFilestore().$answer_image;
571
+                    $imgFileHandle = fopen($imageFile, 'rb');
572
+                    $answer->answer_image = base64_encode(fread($imgFileHandle, filesize($imageFile)) );
573
+                    fclose($imgFileHandle);
574
+                }
575
+                $answers []= $answer;
576
+            }
577
+            //return the data
578
+            return $answers;
579
+        }
580
+        else
581
+        {
582
+            return new ErrorObject(
583
+                                    $this->_request, 
584
+                                    E_VROOM_PREPARE_QUERY_FAILED,
585
+                                    $this->GetMysqlError($this->_queries['getPreviousAnswers'])
586
+                                  );
587
+        }
588
+    }
589
+    
590
+    public function GetSurveyQuestions($question_set)
591
+    {
592
+        //take statement from central repository and prepare statement
593
+        if($stmt = $this->_dbConnection->prepare($this->_queries['getSurveyQuestions']))
594
+        {
595
+            //bind parameters
596
+            $stmt->bind_param('i', $question_set);
597
+            
598
+            //execute query
599
+            if(!$stmt->execute())
600
+            {
601
+                return new ErrorObject($this->GetMysqlError($this->_queries['getSurveyQuestions']), E_VROOM_EXECUTE_QUERY_FAILED);
602
+            }
603
+            $stmt->store_result();
604
+                      
605
+            //bind the column values to variables
606
+            $stmt->bind_result(
607
+                                $ques_id, 
608
+                                $ques_text, 
609
+                                $ques_valueType, 
610
+                                $ques_answerDirection, 
611
+                                $ques_x, 
612
+                                $ques_y, 
613
+                                $ques_z
614
+                            );
615
+            $questions = array();
616
+            $questionNumber = -1;
617
+            //copy result from DB into bound variables
618
+            while($stmt->fetch())
619
+            {
620
+                $ques = new Questions();
621
+                $ques->id = $ques_id; 
622
+                $ques->text = $ques_text; 
623
+                $ques->valueType = $ques_valueType; 
624
+                $ques->answerDirection = $ques_answerDirection; 
625
+                $ques->x = $ques_x; 
626
+                $ques->y = $ques_y; 
627
+                $ques->z = $ques_z; 
628
+                            
629
+                $questions[++$questionNumber] = $ques;
630
+            }
631
+            //return the data
632
+            return $questions;
633
+            
634
+        }
635
+        else
636
+        {
637
+            return new ErrorObject($this->GetMysqlError($this->_queries['getSurveyQuestions']), E_VROOM_PREPARE_QUERY_FAILED);
638
+        }
639
+    }
640
+    
641
+    public function GetBadges($userid)
642
+    {
643
+        //take statement from central repository and prepare statement
644
+        if($stmt = $this->_dbConnection->prepare($this->_queries['getUserBadges']))
645
+        {
646
+            //bind parameters
647
+            $stmt->bind_param('s', $userid);
648
+            
649
+            //execute query
650
+            if(!$stmt->execute())
651
+            {
652
+                return new ErrorObject(
653
+                                        $this->_request,
654
+                                        E_VROOM_EXECUTE_QUERY_FAILED, 
655
+                                        $this->GetMysqlError($this->_queries['getUserBadges'])
656
+                                      );
657
+            }
658
+            $stmt->store_result();
659
+            
660
+            $stmt->bind_result($badge);
661
+            //copy result from DB into bound variables
662
+            $badges = array();
663
+            while($stmt->fetch())
664
+            {
665
+                $badges []= $badge;
666
+            }
667
+            //return the data
668
+            return $badges;
669
+        }
670
+        else
671
+        {
672
+            return new ErrorObject(
673
+                                    $this->_request,
674
+                                    E_VROOM_PREPARE_QUERY_FAILED, 
675
+                                    $this->GetMysqlError($this->_queries['getUserBadges'])
676
+                                   );
677
+        }
678
+    }
679
+    
680
+    public function GetCarModel($make, $year)
681
+    {
682
+         //take statement from central repository and prepare statement
683
+        if($stmt = $this->_dbConnection->prepare($this->_queries['getCarModel']))
684
+        {            
685
+            $stmt->bind_param('si', $make, $year);
686
+            //execute query
687
+            if(!$stmt->execute())
688
+            {
689
+                return new ErrorObject(
690
+                                        $this->_request, 
691
+                                        E_VROOM_EXECUTE_QUERY_FAILED,
692
+                                        $this->GetMysqlError($this->_queries['getCarModel'])
693
+                                      );
694
+            }
695
+            $stmt->store_result();
696
+                        
697
+            //bind the column values to variables
698
+            $vehicles = array();
699
+            $stmt->bind_result(
700
+                                $vehicle_id,
701
+                                $vehicle_model
702
+                            );
703
+            //copy result from DB into bound variables
704
+            while($stmt->fetch())
705
+            {
706
+                $vehicle = new Vehicle();
707
+                $vehicle->vehicle_id = $vehicle_id;
708
+                $vehicle->vehicle_model = $vehicle_model;
709
+                $vehicles []= $vehicle;
710
+            }
711
+            //return the data
712
+            return $vehicles;
713
+        }
714
+        else
715
+        {
716
+            return new ErrorObject(
717
+                                    $this->_request, 
718
+                                    E_VROOM_PREPARE_QUERY_FAILED,
719
+                                    $this->GetMysqlError($this->_queries['getCarModel'])
720
+                                  );
721
+        }
722
+    }
723
+    
724
+    public function SetAnswers(array $answers)
725
+    {
726
+        //disable autocommit to work with transactions
727
+        $this->_dbConnection->autocommit(false);
728
+        //take statement from central repository and prepare statement
729
+        if($stmt = $this->_dbConnection->prepare($this->_queries['setAnswer']))
730
+        {        
731
+            foreach($answers as $key=>$value)
732
+            {
733
+                //answers that have answer_is attached to them will need to be
734
+                //updated and not inserted.
735
+                if(array_key_exists('answer_id', $value))
736
+                    if($value['answer_id'] != null)
737
+                        continue;
738
+                
739
+                $attachment_path = null;
740
+                //now see if the image exists. if it does, dump it to current working directory.
741
+                if(array_key_exists('image', $value))
742
+                    if(sizeof($value['image']) > 0)
743
+                        $attachment_path = $this->SavePicture($value['image']);
744
+                    
745
+                
746
+                
747
+                //insert all answers that do not have an answer id.
748
+                //bind parameters
749
+                $stmt->bind_param('idsiis', 
750
+                                    $value['ques_id'], 
751
+                                    $value['value'], 
752
+                                    $attachment_path, 
753
+                                    $value['survey_id'],
754
+                                    $value['sequence'], 
755
+                                    $value['comment']
756
+                                 );
757
+
758
+                //execute query
759
+                if(!$stmt->execute())
760
+                {
761
+                    
762
+                    $e = new ErrorObject(
763
+                                            $this->_request,
764
+                                            E_VROOM_EXECUTE_QUERY_FAILED,
765
+                                            $this->GetMysqlError($this->_queries['setAnswer'])
766
+                                          );
767
+                    $this->_dbConnection->rollback();
768
+                    return $e;
769
+                }
770
+                $stmt->store_result();
771
+
772
+                if($stmt->affected_rows != 1)
773
+                {
774
+                    //something's wrong with the DB. report to admin
775
+                    $e = new ErrorObject(
776
+                                            $this->_request,
777
+                                            E_VROOM_INSERT_FAILED,
778
+                                            $this->GetMysqlError($this->_queries['setAnswer'])
779
+                                          );
780
+                    $this->_dbConnection->rollback();
781
+                    return $e;
782
+                }
783
+                
784
+                //remove once the values have been serviced.
785
+                unset($answers[$key]);
786
+            }
787
+            
788
+            //If there are still some answers left, then it means we need to 
789
+            //update some answers
790
+            if(count($answers) > 0)
791
+            {
792
+                //if an error occured while updating the answers, do a rollabck
793
+                //and send the error message back.
794
+                $updateAnswers = $this->UpdateAnswers ($answers);
795
+                if($updateAnswers instanceof ErrorObject)
796
+                {
797
+                    return $updateAnswers;
798
+                }
799
+            }
800
+            $this->_dbConnection->commit();
801
+            //return the data
802
+            return true;
803
+        }
804
+        else
805
+        {
806
+            $e = new ErrorObject(
807
+                                    $this->_request,
808
+                                    E_VROOM_PREPARE_QUERY_FAILED,
809
+                                    $this->GetMysqlError($this->_queries['setAnswer'])
810
+                                  );
811
+            $this->_dbConnection->rollback();
812
+            return $e;
813
+        }
814
+    }
815
+    
816
+    private function UpdateAnswers(array $answers)
817
+    {
818
+        $attachment_path = '';
819
+        //take statement from central repository and prepare statement
820
+        if($stmt = $this->_dbConnection->prepare($this->_queries['updateAnswer']))
821
+        {        
822
+            foreach($answers as $key=>$value)
823
+            {
824
+                if(array_key_exists('image', $value))
825
+                    if(sizeof($value['image']) > 0)
826
+                        $attachment_path = $this->SavePicture($value['image']);
827
+                    
828
+                //update all answers that have an answer id.
829
+                //bind parameters
830
+                $stmt->bind_param('dssi',  
831
+                                    $value['value'], 
832
+                                    $attachment_path, 
833
+                                    $value['comment'],
834
+                                    $value['answer_id']
835
+                                 );
836
+
837
+                //execute query
838
+                if(!$stmt->execute())
839
+                {
840
+                    $e = new ErrorObject(
841
+                                            $this->_request,
842
+                                            E_VROOM_EXECUTE_QUERY_FAILED,
843
+                                            $this->GetMysqlError($this->_queries['updateAnswer'])
844
+                                          );
845
+                    $this->_dbConnection->rollback();
846
+                    return $e;
847
+                }
848
+                
849
+                if($stmt->affected_rows != 1)
850
+                {
851
+                    $this->_dbConnection->rollback();
852
+                    return false;
853
+                }
854
+                //remove once the values have been serviced.
855
+                unset($answers[$key]);
856
+            }
857
+            
858
+            //return the data
859
+            return true;
860
+        }
861
+        else
862
+        {
863
+            $e = new ErrorObject(
864
+                                    $this->_request,
865
+                                    E_VROOM_PREPARE_QUERY_FAILED,
866
+                                    $this->GetMysqlError($this->_queries['updateAnswer'])
867
+                                  );
868
+            $this->_dbConnection->rollback();
869
+            return $e;
870
+        }
871
+    }
872
+        
873
+    private function SavePicture($encodedImage)
874
+    {
875
+        //check if the directory exists
876
+        $directory = $this->_config->GetFilestore();
877
+                     //$value['survey_id'].$this->_config->GetPathSeparator();
878
+        if(!is_dir($directory))
879
+           mkdir ($directory, 0644, true);
880
+
881
+        $uniqueId = substr($value['image'], strlen($value['image'])/2 - 12, 24);
882
+        $filename = sha1($uniqueId.  microtime()).'.jpeg';
883
+        $attachment_path = $filename;
884
+        $data = trim(str_replace('\\r\\n', '', $encodedImage));
885
+        $data = base64_decode($data);
886
+
887
+        $im = imagecreatefromstring($data);
888
+        if ($im !== false) 
889
+        {
890
+            imagejpeg($im, $directory.$filename);
891
+            imagedestroy($im);
892
+            return $filename;
893
+        }
894
+        return null;
895
+    }
896
+
897
+
898
+    public function SetNewUserInfo($userid, $password, $email)
899
+    {
900
+        //first call IsUsernameAvailable. Return only if username is available and there is a successful insert.
901
+        $this->_dbConnection->autocommit(false);
902
+        if(!$this->IsUsernameAvailable($userid))
903
+        {
904
+            $this->_dbConnection->rollback();
905
+            return false;
906
+        }
907
+        
908
+        if($stmt = $this->_dbConnection->prepare($this->_queries['setNewUserInfo']))
909
+        {
910
+            //bind parameters
911
+            $stmt->bind_param('sss', $userid, $password, $email);
912
+
913
+            //execute query
914
+            if(!$stmt->execute())
915
+            {
916
+                $e = new ErrorObject(
917
+                                        $this->_request,
918
+                                        E_VROOM_EXECUTE_QUERY_FAILED,
919
+                                        $this->GetMysqlError($this->_queries['setNewUserInfo'])
920
+                                      );
921
+                $this->_dbConnection->rollback();
922
+                return $e;
923
+            }
924
+            $stmt->store_result();
925
+
926
+            if($stmt->affected_rows != 1)
927
+            {
928
+                //something's wrong with the DB. report to admin
929
+                $e = new ErrorObject(
930
+                                        $this->_request,
931
+                                        E_VROOM_INSERT_FAILED,
932
+                                        $this->GetMysqlError($this->_queries['setNewUserInfo'])
933
+                                      );
934
+                $this->_dbConnection->rollback();
935
+                return $e;
936
+            }
937
+
938
+            $this->_dbConnection->commit();
939
+            //return the data
940
+            return true;
941
+        }
942
+        else
943
+        {
944
+            $e = new ErrorObject(
945
+                                    $this->_request,
946
+                                    E_VROOM_PREPARE_QUERY_FAILED,
947
+                                    $this->GetMysqlError($this->_queries['setNewUserInfo'])
948
+                                  );
949
+            $this->_dbConnection->rollback();
950
+            return $e;
951
+        }
952
+    }
953
+    
954
+    public function UpdateUserInfo($userid, $email, $zip, $height, $sittingHeight, 
955
+                                    $upperLegLength, $weightRange, $ageRange, 
956
+                                    $gender, $shirtSize, $shoeSize)
957
+    {
958
+        $this->_dbConnection->autocommit(false);
959
+        
960
+        if($stmt = $this->_dbConnection->prepare($this->_queries['updateUserInfo']))
961
+        {    
962
+            //bind parameters
963
+            $stmt->bind_param('isidiisddss', 
964
+                                $ageRange,
965
+                                $gender,
966
+                                $height,
967
+                                $shoeSize,
968
+                                $weightRange,
969
+                                $zip,
970
+                                $shirtSize,
971
+                                $sittingHeight,
972
+                                $upperLegLength,
973
+                                $email,
974
+                                $userid
975
+                             );
976
+
977
+            //execute query
978
+            if(!$stmt->execute())
979
+            {
980
+                $e = new ErrorObject(
981
+                                        $this->_request,
982
+                                        E_VROOM_EXECUTE_QUERY_FAILED,
983
+                                        $this->GetMysqlError($this->_queries['updateUserInfo'])
984
+                                      );
985
+                $this->_dbConnection->rollback();
986
+                return $e;
987
+            }
988
+            
989
+            if($stmt->affected_rows != 1)
990
+            {
991
+                $this->_dbConnection->rollback();
992
+                return false;
993
+            }
994
+            
995
+            $this->_dbConnection->commit();
996
+            //return the data
997
+            return true;
998
+        }
999
+        else
1000
+        {
1001
+            $e = new ErrorObject(
1002
+                                    $this->_request,
1003
+                                    E_VROOM_PREPARE_QUERY_FAILED,
1004
+                                    $this->GetMysqlError($this->_queries['updateUserInfo'])
1005
+                                  );
1006
+            $this->_dbConnection->rollback();
1007
+            return $e;
1008
+        }
1009
+    }
1010
+    
1011
+    public function SetBadges($userid, array $badges)
1012
+    {
1013
+        $this->_dbConnection->autocommit(false);
1014
+        if($stmt = $this->_dbConnection->prepare($this->_queries['setBadges']))
1015
+        {
1016
+            foreach($badges as $key=>$value)
1017
+            {
1018
+                //bind parameters
1019
+                $stmt->bind_param('ss', $value, $userid);
1020
+
1021
+                //execute query
1022
+                if(!$stmt->execute())
1023
+                {
1024
+                    $e = new ErrorObject(
1025
+                                            $this->_request,
1026
+                                            E_VROOM_EXECUTE_QUERY_FAILED,
1027
+                                            $this->GetMysqlError($this->_queries['setBadges'])
1028
+                                          );
1029
+                    $this->_dbConnection->rollback();
1030
+                    return $e;
1031
+                }
1032
+                if($stmt->affected_rows != 1)
1033
+                {
1034
+                    $this->_dbConnection->rollback();
1035
+                    return false;
1036
+                }
1037
+            }
1038
+            $this->_dbConnection->commit();
1039
+            //return the data
1040
+            return true;
1041
+        }
1042
+        else
1043
+        {
1044
+            $e = new ErrorObject(
1045
+                                    $this->_request,
1046
+                                    E_VROOM_PREPARE_QUERY_FAILED,
1047
+                                    $this->GetMysqlError($this->_queries['setBadges'])
1048
+                                  );
1049
+            $this->_dbConnection->rollback();
1050
+            return $e;
1051
+        }
1052
+    }
1053
+    
1054
+    //inserts a row in the survey table to indicate that user has started a survey.
1055
+    //should return the assigned survey id.
1056
+    public function SetNewSurvey($vehicleId, $questionSet_id, $userId)
1057
+    {
1058
+//               echo("<p>".__CLASS__."::".__FUNCTION__.": Received values: vehicleId = $vehicleId, questionSet_id = $questionSet_id, userId = $userId</p>");
1059
+//        $this->_dbConnection->autocommit(false);
1060
+        if($stmt = $this->_dbConnection->prepare($this->_queries['setNewSurvey']))
1061
+        {
1062
+            //bind parameters
1063
+            $stmt->bind_param('isis', $vehicleId, $userId, $questionSet_id, date('Y-m-d G:i:s', 0));
1064
+
1065
+            //execute query
1066
+            if(!$stmt->execute())
1067
+            {
1068
+                $e = new ErrorObject(
1069
+                                        $this->_request,
1070
+                                        E_VROOM_EXECUTE_QUERY_FAILED,
1071
+                                        $this->GetMysqlError($this->_queries['setNewSurvey'])
1072
+                                      );
1073
+                $this->_dbConnection->rollback();
1074
+                return $e;
1075
+            }
1076
+            $stmt->store_result();
1077
+
1078
+            if($stmt->affected_rows != 1)
1079
+            {
1080
+                //something's wrong with the DB. report to admin
1081
+                $e = new ErrorObject(
1082
+                                        $this->_request,
1083
+                                        E_VROOM_INSERT_FAILED,
1084
+                                        $this->GetMysqlError($this->_queries['setNewSurvey'])
1085
+                                      );
1086
+                $this->_dbConnection->rollback();
1087
+                return $e;
1088
+            }
1089
+
1090
+            $insertedId = $this->_dbConnection->insert_id;
1091
+            $this->_dbConnection->commit();
1092
+            //return the data
1093
+            return $insertedId;
1094
+        }
1095
+        else
1096
+        {
1097
+            $e = new ErrorObject(
1098
+                                    $this->_request,
1099
+                                    E_VROOM_PREPARE_QUERY_FAILED,
1100
+                                    $this->GetMysqlError($this->_queries['setNewSurvey'])
1101
+                                  );
1102
+            $this->_dbConnection->rollback();
1103
+            return $e;
1104
+        }
1105
+    }
1106
+    
1107
+    private function GetLastestSurveyId($vehicleId, $questionSet_id, $userId)
1108
+    {
1109
+        if($stmt = $this->_dbConnection->prepare($this->_queries['getLatestSurveyId']))
1110
+        {
1111
+            //bind parameters
1112
+            $stmt->bind_param('isi', $vehicleId, $userid, $questionSet_id);
1113
+
1114
+            //execute query
1115
+            if(!$stmt->execute())
1116
+            {
1117
+                return new ErrorObject(
1118
+                                        $this->_request,
1119
+                                        E_VROOM_EXECUTE_QUERY_FAILED,
1120
+                                        $this->GetMysqlError($this->_queries['getLatestSurveyId'])
1121
+                                      );
1122
+            }
1123
+            $stmt->store_result();
1124
+
1125
+            $stmt->bind_result($surveyId);
1126
+            
1127
+            $stmt->fetch();
1128
+            //return the data
1129
+            return $surveyId;
1130
+        }
1131
+        else
1132
+        {
1133
+            return new ErrorObject(
1134
+                                    $this->_request,
1135
+                                    E_VROOM_PREPARE_QUERY_FAILED,
1136
+                                    $this->GetMysqlError($this->_queries['getLatestSurveyId'])
1137
+                                  );
1138
+        }
1139
+    }
1140
+    
1141
+    public function SetEndSurvey($surveyId)
1142
+    {
1143
+        //ending the survey like this saves queries required to get number of
1144
+        //questions associated to a set and then finding how many have been
1145
+        //answered.
1146
+        $this->_dbConnection->autocommit(false);
1147
+        if($stmt = $this->_dbConnection->prepare($this->_queries['setSurveyEnded']))
1148
+        {
1149
+            //bind parameters
1150
+            $stmt->bind_param('i', $surveyId);
1151
+
1152
+            //execute query
1153
+            if(!$stmt->execute())
1154
+            {
1155
+                $e = new ErrorObject(
1156
+                                        $this->_request,
1157
+                                        E_VROOM_EXECUTE_QUERY_FAILED,
1158
+                                        $this->GetMysqlError($this->_queries['setSurveyEnded'])
1159
+                                      );
1160
+                $this->_dbConnection->rollback();
1161
+                return $e;
1162
+            }
1163
+            
1164
+            if($stmt->affected_rows != 1)
1165
+            {
1166
+                $this->_dbConnection->rollback();
1167
+                return false;
1168
+            }
1169
+            $this->_dbConnection->commit();
1170
+            //return the data
1171
+            return true;
1172
+        }
1173
+        else
1174
+        {
1175
+            $e = new ErrorObject(
1176
+                                    $this->_request,
1177
+                                    E_VROOM_PREPARE_QUERY_FAILED,
1178
+                                    $this->GetMysqlError($this->_queries['setSurveyEnded'])
1179
+                                  );
1180
+            $this->_dbConnection->rollback();
1181
+            return $e;
1182
+        }
1183
+    }
1184
+    
1185
+    public function SetNewPassword($loginId, $newPassword)
1186
+    {
1187
+        $this->_dbConnection->autocommit(false);
1188
+        if($stmt = $this->_dbConnection->prepare($this->_queries['resetPassword']))
1189
+        {
1190
+            //bind parameters
1191
+            $stmt->bind_param('ss', $newPassword, $loginId);
1192
+
1193
+            //execute query
1194
+            if(!$stmt->execute())
1195
+            {
1196
+                $e = new ErrorObject(
1197
+                                        $this->_request,
1198
+                                        E_VROOM_EXECUTE_QUERY_FAILED,
1199
+                                        $this->GetMysqlError($this->_queries['resetPassword'])
1200
+                                      );
1201
+                $this->_dbConnection->rollback();
1202
+                return $e;
1203
+            }
1204
+            if($stmt->affected_rows != 1)
1205
+            {
1206
+                $this->_dbConnection->rollback();
1207
+                return false;
1208
+            }
1209
+            $this->_dbConnection->commit();
1210
+            //return the data
1211
+            return true;
1212
+        }
1213
+        else
1214
+        {
1215
+            $e = new ErrorObject(
1216
+                                    $this->_request,
1217
+                                    E_VROOM_PREPARE_QUERY_FAILED,
1218
+                                    $this->GetMysqlError($this->_queries['resetPassword'])
1219
+                                  );
1220
+            $this->_dbConnection->rollback();
1221
+            return $e;
1222
+        }
1223
+    }
1224
+    
1225
+    public function GetEmailForLoginId($loginId)
1226
+    {
1227
+        //take statement from central repository and prepare statement
1228
+        if($stmt = $this->_dbConnection->prepare($this->_queries['getEmailId']))
1229
+        {
1230
+            //bind parameters
1231
+            $stmt->bind_param('s', $loginId);
1232
+            
1233
+            //execute query
1234
+            if(!$stmt->execute())
1235
+            {
1236
+                return new ErrorObject(
1237
+                                        $this->_request,
1238
+                                        E_VROOM_EXECUTE_QUERY_FAILED, 
1239
+                                        $this->GetMysqlError($this->_queries['getEmailId'])
1240
+                                      );
1241
+            }
1242
+            $stmt->store_result();
1243
+            
1244
+            if($stmt->num_rows === 0)
1245
+            {
1246
+                 return false;
1247
+            }
1248
+            
1249
+            $stmt->bind_result($email);
1250
+            //copy result from DB into bound variables
1251
+            $stmt->fetch();
1252
+            //return the data
1253
+            return $email;
1254
+        }
1255
+        else
1256
+        {
1257
+            return new ErrorObject(
1258
+                                    $this->_request,
1259
+                                    E_VROOM_PREPARE_QUERY_FAILED, 
1260
+                                    $this->GetMysqlError($this->_queries['getEmailId'])
1261
+                                   );
1262
+        }
1263
+    }
1264
+    public function LogError($requestHash, $request)
1265
+    {
1266
+        
1267
+    }
1268
+    
1269
+    public function CloseConnection()
1270
+    {
1271
+        $this->_dbConnection->commit();
1272
+        $this->_dbConnection->close();
1273
+    }
1274
+    
1275
+    private function GetMysqlError($statement)
1276
+    {
1277
+        $mysqlErrorCode = $this->_dbConnection->errno;
1278
+        $mysqlErrorDescription = $this->_dbConnection->error;
1279
+        
1280
+        //echo("<p>".__CLASS__."::".__FUNCTION__.": Received values: mysqlErrorCode = $mysqlErrorCode, mysqlErrorDescription = $mysqlErrorDescription</p>");
1281
+        
1282
+        return "Statement: $statement, Mysql error code: $mysqlErrorCode, Mysql error description: $mysqlErrorDescription";
1283
+    }
1284
+}
1285
+
1286
+?>
0 1287
\ No newline at end of file
... ...
@@ -0,0 +1,87 @@
1
+<?php
2
+
3
+/*
4
+ * To change this template, choose Tools | Templates
5
+ * and open the template in the editor.
6
+ */
7
+
8
+/**
9
+ * Description of DbTables
10
+ *
11
+ * @author dghai
12
+ */
13
+class Users
14
+{
15
+    public $loginId;
16
+    public $ageId;
17
+    public $gender;
18
+    public $height;
19
+    public $shoesize;
20
+    public $weightId;
21
+    public $zip;
22
+    public $shirtsize;
23
+    public $email;
24
+    public $sittingHeight;
25
+    public $upperLegLength;
26
+    public $badges;
27
+    public $surveys;
28
+}
29
+
30
+class Questions
31
+{
32
+    public $id;
33
+    public $text;
34
+    public $valueType;  //integer for emoticons and decimal for slider
35
+    public $answerDirection; //enum: HigherIsBetter, LowerIsBetter
36
+    public $x;
37
+    public $y;
38
+    public $z;
39
+    public $isActive; //this will be 1 for the questions as inactive questions will never be sent back.
40
+}
41
+
42
+class Ages
43
+{
44
+    public $age_id;
45
+    public $age_from;
46
+    public $age_to;
47
+}
48
+
49
+class Weights
50
+{
51
+    public $weight_id;
52
+    public $weight_from;
53
+    public $weight_to;
54
+}
55
+
56
+class Vehicle
57
+{
58
+    public $vehicle_id;
59
+    public $vehicle_model;
60
+}
61
+
62
+class Survey
63
+{
64
+    public $survey_id;
65
+    public $survey_name;
66
+    public $survey_quesAnswered;
67
+    public $survey_quesCount;
68
+    public $survey_question_set_id; //Mr. IPad, use it to pull questions
69
+    public $survey_vehicle_make;
70
+    public $survey_vehicle_model;
71
+    public $survey_vehicle_year;
72
+}
73
+
74
+class Answer
75
+{
76
+    public $answer_id;
77
+    public $answer_ques_text;
78
+    public $answer_value;
79
+    public $answer_comment;
80
+    public $answer_image;
81
+}
82
+
83
+class Admin
84
+{
85
+    public $isAdmin;
86
+}
87
+?>
... ...
@@ -0,0 +1,80 @@
1
+<?php
2
+
3
+/*
4
+ * To change this template, choose Tools | Templates
5
+ * and open the template in the editor.
6
+ */
7
+
8
+/**
9
+ * Description of errors
10
+ *
11
+ * @author dghai
12
+ */
13
+require_once 'Config.php';
14
+require_once 'RequestObject.php';
15
+require_once 'Dao.php';
16
+
17
+define('E_VROOM_INSERT_FAILED',                 -7);
18
+define('E_VROOM_EXECUTE_QUERY_FAILED',          -6);
19
+define('E_VROOM_PREPARE_QUERY_FAILED',          -5);
20
+define('E_VROOM_LOAD_RECV_PRI_KEY_FAILED',      -4);
21
+define('E_VROOM_LOAD_SEND_PUB_KEY_FAILED',      -3);
22
+define('E_VROOM_INVALID_FUNCTION_CALL',         -2);
23
+define('E_VROOM_DB_CONNECT_FAILED',             -1);
24
+define('E_VROOM_LOGIN_FAILED',                   1);
25
+
26
+$allErrorDescriptions = array(
27
+    E_VROOM_INSERT_FAILED               =>
28
+        'There was error inserting data into the database.',
29
+    E_VROOM_EXECUTE_QUERY_FAILED        =>
30
+        'There was an error executing the query.',
31
+    E_VROOM_PREPARE_QUERY_FAILED        =>
32
+        'Mysqli had problems with preparing the statement to send to DB.',
33
+    E_VROOM_LOAD_RECV_PRI_KEY_FAILED    =>
34
+        'There was an error loading private key to decrypt data.',
35
+    E_VROOM_LOAD_SEND_PUB_KEY_FAILED    =>
36
+        'Loading public key to encrypt data before sending to iPad... failed. Anyway, what\'s up?',
37
+    E_VROOM_INVALID_FUNCTION_CALL       =>   
38
+        'An invalid function call was made. Expected number of parameters were not delivered.',
39
+    E_VROOM_DB_CONNECT_FAILED           =>
40
+        'Could not connect to the database with the given credentials.',
41
+    E_VROOM_LOGIN_FAILED                =>
42
+        'ACCESS_DENIED',
43
+);
44
+class ErrorObject {
45
+    public $errorCode;
46
+    public $errorDescription;
47
+    
48
+    private $_config;
49
+    
50
+    function __construct($communicationObject, $errorCode, $errorDescription = '') 
51
+    {
52
+        global $allErrorDescriptions;
53
+        $this->errorCode = $errorCode;
54
+        if($errorDescription != '')
55
+            $this->errorDescription = $errorDescription;
56
+        else
57
+            $this->errorDescription = $allErrorDescriptions[$errorCode];
58
+        
59
+        $this->_config = new Config();
60
+        $this->LogError($communicationObject, $errorCode);
61
+    }
62
+    private function LogError($commObj, $errorCode)
63
+    {
64
+        if(!$this->_config->IsSavingErrorToDbEnabled())
65
+        {
66
+            return;
67
+        }
68
+        
69
+        $request = $commObj instanceof RequestObject? $commObj->ToJSONString() : $commObj;
70
+        
71
+        if($errorCode == E_VROOM_DB_CONNECT_FAILED)
72
+        {
73
+            //TODO: Log $request to file or server's error log
74
+            return;
75
+        }
76
+        //TODO: Log $request error to DB
77
+    }
78
+}
79
+
80
+?>
... ...
@@ -0,0 +1,31 @@
1
+<?php
2
+
3
+/*
4
+ * To change this template, choose Tools | Templates
5
+ * and open the template in the editor.
6
+ */
7
+
8
+/**
9
+ * Description of DataExchangeObject
10
+ *
11
+ * @author dghai
12
+ */
13
+class RequestObject {
14
+    public $requestHash;
15
+    public $call;
16
+    public $paramArray;
17
+    
18
+    function __construct($hash, $functionCall, $params) 
19
+    {
20
+        $this->call = $functionCall;
21
+        $this->paramArray = $params;
22
+        $this->requestHash = $hash;
23
+    }
24
+    
25
+    public function ToJSONString()
26
+    {
27
+        return json_encode($this);
28
+    }
29
+}
30
+
31
+?>
... ...
@@ -0,0 +1,27 @@
1
+<?php
2
+
3
+/*
4
+ * To change this template, choose Tools | Templates
5
+ * and open the template in the editor.
6
+ */
7
+
8
+/**
9
+ * Description of ResponseObject
10
+ *
11
+ * @author dghai
12
+ */
13
+
14
+class ResponseObject {
15
+    public $requestHash;
16
+    public $response;
17
+    public $error;
18
+    
19
+    function __construct($hash, $responseObj, $error)
20
+    {
21
+        $this->error = $error;
22
+        $this->requestHash = $hash;
23
+        $this->response = $responseObj;
24
+    }
25
+}
26
+
27
+?>
... ...
@@ -0,0 +1,55 @@
1
+<?php
2
+require_once 'admin_topbar.php';
3
+?>
4
+
5
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
6
+<html>
7
+    <head>
8
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
9
+        <title>Carview | VRoom 360 Create Admin</title>
10
+        <link rel="stylesheet" href="admin_main.css" type="text/css" />
11
+    </head>
12
+    <body>
13
+        <?php PrintTopbar('Welcome!'); ?>
14
+        <div id='content' class='mainContent'>
15
+            <p>Hello <em><?php echo $_SESSION['username']; ?></em>!</p>
16
+            <p>Welcome to the Carview/VRoom 360 management system. Using this
17
+                application, you can perform many tasks related to the Carview
18
+                application on iPad. It's very easy to get started! If you are
19
+                on a computer, hover your mouse over menu on top right of this
20
+                page and begin exploring the various option this system provides.
21
+                If you are on a touch based device, just click on the rounded
22
+                rectangles instead of hovering your mouse pointer over them.
23
+                In case a submenu does not appear, then that heading itself will
24
+                directly lead to a functionality.</p>
25
+            <p>Using this system, currently you can:
26
+                <ul>
27
+                    <li>
28
+                        Add another person (admin) who can make new surveys or
29
+                        disable them. The new user will be emailed her/his
30
+                        credentials when information is successfully saved to the
31
+                        database. The time at which the credentials were
32
+                        modified (created, in this case) will be saved in database
33
+                        along with the id of the person who made the change.
34
+                    </li>
35
+                    <li>
36
+                        Deactivate credentials of another admin. 
37
+                        The time at which the credentials were
38
+                        modified (deactivated, in this case) will be saved in database
39
+                        along with the id of the person who made the change.
40
+                    </li>
41
+                    <li>
42
+                        Create a new survey.
43
+                    </li>
44
+                    <li>
45
+                        Update questions of an existing survey.
46
+                    </li>
47
+                    <li>
48
+                        Deactivate an existing survey.
49
+                    </li>
50
+                </ul>
51
+            </p>
52
+            <p>Let's get it started!</p>
53
+        </div>
54
+    </body>
55
+</html>
0 56
\ No newline at end of file
... ...
@@ -0,0 +1,206 @@
1
+<?php
2
+
3
+/*
4
+ * To change this template, choose Tools | Templates
5
+ * and open the template in the editor.
6
+ */
7
+
8
+/**
9
+ * Description of admin_bizLayer
10
+ *
11
+ * @author dghai
12
+ */
13
+
14
+require_once 'admin_dao.php';
15
+require_once 'admin_config.php';
16
+
17
+class admin_bizLayer
18
+{
19
+    private $admin_dao;
20
+    private $config;
21
+    
22
+    function __construct()
23
+    {
24
+        $this->admin_dao = new admin_dao();
25
+        $this->config = new admin_config();
26
+    }
27
+    
28
+    function IsUserAuthorized($username, $password)
29
+    {
30
+        $retval = $this->admin_dao->IsUserAuthorized($username, $password);
31
+        if($retval === true)
32
+        {
33
+            $_SESSION['username'] = $username;
34
+        }
35
+        return $retval;
36
+    }
37
+    
38
+    function IsUsernameAvailable($username)
39
+    {
40
+        $retval = $this->admin_dao->IsUsernameAvailable($username);
41
+        return $retval;
42
+    }
43
+    
44
+    function AddAdmin($username, $password, $email)
45
+    {
46
+        if($this->admin_dao->AddAdmin($username, $password, $email, true, $_SESSION['username']))
47
+        {
48
+            $this->EmailNewUser($username, $email, $password);
49
+            return true;
50
+        }
51
+        return false;
52
+    }
53
+    
54
+    function IsSurveyNameAvailable($surveyName)
55
+    {
56
+        $retval = $this->admin_dao->IsSurveyNameAvailable($surveyName);
57
+        return $retval;
58
+    }
59
+    
60
+    function AddNewSurvey($surveyName, $isActive, array $questions)
61
+    {
62
+        //Add data to questions_set so as to register the survey
63
+        //This will get us the survey id which will be used to establish
64
+        //1:n relation with questions later on.
65
+        $questionSetId = $this->admin_dao->AddQuestionSet($surveyName, $isActive, $_SESSION['username']);
66
+        //This will store the ids of the questions that we get once they are
67
+        //inserted in the table.
68
+        $questionIds = array();
69
+        if(!is_int($questionSetId))
70
+            return $questionSetId;
71
+            
72
+        //UI will always send questions displayed on the page. We need to empty
73
+        //values and send only valid data to Dao.
74
+        
75
+        $validQuestions = array();
76
+        for($i=1; $i<=count($questions); $i++)
77
+        {
78
+            if(strlen($questions[$i]['text']) > 0 && 
79
+                    (strlen($questions[$i]['x']) > 0) && 
80
+                    (strlen($questions[$i]['y']) > 0) && 
81
+                    (strlen($questions[$i]['z']) > 0)
82
+                )
83
+                $validQuestions []= $questions[$i];
84
+        }
85
+        $questionIds = $this->admin_dao->AddQuestions($validQuestions);
86
+        
87
+        if(!is_array($questionIds))
88
+            return $questionIds; //return false in case we could not add the question_set.
89
+        
90
+        return $this->admin_dao->AddQuestionsInSet($questionSetId, $questionIds);
91
+    }
92
+    
93
+    function SetSurveyAvailability($surveysToHide, $surveysToUnhide)
94
+    {
95
+        $surveysStatuses = array();
96
+        
97
+        for($i=0; $i<count($surveysToHide); $i++)
98
+        {
99
+            if(intval($surveysToHide[$i]) > 0)
100
+                $surveysStatuses[$surveysToHide[$i]] = 0;
101
+        }
102
+        for($i=0; $i<count($surveysToUnhide); $i++)
103
+        {
104
+            if(intval($surveysToUnhide[$i]) > 0)
105
+                $surveysStatuses[$surveysToUnhide[$i]] = 1;
106
+        }
107
+        
108
+        //hit database only if there is something to update
109
+        if(count($surveysStatuses) > 0)
110
+        {
111
+            return $this->admin_dao->SetSurveyAvailability($surveysStatuses, $_SESSION['username']);
112
+        }
113
+        
114
+        return false;
115
+    }
116
+    
117
+    function UpdateSurvey($surveyName, $surveyId, $isActive, array $editedQuestions, array $deletedQuestions, array $newQuestions)
118
+    {
119
+        $retVal = $this->admin_dao->UpdateQuestions($editedQuestions);
120
+        if($retVal instanceof Admin_ErrorObject)
121
+            return $retVal;
122
+        
123
+        if(count($deletedQuestions > 0))
124
+        {
125
+            $retVal = $this->admin_dao->DeleteQuestionsInSet($surveyId, $deletedQuestions);
126
+            if($retVal instanceof Admin_ErrorObject)
127
+                return $retVal;
128
+        }
129
+        
130
+        return $this->admin_dao->UpdateQuestionSet($surveyName, $surveyId, $isActive, $_SESSION['username']);;
131
+    }
132
+    
133
+    function GetQuestions($surveyId)
134
+    {
135
+        return $this->admin_dao->GetQuestions($surveyId);
136
+    }
137
+    
138
+    function SearchSurvey($searchString, $isActive)
139
+    {
140
+        return $this->admin_dao->SearchSurvey($searchString, $isActive);
141
+    }
142
+    
143
+    function CloseDatabaseConnection()
144
+    {
145
+        $this->admin_dao->CloseConnection();
146
+    }
147
+    
148
+    private function EmailNewUser($username, $toEmailId, $newPassword)
149
+    {
150
+        $webmaster_email = $this->config->GetWebmasterEmail();
151
+        $htmlEmail = strtr($this->config->GetNewAdminEmailTemplate() , array(
152
+                            '{username}'        => $username,
153
+                            '{password}'        => $newPassword,
154
+                            '{webmaster_email}' => $webmaster_email,
155
+                        )
156
+                      );
157
+        $plaintextEmail = strtr($this->config->GetNewAdminEmailPlaintextTemplate() , array(
158
+                            '{username}'        => $username,
159
+                            '{password}'        => $newPassword,
160
+                            '{webmaster_email}' => $webmaster_email,
161
+                        )
162
+                      );
163
+                
164
+        require_once 'Base/src/ezc_bootstrap.php';
165
+        // Create a new mail composer object
166
+        $mail = new ezcMailComposer();
167
+        // Specify the "from" mail address
168
+        $mail->from = new ezcMailAddress( $this->config->GetWebmasterEmail(), $this->config->GetWebmasterName() );
169
+        // Add one "to" mail address (multiple can be added)
170
+        $mail->addTo( new ezcMailAddress( $toEmailId, $username ) );
171
+        // Specify the subject of the mail
172
+        $mail->subject = $this->config->GetNewAdminEmailSubject();
173
+        // Specify the body text of the mail
174
+        $mail->plainText = $plaintextEmail;
175
+        $mail->htmlText = $htmlEmail;
176
+        // Generate the mail
177
+        $mail->build();
178
+        // Create a new SMTP transport object with an SSLv3 connection.
179
+        // The port will be 465 by default, use the 4th argument to change it.
180
+        // Username and password (2nd and 3rd arguments) are left blank, which means
181
+        // the mail host does not need authentication.
182
+        // The 5th parameter is the $options object which specifies a SSLV3 connection
183
+        // (default is ezcMailSmtpTransport::CONNECTION_PLAIN).
184
+        $options = new ezcMailSmtpTransportOptions();
185
+        $options->connectionType = ezcMailSmtpTransport::CONNECTION_SSLV3;
186
+        $transport = new ezcMailSmtpTransport( $this->config->GetSMTPServer(),
187
+                                               $this->config->GetSMTPUsername(), 
188
+                                               $this->config->GetSMTPPassword(), 
189
+                                               $this->config->GetSMTPPort(), 
190
+                                               $options );
191
+        // The option can also be specified via the option property:
192
+        $transport->options->connectionType = ezcMailSmtpTransport::CONNECTION_SSLV3;
193
+        // Use the SMTP transport to send the created mail object
194
+        try
195
+        {
196
+            $transport->send( $mail );
197
+            return true;
198
+        }
199
+        catch (ezcMailTransportException $e)
200
+        {
201
+            return false;
202
+        }
203
+    }
204
+}
205
+
206
+?>
... ...
@@ -0,0 +1,284 @@
1
+<?php
2
+
3
+/*
4
+ * To change this template, choose Tools | Templates
5
+ * and open the template in the editor.
6
+ */
7
+
8
+/**
9
+ * Description of config
10
+ *
11
+ * @author dghai
12
+ */
13
+//set_include_path(getcwd().'\phpseclib\\' . PATH_SEPARATOR . getcwd().'\ezcMail\\' . PATH_SEPARATOR.get_include_path());
14
+set_include_path('../phpseclib/'.PATH_SEPARATOR.'../ezcMail/'.get_include_path());
15
+
16
+class admin_config {
17
+    /**
18
+     * Stores configuration options specific to production environment.
19
+     * @var array
20
+     */
21
+    private $_prodConfig;
22
+
23
+    /**
24
+     * Stores configuration options specific to development environment.
25
+     * @var array
26
+     */
27
+    private $_devConfig;
28
+
29
+    /**
30
+     * Stores configuration options common to both, prod and dev, environments.
31
+     * @var type
32
+     */
33
+    private $_commonConfig;
34
+
35
+    /**
36
+     * Holds whether current server is production or not depending on the
37
+     * environment variables.
38
+     * @var boolean
39
+     */
40
+    private $_isProd;
41
+
42
+    function __construct()
43
+    {
44
+        $this->_isProd = ($_SERVER['production_server'] == 1);
45
+        $this->_commonConfig = array(
46
+            'new_admin_email_template'=>
47
+            '<p>Hi!</p><p>Here are your credentials for Carview management application:
48
+                <ul><li>Username: {username}</li><li>Password: {password}</li>
49
+                </ul></p><p>Please tell us how we are doing by mailing
50
+                your thoughts to {webmaster_email}.</p><p>Thank you!<br/>
51
+                Team Carview</p>',
52
+            
53
+            'new_admin_email_plaintext' =>
54
+            'Hi!\nHere are your credentials for Carview management application:\n
55
+                \nUsername: {username}
56
+                \nPassword: {password}
57
+                \nPlease tell us how we are doing by mailing
58
+                your thoughts to {webmaster_email}.
59
+                \n\nThank you!
60
+                \nTeam Carview',
61
+            
62
+            'new_admin_email_subject'  =>
63
+            'Carview Admin Credentials'
64
+        );
65
+
66
+        $this->_devConfig = array(
67
+            'db_schema' => 'vroom360',
68
+
69
+            'db_server' => 'localhost',
70
+            'db_server_port' => '3306',
71
+
72
+            'db_user' => 'vroomadmin',
73
+            'db_user_password' => '3e2b57d2622012ec92a10a11e548f1c4',
74
+
75
+            'save_error_to_db' => true,
76
+
77
+            'log_requests'     => true,
78
+            
79
+            'webmaster_email'  => '[email protected]',
80
+            'webmaster_name'   => 'VRoom360 Websmaster',
81
+            
82
+            'smtp_server'      => 'mail.devghai.com',
83
+            'smtp_port'        => 465,
84
+            'smtp_username'    => 'vroom360+devghai.com',
85
+            'smtp_password'    => 'vroom360',
86
+            
87
+            'filestore'        => '.\images\\',
88
+            'path_separator'   => '\\',
89
+        );
90
+
91
+        $this->_prodConfig = array (
92
+            'db_schema' => 'devghai_vroom360',
93
+
94
+            'db_server' => 'localhost',
95
+            'db_server_port' => '3306',
96
+
97
+            'db_user' => 'devghai_vroomadm',
98
+            'db_user_password' => '3e2b57d2622012ec92a10a11e548f1c4',
99
+
100
+            'save_error_to_db' => true,
101
+
102
+            'log_requests'     => true,
103
+            
104
+            'webmaster_email'  => '[email protected]',
105
+            'webmaster_name'   => 'VRoom360 Websmaster',
106
+            
107
+            'smtp_server'      => 'mail.devghai.com',
108
+            'smtp_port'        => 465,
109
+            'smtp_username'    => 'vroom360+devghai.com',
110
+            'smtp_password'    => 'vroom360',
111
+            
112
+            'filestore'        => './images/',
113
+            'path_separator'   => '/',
114
+        );
115
+    }
116
+
117
+    public function GetNewAdminEmailTemplate()
118
+    {
119
+        return $this->_commonConfig['new_admin_email_template'];
120
+    }
121
+    
122
+    public function GetNewAdminEmailPlaintextTemplate()
123
+    {
124
+        return $this->_commonConfig['new_admin_email_plaintext'];
125
+    }
126
+    
127
+    public function GetNewAdminEmailSubject()
128
+    {
129
+        return $this->_commonConfig['new_admin_email_subject'];
130
+    }
131
+
132
+    public function GetDbSchema()
133
+    {
134
+        if($this->_isProd)
135
+        {
136
+            return $this->_prodConfig['db_schema'];
137
+        }
138
+
139
+        return $this->_devConfig['db_schema'];
140
+    }
141
+
142
+    public function GetDbServer()
143
+    {
144
+        if($this->_isProd)
145
+        {
146
+            return $this->_prodConfig['db_server'];
147
+        }
148
+
149
+        return $this->_devConfig['db_server'];
150
+    }
151
+
152
+    public function GetDbPort()
153
+    {
154
+        if($this->_isProd)
155
+        {
156
+            return $this->_prodConfig['db_server_port'];
157
+        }
158
+
159
+        return $this->_devConfig['db_server_port'];
160
+    }
161
+
162
+    public function GetDbUser()
163
+    {
164
+        if($this->_isProd)
165
+        {
166
+            return $this->_prodConfig['db_user'];
167
+        }
168
+
169
+        return $this->_devConfig['db_user'];
170
+    }
171
+
172
+    public function GetDbUserPassword()
173
+    {
174
+        if($this->_isProd)
175
+        {
176
+            return $this->_prodConfig['db_user_password'];
177
+        }
178
+
179
+        return $this->_devConfig['db_user_password'];
180
+    }
181
+
182
+
183
+    public function IsSavingErrorToDbEnabled()
184
+    {
185
+        if($this->_isProd)
186
+        {
187
+            return $this->_prodConfig['save_error_to_db'];
188
+        }
189
+
190
+        return $this->_devConfig['save_error_to_db'];
191
+    }
192
+
193
+    public function IsLoggingRequestsEnabled()
194
+    {
195
+        if($this->_isProd)
196
+        {
197
+            return $this->_prodConfig['log_requests'];
198
+        }
199
+
200
+        return $this->_devConfig['log_requests'];
201
+    }
202
+    
203
+    public function GetWebmasterEmail()
204
+    {
205
+        if($this->_isProd)
206
+        {
207
+            return $this->_prodConfig['webmaster_email'];
208
+        }
209
+
210
+        return $this->_devConfig['webmaster_email'];
211
+    }
212
+    
213
+    public function GetWebmasterName()
214
+    {
215
+        if($this->_isProd)
216
+        {
217
+            return $this->_prodConfig['webmaster_name'];
218
+        }
219
+
220
+        return $this->_devConfig['webmaster_name'];
221
+    }
222
+    
223
+    public function GetSMTPServer()
224
+    {
225
+        if($this->_isProd)
226
+        {
227
+            return $this->_prodConfig['smtp_server'];
228
+        }
229
+
230
+        return $this->_devConfig['smtp_server'];
231
+    }
232
+    
233
+    public function GetSMTPPort()
234
+    {
235
+        if($this->_isProd)
236
+        {
237
+            return $this->_prodConfig['smtp_port'];
238
+        }
239
+
240
+        return $this->_devConfig['smtp_port'];
241
+    }
242
+    
243
+    public function GetSMTPUsername()
244
+    {
245
+        if($this->_isProd)
246
+        {
247
+            return $this->_prodConfig['smtp_username'];
248
+        }
249
+
250
+        return $this->_devConfig['smtp_username'];
251
+    }
252
+    
253
+    public function GetSMTPPassword()
254
+    {
255
+        if($this->_isProd)
256
+        {
257
+            return $this->_prodConfig['smtp_password'];
258
+        }
259
+
260
+        return $this->_devConfig['smtp_password'];
261
+    }
262
+    
263
+    public function GetFilestore()
264
+    {
265
+        if($this->_isProd)
266
+        {
267
+            return $this->_prodConfig['filestore'];
268
+        }
269
+
270
+        return $this->_devConfig['filestore'];
271
+    }
272
+    
273
+    public function GetPathSeparator()
274
+    {
275
+        if($this->_isProd)
276
+        {
277
+            return $this->_prodConfig['path_separator'];
278
+        }
279
+
280
+        return $this->_devConfig['path_separator'];
281
+    }
282
+}
283
+
284
+?>
... ...
@@ -0,0 +1,862 @@
1
+<?php
2
+
3
+require_once 'admin_config.php';
4
+require_once 'admin_errorObject.php';
5
+class admin_dao
6
+{
7
+    private $_queries = array
8
+    (
9
+        'isAdminAuthorized'
10
+            =>
11
+           'SELECT `admins_id`
12
+            FROM `admins` 
13
+            WHERE `admins_id` = ? AND `admins_password` = PASSWORD(?) 
14
+                   AND `admins_active` = true
15
+            LIMIT 1',
16
+        
17
+        'addNewAdmin'
18
+            => 
19
+            'INSERT INTO `admins`(`admins_id`, `admins_password`, `admins_email`, 
20
+                `admins_active`, `admins_modified_by`, `admins_modification_date`) 
21
+             VALUES(?, PASSWORD(?), ?, ?, ?, NOW())',
22
+        
23
+        'getAdmins'
24
+            =>
25
+            'SELECT `admins_id`, `admins_active`, `admins_modified_by`, `admins_modification_date` 
26
+             FROM `vroom360`.`admins`
27
+             WHERE `admins_id` LIKE CONCAT(\'%\', ?, \'%\')
28
+             LIMIT ?, ?',
29
+        
30
+        'deactivateAdmin'
31
+            =>
32
+            'UPDATE `admins`
33
+             SET `admins_active` = false
34
+             WHERE `admins_id` = ?',
35
+        
36
+        'setSurveyAvailability'
37
+            =>
38
+            'UPDATE `question_set`
39
+             SET `questionset_active` = ?,
40
+                 `questionset_modified_by` = ?,
41
+                 `questionset_modification_date` = NOW()
42
+             WHERE `questionset_id` = ?',
43
+        
44
+        'addQuestionSet'
45
+            =>
46
+            'INSERT INTO `question_set`(`questionset_setname`, `questionset_active`, 
47
+                         `questionset_modified_by`, `questionset_modification_date`)
48
+             VALUES (?, ?, ?, NOW())',
49
+        
50
+        'addQuestion'
51
+            =>
52
+            'INSERT INTO `questions`(`questions_text`, `questions_location_x`, `questions_location_y`, `questions_location_z`)
53
+             VALUES(?, ?, ?, ?)',
54
+        
55
+        'addQuestionsInSet'
56
+            =>
57
+            'INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`)
58
+             VALUES (?, ?)',
59
+        
60
+        'updateQuestion'
61
+            =>
62
+            'UPDATE `questions`
63
+             SET
64
+             `questions_text` = ?,
65
+             `questions_location_x` = ?,
66
+             `questions_location_y` = ?,
67
+             `questions_location_z` = ?
68
+             WHERE `questions_id` = ?',
69
+        
70
+        'isUsernameAvailable'
71
+            => 
72
+            'SELECT `users_loginId` FROM `users` WHERE `users_loginId` = ? LIMIT 1
73
+             UNION
74
+             SELECT `admins_id` FROM `admins` WHERE `admins_id` = ? LIMIT 1',
75
+        
76
+        'isSurveyNameAvailable'
77
+            =>
78
+            'SELECT `questionset_id`
79
+             FROM `question_set`
80
+             WHERE `questionset_setname` = ?',
81
+        
82
+        'deleteQuestionsInSet'
83
+            =>
84
+            'DELETE FROM `questions_in_set`
85
+             WHERE `questionsinset_set_id` = ? AND `questionsinset_question_id` = ?',
86
+        
87
+        'setQuestionAvailability'
88
+            =>
89
+            'UPDATE `questions`
90
+             SET `questions_active` = ?
91
+             WHERE `questions_id` = ?',
92
+        
93
+        'getQuestions'
94
+            =>
95
+            'SELECT `q`.`questions_id`,`q`.`questions_text`,
96
+                    `q`.`questions_location_x`,`q`.`questions_location_y`,
97
+                    `q`.`questions_location_z` 
98
+            FROM `questions_in_set` `qis`
99
+                    INNER JOIN  `questions` `q` 
100
+                    ON (`qis`.`questionsinset_question_id` = `q`.`questions_id`
101
+                        AND `qis`.`questionsinset_set_id` = ?)',
102
+        
103
+        'getAllSurveys'
104
+            =>
105
+            'SELECT
106
+                `questionset_id`,
107
+                `questionset_setname`,
108
+                `questionset_active`,
109
+                `questionset_modified_by`,
110
+                `questionset_modification_date`
111
+            FROM `question_set`',
112
+        
113
+        'updateQuestionSet'
114
+            =>
115
+            'UPDATE `question_set`
116
+             SET
117
+             `questionset_modified_by` = ?,
118
+             `questionset_setname` = ?,
119
+             `questionset_active` = ?,
120
+             `questionset_modification_date` = NOW()
121
+             WHERE `questionset_id` = ?',
122
+        
123
+        'downloadSurvey'
124
+            =>'',
125
+        
126
+    );
127
+    
128
+    function __construct() 
129
+    {
130
+        $this->_config = new admin_config();
131
+        //connect to DB;
132
+        $this->_dbConnection = new mysqli(
133
+                                    $this->_config->GetDbServer(),
134
+                                    $this->_config->GetDbUser(),
135
+                                    $this->_config->GetDbUserPassword(),
136
+                                    $this->_config->GetDbSchema(),
137
+                                    $this->_config->GetDbPort()
138
+                                   );
139
+        if($this->_dbConnection->connect_error)
140
+        {
141
+            return new Admin_ErrorObject(E_VROOM_DB_CONNECT_FAILED, $this->GetMysqlError('DB Connection'));
142
+        }
143
+        //select the schema we need to use.
144
+        //if data needs to support UTF-8, mysql_set_charset should be called here.
145
+    }
146
+    
147
+    public function IsUserAuthorized($userid, $password)
148
+    {
149
+        //take statement from central repository and prepare statement
150
+        if($stmt = $this->_dbConnection->prepare($this->_queries['isAdminAuthorized']))
151
+        {
152
+            //bind parameters
153
+            $stmt->bind_param('ss', $userid, $password);
154
+            
155
+            //execute query
156
+            if(!$stmt->execute())
157
+            {
158
+                return new Admin_ErrorObject(
159
+                                        E_VROOM_EXECUTE_QUERY_FAILED, 
160
+                                        $this->GetMysqlError($this->_queries['isAdminAuthorized'])
161
+                                      );
162
+            }
163
+            $stmt->store_result();
164
+            
165
+            if($stmt->num_rows > 1)
166
+            {
167
+                //something's wrong with the DB. report to admin
168
+                 return new Admin_ErrorObject(
169
+                                        E_VROOM_EXECUTE_QUERY_FAILED, 
170
+                                        $this->GetMysqlError($this->_queries['isAdminAuthorized'])
171
+                                      );
172
+            }
173
+            else if ($stmt->num_rows === 0)
174
+            {
175
+                return false;
176
+            }
177
+            
178
+            //return the data
179
+            return true;
180
+            
181
+        }
182
+        else
183
+        {
184
+            return new Admin_ErrorObject(
185
+                                    E_VROOM_PREPARE_QUERY_FAILED, 
186
+                                    $this->GetMysqlError($this->_queries['isAdminAuthorized'])
187
+                                   );
188
+        }
189
+    }
190
+    
191
+    public function IsUsernameAvailable($userid)
192
+    {
193
+        //take statement from central repository and prepare statement
194
+        if($stmt = $this->_dbConnection->prepare($this->_queries['isUsernameAvailable']))
195
+        {
196
+            //bind parameters
197
+            $stmt->bind_param('ss', $userid, $userid);
198
+            
199
+            //execute query
200
+            if(!$stmt->execute())
201
+            {
202
+                return new Admin_ErrorObject(
203
+                                        E_VROOM_EXECUTE_QUERY_FAILED, 
204
+                                        $this->GetMysqlError($this->_queries['isUsernameAvailable'])
205
+                                      );
206
+            }
207
+            $stmt->store_result();
208
+            
209
+            return $stmt->num_rows == 0;
210
+            
211
+        }
212
+        else
213
+        {
214
+            return new Admin_ErrorObject(
215
+                                    E_VROOM_PREPARE_QUERY_FAILED, 
216
+                                    $this->GetMysqlError($this->_queries['isUsernameAvailable'])
217
+                                   );
218
+        }
219
+    }
220
+    
221
+    public function AddAdmin($userid, $password, $email, $isActive, $modified_by)
222
+    {
223
+        //first call IsUsernameAvailable. Return only if username is available and there is a successful insert.
224
+        $this->_dbConnection->autocommit(false);
225
+        if(!$this->IsUsernameAvailable($userid))
226
+        {
227
+            $this->_dbConnection->rollback();
228
+            return false;
229
+        }
230
+        
231
+        if($stmt = $this->_dbConnection->prepare($this->_queries['addNewAdmin']))
232
+        {
233
+            //bind parameters
234
+            $stmt->bind_param('sssis', $userid, $password, $email, $isActive, $modified_by);
235
+
236
+            //execute query
237
+            if(!$stmt->execute())
238
+            {
239
+                $e = new Admin_ErrorObject(
240
+                                        E_VROOM_EXECUTE_QUERY_FAILED,
241
+                                        $this->GetMysqlError($this->_queries['addNewAdmin'])
242
+                                      );
243
+                $this->_dbConnection->rollback();
244
+                return $e;
245
+            }
246
+            $stmt->store_result();
247
+
248
+            if($stmt->affected_rows != 1)
249
+            {
250
+                //something's wrong with the DB. report to admin
251
+                $e = new Admin_ErrorObject(
252
+                                        E_VROOM_INSERT_FAILED,
253
+                                        $this->GetMysqlError($this->_queries['addNewAdmin'])
254
+                                      );
255
+                $this->_dbConnection->rollback();
256
+                return $e;
257
+            }
258
+
259
+            $this->_dbConnection->commit();
260
+            //return the data
261
+            return true;
262
+        }
263
+        else
264
+        {
265
+            $e = new Admin_ErrorObject(
266
+                                    E_VROOM_PREPARE_QUERY_FAILED,
267
+                                    $this->GetMysqlError($this->_queries['addNewAdmin'])
268
+                                  );
269
+            $this->_dbConnection->rollback();
270
+            return $e;
271
+        }
272
+    }
273
+    
274
+    public function GetAdmins($searchString, $startRow, $numRows)
275
+    {
276
+        
277
+    }
278
+    
279
+    public function IsSurveyNameAvailable($surveyName)
280
+    {
281
+        if($stmt = $this->_dbConnection->prepare($this->_queries['isSurveyNameAvailable']))
282
+        {
283
+            //bind parameters
284
+            $stmt->bind_param('s', $surveyName);
285
+            
286
+            //execute query
287
+            if(!$stmt->execute())
288
+            {
289
+                return new Admin_ErrorObject(
290
+                                        E_VROOM_EXECUTE_QUERY_FAILED, 
291
+                                        $this->GetMysqlError($this->_queries['isSurveyNameAvailable'])
292
+                                      );
293
+            }
294
+            $stmt->store_result();
295
+            
296
+            return $stmt->num_rows == 0;
297
+            
298
+        }
299
+        else
300
+        {
301
+            return new Admin_ErrorObject(
302
+                                    E_VROOM_PREPARE_QUERY_FAILED, 
303
+                                    $this->GetMysqlError($this->_queries['isSurveyNameAvailable'])
304
+                                   );
305
+        }
306
+    }
307
+    
308
+    public function AddQuestions(array $questions)
309
+    {
310
+        $questionIds = array();
311
+        $this->_dbConnection->autocommit(false);
312
+        
313
+        if($stmt = $this->_dbConnection->prepare($this->_queries['addQuestion']))
314
+        {
315
+            foreach ($questions as $key=>$value)
316
+            {
317
+                //bind parameters
318
+                /*
319
+                 * 'INSERT INTO `questions`(`questions_text`, `questions_location_x`, `questions_location_y`, `questions_location_z`)
320
+                    VALUES(?, ?, ?, ?)',
321
+                 */
322
+                $stmt->bind_param('sddd', $value['text'], $value['x'], $value['y'], $value['z']);
323
+
324
+                //execute query
325
+                if(!$stmt->execute())
326
+                {
327
+                    $e = new Admin_ErrorObject(
328
+                                            E_VROOM_EXECUTE_QUERY_FAILED,
329
+                                            $this->GetMysqlError($this->_queries['addQuestion'])
330
+                                          );
331
+                    $this->_dbConnection->rollback();
332
+                    return $e;
333
+                }
334
+                $stmt->store_result();
335
+                $lastInsertedId = $this->_dbConnection->insert_id;
336
+
337
+                if($lastInsertedId===0)
338
+                {
339
+                    //something's wrong with the DB. report to admin
340
+                    $e = new Admin_ErrorObject(
341
+                                            E_VROOM_INSERT_FAILED,
342
+                                            $this->GetMysqlError($this->_queries['addQuestion'])
343
+                                          );
344
+                    $this->_dbConnection->rollback();
345
+                    return $e;
346
+                }
347
+                $questionIds []= $lastInsertedId;
348
+            }
349
+            $this->_dbConnection->commit();
350
+            //return the data
351
+            return $questionIds;
352
+        }
353
+        else
354
+        {
355
+            $e = new Admin_ErrorObject(
356
+                                    E_VROOM_PREPARE_QUERY_FAILED,
357
+                                    $this->GetMysqlError($this->_queries['addQuestion'])
358
+                                  );
359
+            $this->_dbConnection->rollback();
360
+            return $e;
361
+        }
362
+    }
363
+    
364
+    public function AddQuestionSet($surveyName, $isActive, $username)
365
+    {
366
+        $this->_dbConnection->autocommit(false);
367
+        if($stmt = $this->_dbConnection->prepare($this->_queries['addQuestionSet']))
368
+        {
369
+            /*
370
+             *  INSERT INTO `question_set`(`questionset_setname`, `questionset_active`, 
371
+                         `questionset_modified_by`, `questionset_modification_date`)
372
+                VALUES (?, ?, ?, NOW())
373
+             */
374
+        
375
+            //bind parameters
376
+            $stmt->bind_param('sis', $surveyName, $isActive, $username);
377
+
378
+            //execute query
379
+            if(!$stmt->execute())
380
+            {
381
+                $e = new Admin_ErrorObject(
382
+                                        E_VROOM_EXECUTE_QUERY_FAILED,
383
+                                        $this->GetMysqlError($this->_queries['addQuestionSet'])
384
+                                      );
385
+                $this->_dbConnection->rollback();
386
+                return $e;
387
+            }
388
+            $stmt->store_result();
389
+            $surveyId = $this->_dbConnection->insert_id;
390
+            if($surveyId === 0)
391
+            {
392
+                //something's wrong with the DB. report to admin
393
+                $e = new Admin_ErrorObject(
394
+                                        E_VROOM_INSERT_FAILED,
395
+                                        $this->GetMysqlError($this->_queries['addQuestionSet'])
396
+                                      );
397
+                $this->_dbConnection->rollback();
398
+                return $e;
399
+            }
400
+
401
+            $this->_dbConnection->commit();
402
+            //return the data
403
+            return $surveyId;
404
+        }
405
+        else
406
+        {
407
+            $e = new Admin_ErrorObject(
408
+                                    E_VROOM_PREPARE_QUERY_FAILED,
409
+                                    $this->GetMysqlError($this->_queries['addQuestionSet'])
410
+                                  );
411
+            $this->_dbConnection->rollback();
412
+            return $e;
413
+        }
414
+    }
415
+    
416
+    public function AddQuestionsInSet($questionSetId, array $questionIds)
417
+    {
418
+        $this->_dbConnection->autocommit(false);
419
+        
420
+        if($stmt = $this->_dbConnection->prepare($this->_queries['addQuestionsInSet']))
421
+        {
422
+            foreach ($questionIds as $key=>$value)
423
+            {
424
+                //bind parameters
425
+                /*
426
+                 * 'addQuestionsInSet'
427
+                    =>
428
+                    'INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`)
429
+                     VALUES (?, ?)',
430
+                 */
431
+                $stmt->bind_param('ii', $questionSetId, $value);
432
+
433
+                //execute query
434
+                if(!$stmt->execute())
435
+                {
436
+                    $e = new Admin_ErrorObject(
437
+                                            E_VROOM_EXECUTE_QUERY_FAILED,
438
+                                            $this->GetMysqlError($this->_queries['addQuestionsInSet'])
439
+                                          );
440
+                    $this->_dbConnection->rollback();
441
+                    return $e;
442
+                }
443
+                $stmt->store_result();
444
+
445
+                if($stmt->affected_rows != 1)
446
+                {
447
+                    //something's wrong with the DB. report to admin
448
+                    $e = new Admin_ErrorObject(
449
+                                            E_VROOM_INSERT_FAILED,
450
+                                            $this->GetMysqlError($this->_queries['addQuestionsInSet'])
451
+                                          );
452
+                    $this->_dbConnection->rollback();
453
+                    return $e;
454
+                }
455
+            }
456
+            $this->_dbConnection->commit();
457
+            //return the data
458
+            return true;
459
+        }
460
+        else
461
+        {
462
+            $e = new Admin_ErrorObject(
463
+                                    E_VROOM_PREPARE_QUERY_FAILED,
464
+                                    $this->GetMysqlError($this->_queries['addQuestionsInSet'])
465
+                                  );
466
+            $this->_dbConnection->rollback();
467
+            return $e;
468
+        }
469
+    }
470
+    
471
+    public function UpdateQuestions(array $questions)
472
+    {
473
+        /*
474
+         * 
475
+        'updateQuestion'
476
+            =>
477
+            'UPDATE `questions`
478
+             SET
479
+             `questions_text` = ?,
480
+             `questions_location_x` = ?,
481
+             `questions_location_y` = ?,
482
+             `questions_location_z` = ?,
483
+             WHERE `questions_id` = ?',
484
+         */
485
+        $this->_dbConnection->autocommit(false);
486
+        
487
+        if($stmt = $this->_dbConnection->prepare($this->_queries['updateQuestion']))
488
+        {
489
+            foreach ($questions as $key=>$value)
490
+            {
491
+                //bind parameters
492
+                $stmt->bind_param('sdddi', $value['text'], $value['x'], $value['y'], $value['z'], $value['id']);
493
+
494
+                //execute query
495
+                if(!$stmt->execute())
496
+                {
497
+                    $e = new Admin_ErrorObject(
498
+                                            E_VROOM_EXECUTE_QUERY_FAILED,
499
+                                            $this->GetMysqlError($this->_queries['updateQuestion'])
500
+                                          );
501
+                    $this->_dbConnection->rollback();
502
+                    return $e;
503
+                }
504
+            }
505
+            $this->_dbConnection->commit();
506
+            //return the data
507
+            return true;
508
+        }
509
+        else
510
+        {
511
+            $e = new Admin_ErrorObject(
512
+                                    E_VROOM_PREPARE_QUERY_FAILED,
513
+                                    $this->GetMysqlError($this->_queries['updateQuestion'])
514
+                                  );
515
+            $this->_dbConnection->rollback();
516
+            return $e;
517
+        }
518
+    }
519
+    
520
+    public function DeleteQuestionsInSet($questionSetId, array $questionIds)
521
+    {
522
+        $this->_dbConnection->autocommit(false);
523
+        if($stmt = $this->_dbConnection->prepare($this->_queries['deleteQuestionsInSet']))
524
+        {
525
+            foreach ($questionIds as $key=>$value)
526
+            {
527
+                //bind parameters
528
+                /*
529
+                 * 'deleteQuestionsInSet'
530
+                    =>
531
+                    'DELETE FROM `questions_in_set`
532
+                     WHERE `questionsinset_set_id` = ? AND `questionsinset_question_id` = ?',
533
+
534
+                */
535
+                $stmt->bind_param('ii', $questionSetId, $value);
536
+
537
+                //execute query
538
+                if(!$stmt->execute())
539
+                {
540
+                    $e = new Admin_ErrorObject(
541
+                                            E_VROOM_EXECUTE_QUERY_FAILED,
542
+                                            $this->GetMysqlError($this->_queries['deleteQuestionsInSet'])
543
+                                          );
544
+                    $this->_dbConnection->rollback();
545
+                    return $e;
546
+                }
547
+            }
548
+            $this->_dbConnection->commit();
549
+            //return the data
550
+            return true;
551
+        }
552
+        else
553
+        {
554
+            $e = new Admin_ErrorObject(
555
+                                    E_VROOM_PREPARE_QUERY_FAILED,
556
+                                    $this->GetMysqlError($this->_queries['deleteQuestionsInSet'])
557
+                                  );
558
+            $this->_dbConnection->rollback();
559
+            return $e;
560
+        }
561
+    }
562
+    
563
+    /**
564
+     * Use this to deactivate the questions individually.
565
+     * @param 
566
+     * array $questionsIds
567
+     * Accepts the array containing IDs of the questions in database that need
568
+     * to be deleted or deactivated.
569
+     * @return Admin_ErrorObject/boolean
570
+     * Admin_ErrorObject if there was an error executing the database operation.
571
+     * boolean to communicate logical success otherwise.
572
+     */
573
+    public function SetQuestionsAvailability(array $questionsIds)
574
+    {
575
+        $this->_dbConnection->autocommit(false);
576
+        if($stmt = $this->_dbConnection->prepare($this->_queries['setQuestionAvailability']))
577
+        {
578
+            foreach ($questionIds as $key=>$value)
579
+            {
580
+                //bind parameters
581
+                /*
582
+                 * 'setQuestionState'
583
+                    =>
584
+                    'UPDATE `questions`
585
+                     SET `questions_active` = ?
586
+                     WHERE `questions_id` = ?',
587
+
588
+                */
589
+                $stmt->bind_param('ii', $value, $key);
590
+
591
+                //execute query
592
+                if(!$stmt->execute())
593
+                {
594
+                    $e = new Admin_ErrorObject(
595
+                                            E_VROOM_EXECUTE_QUERY_FAILED,
596
+                                            $this->GetMysqlError($this->_queries['setQuestionAvailability'])
597
+                                          );
598
+                    $this->_dbConnection->rollback();
599
+                    return $e;
600
+                }
601
+            }
602
+            $this->_dbConnection->commit();
603
+            //return the data
604
+            return true;
605
+        }
606
+        else
607
+        {
608
+            $e = new Admin_ErrorObject(
609
+                                    E_VROOM_PREPARE_QUERY_FAILED,
610
+                                    $this->GetMysqlError($this->_queries['setQuestionAvailability'])
611
+                                  );
612
+            $this->_dbConnection->rollback();
613
+            return $e;
614
+        }
615
+    }
616
+    
617
+    public function SetSurveyAvailability($surveyStatuses, $whoModifiedIt)
618
+    {
619
+        $this->_dbConnection->autocommit(false);
620
+        
621
+        if($stmt = $this->_dbConnection->prepare($this->_queries['setSurveyAvailability']))
622
+        {
623
+            foreach ($surveyStatuses as $surveyId=>$isActive)
624
+            {
625
+                //bind parameters
626
+                $stmt->bind_param('isi', $isActive, $whoModifiedIt, $surveyId);
627
+
628
+                //execute query
629
+                if(!$stmt->execute())
630
+                {
631
+                    $e = new Admin_ErrorObject(
632
+                                            E_VROOM_EXECUTE_QUERY_FAILED,
633
+                                            $this->GetMysqlError($this->_queries['setSurveyAvailability'])
634
+                                          );
635
+                    $this->_dbConnection->rollback();
636
+                    return $e;
637
+                }
638
+            }
639
+            $this->_dbConnection->commit();
640
+            //return the data
641
+            return true;
642
+        }
643
+        else
644
+        {
645
+            $e = new Admin_ErrorObject(
646
+                                    E_VROOM_PREPARE_QUERY_FAILED,
647
+                                    $this->GetMysqlError($this->_queries['setSurveyAvailability'])
648
+                                  );
649
+            $this->_dbConnection->rollback();
650
+            return $e;
651
+        }
652
+    }
653
+    
654
+    public function GetQuestions($questionSetId)
655
+    {
656
+        //take statement from central repository and prepare statement
657
+        if($stmt = $this->_dbConnection->prepare($this->_queries['getQuestions']))
658
+        {
659
+            //bind parameters
660
+            $stmt->bind_param('i', $questionSetId);
661
+            
662
+            //execute query
663
+            if(!$stmt->execute())
664
+            {
665
+                return new ErrorObject($this->GetMysqlError($this->_queries['getQuestions']), E_VROOM_EXECUTE_QUERY_FAILED);
666
+            }
667
+            $stmt->store_result();
668
+                      
669
+            //bind the column values to variables
670
+            $stmt->bind_result(
671
+                                $ques_id, 
672
+                                $ques_text,
673
+                                $ques_x, 
674
+                                $ques_y, 
675
+                                $ques_z
676
+                            );
677
+            $questions = array();
678
+            $questionNumber = -1;
679
+            //copy result from DB into bound variables
680
+            while($stmt->fetch())
681
+            {
682
+                $ques = array();
683
+                $ques['id'] = $ques_id; 
684
+                $ques['text'] = $ques_text; 
685
+                $ques['x'] = $ques_x; 
686
+                $ques['y'] = $ques_y; 
687
+                $ques['z'] = $ques_z; 
688
+                            
689
+                $questions[++$questionNumber] = $ques;
690
+            }
691
+            //return the data
692
+            return $questions;
693
+        }
694
+        else
695
+        {
696
+            return new ErrorObject($this->GetMysqlError($this->_queries['getQuestions']), E_VROOM_PREPARE_QUERY_FAILED);
697
+        }
698
+    }
699
+    
700
+    public function GetAllSurveys()
701
+    {
702
+        //take statement from central repository and prepare statement
703
+        if($stmt = $this->_dbConnection->prepare($this->_queries['getAllSurveys']))
704
+        {
705
+            //execute query
706
+            if(!$stmt->execute())
707
+            {
708
+                return new ErrorObject($this->GetMysqlError($this->_queries['getAllSurveys']), E_VROOM_EXECUTE_QUERY_FAILED);
709
+            }
710
+            $stmt->store_result();
711
+                      
712
+            //bind the column values to variables
713
+            $stmt->bind_result(
714
+                                $s_id, 
715
+                                $s_name,
716
+                                $s_isActive, 
717
+                                $s_modifiedBy, 
718
+                                $s_modificationDate
719
+                            );
720
+            $surveys = array();
721
+            $surveyNumber = -1;
722
+            //copy result from DB into bound variables
723
+            while($stmt->fetch())
724
+            {
725
+                $survey = array();
726
+                $survey['id'] = $s_id; 
727
+                $survey['text'] = $s_name; 
728
+                $survey['x'] = $s_isActive; 
729
+                $survey['y'] = $s_modifiedBy; 
730
+                $survey['z'] = $s_modificationDate; 
731
+                            
732
+                $surveys[++$surveyNumber] = $survey;
733
+            }
734
+            //return the data
735
+            return $surveys;
736
+        }
737
+        else
738
+        {
739
+            return new ErrorObject($this->GetMysqlError($this->_queries['getAllSurveys']), E_VROOM_PREPARE_QUERY_FAILED);
740
+        }
741
+    }
742
+    
743
+    public function UpdateQuestionSet($surveyName, $questionSetId, $isActive, $adminId)
744
+    {
745
+        //updateQuestionSetModification
746
+        $this->_dbConnection->autocommit(false);
747
+        if($stmt = $this->_dbConnection->prepare($this->_queries['updateQuestionSet']))
748
+        {
749
+            //bind parameters
750
+            $stmt->bind_param('ssii', $adminId, $surveyName, $isActive, $questionSetId);
751
+
752
+            //execute query
753
+            if(!$stmt->execute())
754
+            {
755
+                $e = new Admin_ErrorObject(
756
+                                        E_VROOM_EXECUTE_QUERY_FAILED,
757
+                                        $this->GetMysqlError($this->_queries['updateQuestionSet'])
758
+                                      );
759
+                $this->_dbConnection->rollback();
760
+                return $e;
761
+            }
762
+            
763
+            $this->_dbConnection->commit();
764
+            //return the data
765
+            return true;
766
+        }
767
+        else
768
+        {
769
+            $e = new Admin_ErrorObject(
770
+                                    E_VROOM_PREPARE_QUERY_FAILED,
771
+                                    $this->GetMysqlError($this->_queries['updateQuestionSet'])
772
+                                  );
773
+            $this->_dbConnection->rollback();
774
+            return $e;
775
+        }
776
+    }
777
+    
778
+    public function SearchSurvey($searchString, $isActive)
779
+    {
780
+        $query = 'SELECT
781
+                `qs`.`questionset_id`,
782
+                `qs`.`questionset_setname`,
783
+                `qs`.`questionset_active`,
784
+                `qs`.`questionset_modified_by`,
785
+                `qs`.`questionset_modification_date`,
786
+                COUNT(`qis`.`questionsinset_question_id`) as `question_count` 
787
+                FROM `question_set` `qs`
788
+                LEFT OUTER JOIN `questions_in_set` `qis`
789
+                ON `qs`.`questionset_id` = `qis`.`questionsinset_set_id`
790
+                WHERE `questionset_setname`  LIKE CONCAT(\'%\',?,\'%\')';
791
+        if($isActive === 0 || $isActive === 1)
792
+        {
793
+            $query = $query . ' AND `questionset_active` = '.intval($isActive);
794
+        }
795
+        
796
+        //add rest of clauses
797
+        $query = $query. ' GROUP BY `qs`.`questionset_id`
798
+                ORDER BY `qs`.`questionset_modification_date` DESC';
799
+        if($stmt = $this->_dbConnection->prepare($query))
800
+        {
801
+            //bind parameters
802
+            $stmt->bind_param('s', $searchString);
803
+            
804
+            //execute query
805
+            if(!$stmt->execute())
806
+            {
807
+                return new ErrorObject($this->GetMysqlError($query), E_VROOM_EXECUTE_QUERY_FAILED);
808
+            }
809
+            $stmt->store_result();
810
+                      
811
+            //bind the column values to variables
812
+            $stmt->bind_result(
813
+                                $set_id, 
814
+                                $set_name,
815
+                                $set_isActive, 
816
+                                $set_modifiedBy, 
817
+                                $set_modifiedOn,
818
+                                $set_questionCount
819
+                            );
820
+            $sets = array();
821
+            //copy result from DB into bound variables
822
+            while($stmt->fetch())
823
+            {
824
+                $set = array();
825
+                $set['id'] = $set_id; 
826
+                $set['name'] = $set_name; 
827
+                $set['isActive'] = $set_isActive; 
828
+                $set['modifiedBy'] = $set_modifiedBy; 
829
+                $set['modifiedOn'] = $set_modifiedOn; 
830
+                $set['quesCount'] = $set_questionCount;
831
+                $sets []= $set;
832
+            }
833
+            //return the data
834
+            return $sets;
835
+        }
836
+        else
837
+        {
838
+            return new ErrorObject($this->GetMysqlError($query), E_VROOM_PREPARE_QUERY_FAILED);
839
+        }
840
+    }
841
+    public function LogError($requestHash, $request)
842
+    {
843
+        
844
+    }
845
+    
846
+    public function CloseConnection()
847
+    {
848
+        $this->_dbConnection->commit();
849
+        $this->_dbConnection->close();
850
+    }
851
+    
852
+    private function GetMysqlError($statement)
853
+    {
854
+        $mysqlErrorCode = $this->_dbConnection->errno;
855
+        $mysqlErrorDescription = $this->_dbConnection->error;
856
+        
857
+        return "Statement: $statement, Mysql error code: $mysqlErrorCode, Mysql error description: $mysqlErrorDescription";
858
+    }
859
+    
860
+}
861
+
862
+?>
... ...
@@ -0,0 +1,165 @@
1
+<?php
2
+require_once 'admin_topbar.php';
3
+require_once 'admin_bizLayer.php';
4
+$biz = new admin_bizLayer();
5
+$searchString = '';
6
+$matchingSurveys = array();
7
+$errors = array();
8
+$isActiveYes = '';
9
+$isActiveNo = '';
10
+$isActiveEither = 'checked';
11
+$isActiveDb = -1;
12
+$message = '';
13
+$hasError = false;
14
+//you cannot scroll through multiple results. All results are dumped in one page.
15
+
16
+//do stuff only if create button has been hit.
17
+if (array_key_exists('btnSearch', $_REQUEST))
18
+{
19
+    //Confirm that survey name is not empty
20
+    $searchString = trim($_REQUEST['searchString']);
21
+    
22
+    if(strlen($searchString) === 0)
23
+    {
24
+        $errors['searchStringError'] = 'Please enter some string to search for.';
25
+        $hasError = true;
26
+    }
27
+        
28
+    switch($_REQUEST['isActive'])
29
+    {
30
+        case 'yes':
31
+            $isActiveYes = 'checked';
32
+            $isActiveNo = '';
33
+            $isActiveEither = '';
34
+            $isActiveDb = 1;
35
+            break;
36
+        
37
+        case 'no':
38
+            $isActiveYes = '';
39
+            $isActiveNo = 'checked';
40
+            $isActiveEither = '';
41
+            $isActiveDb = 0;
42
+            break;
43
+        
44
+        case 'either':
45
+            $isActiveYes = '';
46
+            $isActiveNo = '';
47
+            $isActiveEither = 'checked';
48
+            $isActiveDb = 2;
49
+            break;
50
+        
51
+        default:
52
+            $isActiveYes = '';
53
+            $isActiveNo = '';
54
+            $isActiveEither = 'checked';
55
+            $isActiveDb = 2;
56
+    }
57
+    
58
+    if(!$hasError)
59
+    {
60
+        //if there are no errors, then try putting data in to database.
61
+        $matchingSurveys = $biz->SearchSurvey($searchString, $isActiveDb);
62
+        if(count($matchingSurveys) == 0)
63
+        {
64
+            $message = '<span class=\'error\'>No surveys that matched the search criteria were found.</span>';
65
+        }
66
+    }
67
+    else
68
+    {
69
+        $message = '<span class=\'error\'>Kindly resolve the shown errors before saving the survey.</span>';
70
+    }
71
+}
72
+
73
+$biz->CloseDatabaseConnection();
74
+?>
75
+
76
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
77
+<html>
78
+    <head>
79
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
80
+        <title>Carview | VRoom 360 Download Survey Data</title>
81
+        <link rel="stylesheet" href="admin_main.css" type="text/css" />
82
+    </head>
83
+    <body>
84
+        <?php PrintTopbar('Download Survey Data'); ?>
85
+        <div id='content' class='mainContent'>
86
+            <p class='helpText'>Please find a survey that you wish to edit.</p>
87
+            <form action='admin_survey_search.php' method='post'>
88
+                <table border='0' id="tblSearchForm">
89
+                    <tbody>
90
+                        <tr>
91
+                            <td>Search Survey:</td>
92
+                            <td><input type='text' name='searchString' id='searchString' value='<?php echo $searchString ?>' />&nbsp;&nbsp;<span id="searchStringError" class='error'><?php if(array_key_exists('searchStringError', $errors)) echo $errors['searchStringError']; ?></span>
93
+                                <br/>
94
+                                <span class='helpText'>Search for surveys that contain these characters.</span>
95
+                            </td>
96
+                        </tr>
97
+                        <tr>
98
+                            <td>Is Active:</td>
99
+                            <td>
100
+                                <input type='radio' name='isActive' value='yes' <?php echo $isActiveYes; ?> />&nbsp;Yes
101
+                                <input type='radio' name='isActive' value='no' <?php echo $isActiveNo; ?>/>&nbsp;No
102
+                                <input type='radio' name='isActive' value='either' <?php echo $isActiveEither; ?>/>&nbsp;Does not matter
103
+                                <br/><span class='helpText'>Search surveys which only users can see, cannot see or may or may not see.</span></td>
104
+                        </tr>
105
+                        <tr>
106
+                            <td colspan="2">
107
+                                <input type='submit' name='btnSearch' id='btnSearch' value='Search' />
108
+                            </td>
109
+                        </tr>
110
+                    </tbody>
111
+                </table>
112
+                <p style='clear: left;'><?php echo $message; ?></p>
113
+                <?php
114
+                if(count($matchingSurveys) > 0)
115
+                echo "
116
+                <table border='0px' id='tblQuestions' cellspacing='0px'>
117
+                    <tr>
118
+                        <td colspan='5'>
119
+                            <span class='helpText'>Click the link in first column to go to the update page.</span>
120
+                        </td>
121
+                    </tr>
122
+                    <tr>
123
+                        <th>Survey Name</th>
124
+                        <th>Number of Questions</th>
125
+                        <th>Is Active</th>
126
+                        <th>Last Modified By</th>
127
+                        <th>Last Modified On</th>
128
+                    </tr>
129
+                    <tbody>";
130
+                        
131
+                        for($i = 0; $i<  count($matchingSurveys); $i++)
132
+                        {
133
+                            $styleClass = $matchingSurveys[$i]['isActive'] === 0 ? 'inActive' : 'active';
134
+                            $uiIndex = $i+1;
135
+                            $isActiveString = $matchingSurveys[$i]['isActive'] === 0 ? 'No' : 'Yes';
136
+                            $surveyName = $matchingSurveys[$i]['name'];
137
+                            echo "
138
+                        <tr valign='top' class='$styleClass'>
139
+                            <td>
140
+                                <a href='admin_survey_update.php?id=".$matchingSurveys[$i]['id']."&name=".urlencode($surveyName)."&active=".$matchingSurveys[$i]['isActive']."'
141
+                                    title='Click to update questions in $surveyName.'>$surveyName</a>
142
+                            </td>
143
+                            <td>
144
+                                ".$matchingSurveys[$i]['quesCount']."
145
+                            </td>
146
+                            <td>
147
+                               $isActiveString
148
+                            </td>
149
+                            <td>
150
+                                ".$matchingSurveys[$i]['modifiedBy']."
151
+                            </td>
152
+                            <td>
153
+                               ".date("F j, Y, g:i a", strtotime($matchingSurveys[$i]['modifiedOn']))."
154
+                            </td>
155
+                        </tr>";
156
+                        }
157
+                        if(count($matchingSurveys) > 0)
158
+                echo "
159
+                    </tbody>
160
+                </table>";
161
+                        ?>
162
+            </form>
163
+        </div>
164
+    </body>
165
+</html>
0 166
\ No newline at end of file
... ...
@@ -0,0 +1,76 @@
1
+<?php
2
+
3
+/*
4
+ * To change this template, choose Tools | Templates
5
+ * and open the template in the editor.
6
+ */
7
+
8
+/**
9
+ * Description of errors
10
+ *
11
+ * @author dghai
12
+ */
13
+require_once 'admin_config.php';
14
+require_once 'admin_dao.php';
15
+
16
+define('E_VROOM_INSERT_FAILED',                 -7);
17
+define('E_VROOM_EXECUTE_QUERY_FAILED',          -6);
18
+define('E_VROOM_PREPARE_QUERY_FAILED',          -5);
19
+define('E_VROOM_LOAD_RECV_PRI_KEY_FAILED',      -4);
20
+define('E_VROOM_LOAD_SEND_PUB_KEY_FAILED',      -3);
21
+define('E_VROOM_INVALID_FUNCTION_CALL',         -2);
22
+define('E_VROOM_DB_CONNECT_FAILED',             -1);
23
+define('E_VROOM_LOGIN_FAILED',                   1);
24
+
25
+$allErrorDescriptions = array(
26
+    E_VROOM_INSERT_FAILED               =>
27
+        'There was error inserting data into the database.',
28
+    E_VROOM_EXECUTE_QUERY_FAILED        =>
29
+        'There was an error executing the query.',
30
+    E_VROOM_PREPARE_QUERY_FAILED        =>
31
+        'Mysqli had problems with preparing the statement to send to DB.',
32
+    E_VROOM_LOAD_RECV_PRI_KEY_FAILED    =>
33
+        'There was an error loading private key to decrypt data.',
34
+    E_VROOM_LOAD_SEND_PUB_KEY_FAILED    =>
35
+        'Loading public key to encrypt data before sending to iPad... failed. Anyway, what\'s up?',
36
+    E_VROOM_INVALID_FUNCTION_CALL       =>   
37
+        'An invalid function call was made. Expected number of parameters were not delivered.',
38
+    E_VROOM_DB_CONNECT_FAILED           =>
39
+        'Could not connect to the database with the given credentials.',
40
+    E_VROOM_LOGIN_FAILED                =>
41
+        'ACCESS_DENIED',
42
+);
43
+class Admin_ErrorObject {
44
+    public $errorCode;
45
+    public $errorDescription;
46
+    
47
+    private $_config;
48
+    
49
+    function __construct($errorCode, $errorDescription = '') 
50
+    {
51
+        global $allErrorDescriptions;
52
+        $this->errorCode = $errorCode;
53
+        if($errorDescription != '')
54
+            $this->errorDescription = $errorDescription;
55
+        else
56
+            $this->errorDescription = $allErrorDescriptions[$errorCode];
57
+        
58
+        $this->_config = new admin_config();
59
+        $this->LogError($errorCode);
60
+    }
61
+    private function LogError($errorCode)
62
+    {
63
+        if(!$this->_config->IsSavingErrorToDbEnabled())
64
+        {
65
+            return;
66
+        }
67
+        if($errorCode == E_VROOM_DB_CONNECT_FAILED)
68
+        {
69
+            //TODO: Log $request to file or server's error log
70
+            return;
71
+        }
72
+        //TODO: Log $request error to DB
73
+    }
74
+}
75
+
76
+?>
... ...
@@ -0,0 +1,62 @@
1
+<?php
2
+session_start();
3
+$authFailedMessage = '';
4
+if(array_key_exists('username', $_SESSION))
5
+{
6
+    if( $_SESSION['username'] != null)
7
+        //redirect to admin page with the info we have.
8
+        header('Location: admin.php');
9
+}
10
+else if(array_key_exists ('username', $_REQUEST) && array_key_exists ('password', $_REQUEST))
11
+{
12
+    if($_REQUEST['username'] != null &&  $_REQUEST['password'] != null)
13
+    {
14
+        //authenticate
15
+        require_once 'admin_bizLayer.php';
16
+        $biz = new admin_bizLayer();
17
+        if($biz->IsUserAuthorized(trim($_REQUEST['username']), trim($_REQUEST['password'])))
18
+        {
19
+            $biz->CloseDatabaseConnection();
20
+            header('Location: admin.php');
21
+            exit();
22
+        }
23
+        $biz->CloseDatabaseConnection();
24
+        $authFailedMessage = 'Authentication Failed. Please retry.';
25
+    }
26
+}
27
+?>
28
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
29
+<html>
30
+    <head>
31
+        <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'></meta>
32
+        <title>Carview | VRoom 360</title>
33
+    </head>
34
+    <body style='text-align: center'>
35
+        <h1>Carview | VRoom 360</h1>
36
+        <form action='admin_login.php' method='post'>
37
+        <table border='0' align='center'>
38
+            <thead>
39
+                <tr>
40
+                    <th colspan='2'> Admin Login</th>
41
+                </tr>
42
+            </thead>
43
+            <tbody>
44
+                <tr>
45
+                    <td colspan='2' style='text-align: center'><span style='color: red'><?php echo $authFailedMessage; ?></span></td>
46
+                </tr>
47
+                <tr>
48
+                    <td>Username:</td>
49
+                    <td><input type='text' name='username' id='username' /> </td>
50
+                </tr>
51
+                <tr>
52
+                    <td>Password:</td>
53
+                    <td><input type='password' name='password' id='password' /></td>
54
+                </tr>
55
+                <tr>
56
+                    <td colspan='2' style='text-align: center'><input type='submit' name='sumbit' id='submit' value='Login' /></td>
57
+                </tr>
58
+            </tbody>
59
+        </table>
60
+        </form>
61
+    </body>
62
+</html>
0 63
\ No newline at end of file
... ...
@@ -0,0 +1,7 @@
1
+<?php
2
+session_start();
3
+setcookie('PHPSESSID', '', 0, '/');
4
+session_unset();
5
+session_destroy();
6
+header('Location: admin_login.php');
7
+?>
... ...
@@ -0,0 +1,61 @@
1
+/* 
2
+    Document   : admin_main
3
+    Created on : Nov 27, 2011, 3:21:03 AM
4
+    Author     : dghai
5
+    Description:
6
+        Purpose of the stylesheet follows.
7
+*/
8
+
9
+/* 
10
+   Syntax recommendation http://www.w3.org/TR/REC-CSS2/
11
+*/
12
+
13
+.error
14
+{
15
+    color:red;
16
+}
17
+
18
+.success
19
+{
20
+    color: green;
21
+}
22
+
23
+.mainContent
24
+{
25
+    padding: 5px;
26
+    text-align: left;
27
+    float: left;
28
+}
29
+
30
+.helpText
31
+{
32
+    color: #737373;
33
+    font-size: small;
34
+}
35
+
36
+#tblQuestions tr td, #tblQuestions tr th
37
+{
38
+    border: 1px #DADADA solid;
39
+    border-radius: 3px;
40
+    vertical-align: top;
41
+}
42
+
43
+#tblQuestions tr th
44
+{
45
+    text-align: center;
46
+}
47
+
48
+#tblSearchForm tr td
49
+{
50
+    vertical-align: top;
51
+}
52
+
53
+.inActive
54
+{
55
+    background-color: #FF9D9D;
56
+}
57
+
58
+.active
59
+{
60
+    background-color: #E3F2E1;
61
+}
0 62
\ No newline at end of file
... ...
@@ -0,0 +1,69 @@
1
+/* 
2
+    Document   : admin_style_topbar
3
+    Created on : Nov 27, 2011, 2:05:49 AM
4
+    Author     : dghai
5
+    Description:
6
+        Purpose of the stylesheet follows.
7
+*/
8
+
9
+/* 
10
+   Syntax recommendation http://www.w3.org/TR/REC-CSS2/
11
+*/
12
+
13
+.menuTile
14
+{
15
+    float: left; 
16
+    overflow: hidden; 
17
+    margin: 5px; 
18
+    padding: 5px;
19
+    text-align: center;
20
+}
21
+
22
+.topbar
23
+{
24
+    width: 100%;
25
+    overflow: hidden;
26
+}
27
+
28
+.topbar, .menuTile, ul.submenu
29
+{
30
+    border: 1px solid black;
31
+    border-radius: 5px;
32
+}
33
+
34
+.sectionTitle
35
+{
36
+    white-space: nowrap;
37
+    margin: 5px;
38
+    float: left;
39
+    font-size: 1.7em;
40
+    display: block;
41
+}
42
+
43
+.menuList
44
+{
45
+    text-decoration: none;
46
+    margin: 0px;
47
+    padding: 0px;
48
+    display: inline-block;
49
+    float: right;
50
+}
51
+
52
+.menuTile:hover ul.submenu
53
+{
54
+    display: block;
55
+}
56
+
57
+ul.submenu
58
+{
59
+    text-align: left;
60
+    background-color: white;
61
+    border: 1px solid #CCCCCC;
62
+    display: none;
63
+    list-style: none outside none;
64
+    overflow: hidden; /*This hides bullets for opera*/
65
+    margin-top: 0.2em;
66
+    margin-left: -5px;
67
+    padding: 0.4em;
68
+    position: absolute;
69
+}
... ...
@@ -0,0 +1,275 @@
1
+<?php
2
+require_once 'admin_topbar.php';
3
+require_once 'admin_bizLayer.php';
4
+$biz = new admin_bizLayer();
5
+$searchString = '';
6
+$matchingSurveys = array();
7
+$errors = array();
8
+$isActiveYes = '';
9
+$isActiveNo = '';
10
+$isActiveEither = 'checked';
11
+$isActiveDb = -1;
12
+$shouldPerformSearch = false;
13
+$message = '';
14
+$surveysToHide = array();
15
+$surveysToUnhide = array();
16
+//you cannot scroll through multiple results. All results are dumped in one page.
17
+
18
+function PerformSearch()
19
+{
20
+    global $searchString, $isActiveYes, $isActiveNo, $isActiveEither, $isActiveDb,
21
+            $matchingSurveys, $message, $biz;
22
+    //Confirm that survey name is not empty
23
+    $searchString = trim($_REQUEST['searchString']);
24
+            
25
+    switch($_REQUEST['isActive'])
26
+    {
27
+        case 'yes':
28
+            $isActiveYes = 'checked';
29
+            $isActiveNo = '';
30
+            $isActiveEither = '';
31
+            $isActiveDb = 1;
32
+            break;
33
+        
34
+        case 'no':
35
+            $isActiveYes = '';
36
+            $isActiveNo = 'checked';
37
+            $isActiveEither = '';
38
+            $isActiveDb = 0;
39
+            break;
40
+        
41
+        case 'either':
42
+            $isActiveYes = '';
43
+            $isActiveNo = '';
44
+            $isActiveEither = 'checked';
45
+            $isActiveDb = 2;
46
+            break;
47
+        
48
+        default:
49
+            $isActiveYes = '';
50
+            $isActiveNo = '';
51
+            $isActiveEither = 'checked';
52
+            $isActiveDb = 2;
53
+    }
54
+    
55
+    $matchingSurveys = $biz->SearchSurvey($searchString, $isActiveDb);
56
+    if($matchingSurveys instanceof Admin_ErrorObject)
57
+    {
58
+        $message = '<span class=\'error\'>Following error occured while
59
+            searching for surveys: '.$matchingSurveys->errorDescription.'</span>';
60
+    }
61
+    else if(count($matchingSurveys) == 0)
62
+    {
63
+        $message = '<span class=\'error\'>No surveys that matched the search criteria were found.</span>';
64
+    }
65
+}
66
+//do stuff only if Search button has been hit.
67
+if (array_key_exists('btnSearch', $_REQUEST))
68
+{
69
+    PerformSearch();
70
+}
71
+
72
+else if(array_key_exists('btnUpdate', $_REQUEST))
73
+{
74
+    $surveysToHide = explode(',', trim($_REQUEST['surveysToHide'], ', '));
75
+    $surveysToUnhide = explode(',', trim($_REQUEST['surveysToUnhide'], ', '));
76
+    
77
+    $retval = $biz->SetSurveyAvailability($surveysToHide, $surveysToUnhide);
78
+    if($retval instanceof Admin_ErrorObject)
79
+    {
80
+        $message = '<span class=\'error\'>Following error occured while
81
+            saving to the database: '.$retval->errorDescription.'</span>';
82
+    }
83
+    else if($retval === true)
84
+    {
85
+        $message = '<span class=\'success\'>Changes were successfully saved to the database.</span>';
86
+    }
87
+    else
88
+    {
89
+        $message = '<span class=\'success\'><em>Nothing to update.</em></span>';
90
+    }
91
+    PerformSearch();
92
+}
93
+
94
+
95
+
96
+$biz->CloseDatabaseConnection();
97
+?>
98
+
99
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
100
+<html>
101
+    <head>
102
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
103
+        <title>Carview | VRoom 360 (Un)Hide Surveys</title>
104
+        <link rel="stylesheet" href="admin_main.css" type="text/css" />
105
+        <script type="text/javascript">
106
+            function ToggleAvailability(surveyId, rowid, origStatus, button)
107
+            {
108
+                surveysToHide = document.getElementById('surveysToHide').value;
109
+                surveysToHideArray = surveysToHide.split(',');
110
+                surveysToUnhide = document.getElementById('surveysToUnhide').value;
111
+                surveysToUnhideArray = surveysToUnhide.split(',');
112
+                
113
+                if(button.innerHTML != "Unhide" && origStatus == "Yes")
114
+                {
115
+                    //originally the survey is active and i want to hide it.
116
+                    document.getElementById(rowid).className = 'inActive';
117
+                    button.innerHTML = 'Unhide';
118
+                    
119
+                    surveyIndex = surveysToHideArray.indexOf(surveyId);
120
+                    //do the hide action - add to surveysToHide
121
+                    //first check if it has been already marked for hiding
122
+                    if(surveyIndex == -1)
123
+                    {
124
+                        //questionId does not exist in the array. add it.
125
+                        surveysToHide = surveysToHide + surveyId.toString() + ',';
126
+                    }
127
+                }
128
+                else if(button.innerHTML == "Unhide" && origStatus == "Yes")
129
+                {
130
+                    //this means originally the survey was active and it is
131
+                    //being reactivated. Just remove it from the surveysToHide.
132
+                    document.getElementById(rowid).className = 'active';
133
+                    button.innerHTML = '&nbsp;&nbsp;Hide&nbsp;&nbsp;';
134
+                    
135
+                    surveyIndex = surveysToHideArray.indexOf(surveyId);
136
+                    if(surveyIndex > -1)
137
+                    {
138
+                        surveysToHideArray.splice(surveyIndex, 1);
139
+                        surveysToHide = surveysToHideArray.toString();
140
+                    }
141
+                }
142
+                else if(button.innerHTML != "Unhide" && origStatus == "No")
143
+                {
144
+                    //originally the survey is not active and i want to restore it to its original position.
145
+                    //Just remove from the unhide list
146
+                    document.getElementById(rowid).className = 'inActive';
147
+                    button.innerHTML = 'Unhide';
148
+                    
149
+                    surveyIndex = surveysToUnhideArray.indexOf(surveyId);
150
+                    if(surveyIndex > -1)
151
+                    {
152
+                        surveysToUnhideArray.splice(surveyIndex, 1);
153
+                        surveysToUnhide = surveysToUnhideArray.toString();
154
+                    }
155
+                }
156
+                else if(button.innerHTML == "Unhide" && origStatus == "No")
157
+                {
158
+                    //originally the survey is not active and i want make it available.
159
+                    //Just add to the unhide list
160
+                    document.getElementById(rowid).className = 'active';
161
+                    button.innerHTML = 'Hide';
162
+                    
163
+                    surveyIndex = surveysToUnhideArray.indexOf(surveyId);
164
+                    //do the hide action - add to surveysToHide
165
+                    //first check if it has been already marked for hiding
166
+                    if(surveyIndex == -1)
167
+                    {
168
+                        //questionId does not exist in the array. add it.
169
+                        surveysToUnhide = surveysToUnhide + surveyId.toString() + ',';
170
+                    }
171
+                }
172
+                document.getElementById('surveysToHide').value = surveysToHide;
173
+                document.getElementById('surveysToUnhide').value = surveysToUnhide;
174
+            }
175
+        </script>
176
+    </head>
177
+    <body>
178
+        <?php PrintTopbar('(Un)Hide Surveys'); ?>
179
+        <div id='content' class='mainContent'>
180
+            <p class='helpText'>Please find a survey that you wish to edit.</p>
181
+            <form action='admin_survey_availability.php' method='post'>
182
+                <table border='0' id="tblSearchForm">
183
+                    <tbody>
184
+                        <tr>
185
+                            <td>Search Survey:</td>
186
+                            <td><input type='text' name='searchString' id='searchString' value='<?php echo $searchString ?>' />&nbsp;&nbsp;<span id="searchStringError" class='error'><?php if(array_key_exists('searchStringError', $errors)) echo $errors['searchStringError']; ?></span>
187
+                                <br/>
188
+                                <span class='helpText'>Search for surveys that contain these characters. <em>Leave the field empty and hit Search to see all surveys.</em></span>
189
+                            </td>
190
+                        </tr>
191
+                        <tr>
192
+                            <td>Is Active:</td>
193
+                            <td>
194
+                                <input type='radio' name='isActive' value='yes' <?php echo $isActiveYes; ?> />&nbsp;Yes
195
+                                <input type='radio' name='isActive' value='no' <?php echo $isActiveNo; ?>/>&nbsp;No
196
+                                <input type='radio' name='isActive' value='either' <?php echo $isActiveEither; ?>/>&nbsp;Does not matter
197
+                                <br/><span class='helpText'>Search surveys which only users can see, cannot see or may or may not see.</span></td>
198
+                        </tr>
199
+                        <tr>
200
+                            <td colspan="2">
201
+                                <input type='submit' name='btnSearch' id='btnSearch' value='Search' />
202
+                            </td>
203
+                        </tr>
204
+                    </tbody>
205
+                </table>
206
+                <p style='clear: left;'><?php echo $message; ?></p>
207
+                <?php
208
+                if(count($matchingSurveys) > 0)
209
+                echo "
210
+                <table border='0px' id='tblQuestions' cellspacing='0px'>
211
+                    <tr>
212
+                        <td colspan='6'>
213
+                            <span class='helpText'>Click the link in first column to go to the update page.</span>
214
+                        </td>
215
+                    </tr>
216
+                    <tr>
217
+                        <td colspan='6'><input type='submit' name='btnUpdate' id='btnUpdate' value='Update'/>&nbsp;&nbsp;<span class='helpText'>Hit this button to save the changes you made anywhere in this page.</span></td>
218
+                        
219
+                    </tr>
220
+                    <tr>
221
+                        <th>Survey Name</th>
222
+                        <th>Number of Questions</th>
223
+                        <th>Currently Active?</th>
224
+                        <th>Last Modified By</th>
225
+                        <th>Last Modified On</th>
226
+                        <th>Action</th>
227
+                    </tr>
228
+                    <tbody>";
229
+                        
230
+                        for($i = 0; $i<  count($matchingSurveys); $i++)
231
+                        {
232
+                            $styleClass = $matchingSurveys[$i]['isActive'] === 0 ? 'inActive' : 'active';
233
+                            $uiIndex = $i+1;
234
+                            $isActiveString = $matchingSurveys[$i]['isActive'] === 0 ? 'No' : 'Yes';
235
+                            
236
+                            $surveyName = $matchingSurveys[$i]['name'];
237
+                            $surveyDbId = $matchingSurveys[$i]['id'];
238
+                            $btnText = $matchingSurveys[$i]['isActive'] === 0 ? 'Unhide' : '&nbsp;&nbsp;Hide&nbsp;&nbsp;';
239
+                            echo "
240
+                        <tr valign='top' id='s".$i."Row' class='$styleClass'>
241
+                            <td>
242
+                                <a href='admin_survey_update.php?id=".$matchingSurveys[$i]['id']."&name=".urlencode($surveyName)."&active=".$matchingSurveys[$i]['isActive']."'
243
+                                    title='Click to update questions in $surveyName.'>$surveyName</a>
244
+                            </td>
245
+                            <td>
246
+                                ".$matchingSurveys[$i]['quesCount']."
247
+                            </td>
248
+                            <td>
249
+                               $isActiveString
250
+                            </td>
251
+                            <td>
252
+                                ".$matchingSurveys[$i]['modifiedBy']."
253
+                            </td>
254
+                            <td>
255
+                               ".date("F j, Y, g:i a", strtotime($matchingSurveys[$i]['modifiedOn']))."
256
+                            </td>
257
+                            <td>
258
+                                <button name='btnToggleDelete' id='btnToggleDelete' type='button' value='$btnText' onclick='ToggleAvailability(\"$surveyDbId\", \"s".$i."Row\",\"$isActiveString\", this);'>$btnText</button>
259
+                            </td>
260
+                        </tr>";
261
+                        }
262
+                        if(count($matchingSurveys) > 0)
263
+                echo "
264
+                    <tr>
265
+                        <td colspan='6'><input type='submit' name='btnUpdate' id='btnUpdate' value='Update'/>&nbsp;&nbsp;<span class='helpText'>Hit this button to save the changes you made anywhere in this page.</span></td>
266
+                    </tr>
267
+                    </tbody>
268
+                </table>";
269
+                        ?>
270
+                <input value='' name='surveysToHide' id='surveysToHide' type='hidden' />
271
+                <input value='' name='surveysToUnhide' id='surveysToUnhide' type='hidden' />
272
+            </form>
273
+        </div>
274
+    </body>
275
+</html>
0 276
\ No newline at end of file
... ...
@@ -0,0 +1,300 @@
1
+<?php
2
+require_once 'admin_topbar.php';
3
+require_once 'admin_bizLayer.php';
4
+$biz = new admin_bizLayer();
5
+$maxQuestionSize = 100;
6
+$questionsPerPage = 10;
7
+$surveyName = '';
8
+$questions = array();
9
+$errors = array();
10
+$hasError = false;
11
+$isActive = 'checked';
12
+$saveMessage = '';
13
+$numberOfQuestions = 0;
14
+function StringToFloat( $val )
15
+{
16
+    preg_match( "#^([\+\-]|)([0-9]*)(\.([0-9]*?)|)(0*)$#", trim($val), $o );
17
+    if(count($o) == 0 )
18
+        return 'NaN';
19
+    return floatval($o[1].sprintf('%d',$o[2]).($o[3]!='.'?$o[3]:''));
20
+}
21
+
22
+//do stuff only if create button has been hit.
23
+if (array_key_exists('btnSave', $_REQUEST))
24
+{
25
+    //Confirm that survey name is not empty
26
+    $surveyName = trim($_REQUEST['surveyName']);
27
+    
28
+    if(strlen($surveyName) == 0)
29
+    {
30
+        $errors['surveyNameError'] = 'Please enter name of the survey.';
31
+        $hasError = true;
32
+    }
33
+    //check if the survey name has been used already
34
+    else if(!$biz->IsSurveyNameAvailable($surveyName))
35
+    {
36
+        $errors['surveyNameError'] = 'This survey name is not available.';
37
+        $hasError = true;
38
+    }
39
+    
40
+    //determine if survey is checked to be active immediately
41
+    if(!array_key_exists('isActive', $_REQUEST))
42
+    {
43
+        $isActive = '';
44
+    }
45
+    
46
+    //get all values of question and corresponding co-ordinates
47
+    for($i = 1; $i<$questionsPerPage +1; $i++)
48
+    {
49
+        $quesId = 'q'.$i;
50
+        $question = array(
51
+                            'text' => trim($_REQUEST[$quesId]),
52
+                            'x' => trim($_REQUEST[$quesId.'x']),
53
+                            'y' => trim($_REQUEST[$quesId.'y']),
54
+                            'z' => trim($_REQUEST[$quesId.'z'])
55
+                         );
56
+        $questions[$i] = $question;
57
+        //if either of the fields is full, check that all fields are full
58
+        //and x,y and z only have numbers in it.
59
+        if(strlen($question['text']) > 0 || strlen($question['x']) > 0
60
+                || strlen($question['y']) > 0 || strlen($question['z']) > 0)
61
+        {
62
+            if(strlen($question['text']) == 0)
63
+            {
64
+                $errors[$quesId.'Error'] = 'Please enter some text for the question.';
65
+                $hasError = true;
66
+            }
67
+            
68
+            //check for x values
69
+            if(strlen($question['x']) == 0)
70
+            {
71
+                $errors[$quesId.'xError'] = '\'x\' cannot<br/>be empty';
72
+                $hasError = true;
73
+            }
74
+            else if(strlen($question['x']) > 17)
75
+            {    
76
+                $errors[$quesId.'xError'] = 'Please enter<br/>less than<br/>17 characters.';
77
+                $hasError = true;
78
+            }
79
+            else if(StringToFloat($question['x']) === 'NaN')
80
+            {
81
+                $errors[$quesId.'xError'] = 'Invalid decimal<br/>number.';
82
+                $hasError = true;
83
+            }
84
+            
85
+            //check for y values
86
+            if(strlen($question['y']) == 0)
87
+            {
88
+                $errors[$quesId.'yError'] = '\'y\' cannot<br/>be empty';
89
+                $hasError = true;
90
+            }
91
+            else if(strlen($question['y']) > 17)
92
+            {    
93
+                $errors[$quesId.'yError'] = 'Please enter<br/>less than<br/>17 characters.';
94
+                $hasError = true;
95
+            }
96
+            else if(StringToFloat($question['y']) === 'NaN')
97
+            {
98
+                $errors[$quesId.'yError'] = 'Invalid decimal<br/>number.';
99
+                $hasError = true;
100
+            }
101
+            
102
+            //check for z values
103
+            if(strlen($question['z']) == 0)
104
+            {
105
+                $errors[$quesId.'zError'] = '\'z\' cannot<br/>be empty';
106
+                $hasError = true;
107
+            }
108
+            else if(strlen($question['z']) > 17)
109
+            {    
110
+                $errors[$quesId.'zError'] = 'Please enter<br/>less than<br/>17 characters.';
111
+                $hasError = true;
112
+            }
113
+            else if(StringToFloat($question['z']) === 'NaN')
114
+            {
115
+                $errors[$quesId.'zError'] = 'Invalid decimal<br/>number.';
116
+                $hasError = true;
117
+            }
118
+            
119
+            $numberOfQuestions++;
120
+        }
121
+    }
122
+    
123
+    if(!$hasError && $numberOfQuestions > 0)
124
+    {
125
+        //if there are no errors, then try putting data in to database.
126
+        $isSuccessfulInsert = $biz->AddNewSurvey($surveyName, $isActive == 'checked', $questions);
127
+        if($isSuccessfulInsert)
128
+        {
129
+            $questions = array();
130
+            $errors = array();
131
+            $surveyName = '';
132
+            $saveMessage = '<span class=\'success\'>Survey was successfully saved to the database.</span>';
133
+        }
134
+        else
135
+        {
136
+            $saveMessage = '<span class=\'error\'>There was an error saving the survey to the database.'.$isSuccessfulInsert->errorDescription.'</span>';
137
+        }
138
+    }
139
+    else
140
+    {
141
+        $saveMessage = '<span class=\'error\'>Kindly resolve the shown errors before saving the survey.</span>';
142
+        if($numberOfQuestions === 0)
143
+        {
144
+            $saveMessage = '<span class=\'error\'>Please enter at least one question to the survey.</span>';
145
+        }
146
+    }
147
+}
148
+
149
+$biz->CloseDatabaseConnection();
150
+?>
151
+
152
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
153
+<html>
154
+    <head>
155
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
156
+        <title>Carview | VRoom 360 Create Survey</title>
157
+        <link rel="stylesheet" href="admin_main.css" type="text/css" />
158
+        <script type="text/javascript">
159
+            function UpdateCharactersRemaining(targetElement, srcTextarea)
160
+            {
161
+                var maxSize = 100;
162
+                var tag = document.getElementById(targetElement);
163
+                var textBox = document.getElementById(srcTextarea);
164
+                var charLeft = maxSize - textBox.value.length;
165
+                
166
+                if(charLeft <0)
167
+                {
168
+                    textBox.value = textBox.value.substr(0, maxSize);
169
+                    charLeft = 0;
170
+                }
171
+                tag.textContent = charLeft;
172
+            }
173
+        </script>
174
+    </head>
175
+    <body>
176
+        <?php PrintTopbar('Create Survey'); ?>
177
+        <div id='content' class='mainContent'>
178
+            <p class='helpText'>A few things to keep in mind
179
+                <ol class='helpText'>
180
+                    <li>Owing to the nature of the experience, <ul>
181
+                            <li>please consider adding as less questions as possible.</li>
182
+                            <li>watch out for questions that may feel redundant to the end user.</li>
183
+                            <li>please remember that 'How do you feel about...' appears before every question in the application.</li>
184
+                        </ul></li>
185
+                    <li>You need not fill all questions. Fill the ones you want and hit Save.</li>
186
+                </ol></p>
187
+            <form action='admin_survey_create.php' method='post'>
188
+                <table border='0'>
189
+                    <tbody>
190
+                        <tr>
191
+                            <td>Survey Name:</td>
192
+                            <td><input type='text' name='surveyName' id='surveyName' value='<?php echo $surveyName ?>' />&nbsp;&nbsp;<span id="surveyNameError" class='error'><?php if(array_key_exists('surveyNameError', $errors)) echo $errors['surveyNameError']; ?></span></td>
193
+                        </tr>
194
+                        <tr>
195
+                            <td>Is Active:</td>
196
+                            <td><input type='checkbox' name='isActive' value='checked' <?php echo $isActive ?> />&nbsp;<span class='helpText'>Will this survey be active as soon as the information is saved?</span></td>
197
+                        </tr>
198
+                    </tbody>
199
+                </table>
200
+                <p style='clear: left;'><?php echo $saveMessage; ?></p>
201
+                <table border='0px' id='tblQuestions' cellspacing='0px'>
202
+                    <tr>
203
+                        <td colspan='5'>
204
+                            <input type='submit' name='btnSave' id='btnSave' value='Save' />&nbsp;&nbsp;<span class='helpText'>Hit this button to save the changes made on this page. <em>Page will be cleared once the changes are successfully saved.</em></span>
205
+                        </td>
206
+                    </tr>
207
+                    <tr>
208
+                        <th>Question<br/>Number</th>
209
+                        <th>Question Text</th>
210
+                        <th>x</th>
211
+                        <th>y</th>
212
+                        <th>z</th>
213
+                    </tr>
214
+                    <tbody>
215
+                        
216
+                        <?php 
217
+                        for($i = 1; $i<$questionsPerPage +1; $i++)
218
+                        {
219
+                            $quesId = 'q'.$i;
220
+                            $quesTextError = '';
221
+                            $xError = '';
222
+                            $yError = '';
223
+                            $zError = '';
224
+                            $charLeft = $maxQuestionSize;
225
+                            $quesText = '';//
226
+                            $x = '';
227
+                            $y = '';
228
+                            $z = '';
229
+                            
230
+                            //put in the values fetched from the user
231
+                            if(array_key_exists($i, $questions))
232
+                            {
233
+                                $charLeft = $maxQuestionSize - strlen($questions[$i]['text']);
234
+                                $quesText = htmlspecialchars($questions[$i]['text'], ENT_QUOTES);
235
+                            }
236
+                            if(array_key_exists($i, $questions))
237
+                            {
238
+                                $x = htmlspecialchars($questions[$i]['x'], ENT_QUOTES);
239
+                            }
240
+                            if(array_key_exists($i, $questions))
241
+                            {
242
+                                $y = htmlspecialchars($questions[$i]['y'], ENT_QUOTES);
243
+                            }
244
+                            if(array_key_exists($i, $questions))
245
+                            {
246
+                                $z = htmlspecialchars($questions[$i]['z'], ENT_QUOTES);
247
+                            }
248
+                            
249
+                            //set the errors
250
+                            if(array_key_exists($quesId.'Error', $errors))
251
+                            {
252
+                                $quesTextError = $errors[$quesId.'Error'];
253
+                            }
254
+                            if(array_key_exists($quesId.'xError', $errors))
255
+                            {
256
+                                $xError = $errors[$quesId.'xError'];
257
+                            }
258
+                            if(array_key_exists($quesId.'yError', $errors))
259
+                            {
260
+                                $yError = $errors[$quesId.'yError'];
261
+                            }
262
+                            if(array_key_exists($quesId.'zError', $errors))
263
+                            {
264
+                                $zError = $errors[$quesId.'zError'];
265
+                            }
266
+                            echo "
267
+                        <tr valign='top'>
268
+                            <td>$i.</td>
269
+                            <td>
270
+                                <textarea cols='50' rows='5' title='Please enter the question here.' id='q".$i."' name='q".$i."' 
271
+                                          onkeydown=\"UpdateCharactersRemaining('q".$i."CharCount', 'q".$i."');\"
272
+                                          onkeyup=\"UpdateCharactersRemaining('q".$i."CharCount', 'q".$i."');\"
273
+                                          >$quesText</textarea>
274
+                                <span style='white-space: nowrap'><span id='q".$i."CharCount'>$charLeft</span> characters left.</span><br/>
275
+                                <span id='q".$i."Error' class='error'>$quesTextError</span>
276
+                            </td>
277
+                            <td>
278
+                                <input id='q".$i."x' name='q".$i."x' maxlength=10 type='text' size='17' value='$x'></input>
279
+                                <br/><span id='q".$i."xError' class='error'>$xError</span>
280
+                            </td>
281
+                            <td>
282
+                                <input id='q".$i."y' name='q".$i."y' maxlength=10 type='text' size='17' value='$y'></input>
283
+                                <br/><span id='q".$i."yError' class='error'>$yError</span>
284
+                            </td>
285
+                            <td>
286
+                                <input id='q".$i."z' name='q".$i."z' maxlength=10 type='text' size='17' value='$z'></input>
287
+                                <br/><span id='q".$i."zError' class='error'>$zError</span>
288
+                            </td>
289
+                        </tr>";
290
+                        }
291
+                        ?>
292
+                        <tfoot>
293
+                            <td colspan='5'><input type='submit' name='btnSave' id='btnSave' value='Save' />&nbsp;&nbsp;<span class='helpText'>Hit this button to save the changes made on this page. <em>Page will be cleared once the changes are successfully saved.</em></span></td>
294
+                        </tfoot>
295
+                    </tbody>
296
+                </table>
297
+            </form>
298
+        </div>
299
+    </body>
300
+</html>
0 301
\ No newline at end of file
... ...
@@ -0,0 +1,165 @@
1
+<?php
2
+require_once 'admin_topbar.php';
3
+require_once 'admin_bizLayer.php';
4
+$biz = new admin_bizLayer();
5
+$searchString = '';
6
+$matchingSurveys = array();
7
+$errors = array();
8
+$isActiveYes = '';
9
+$isActiveNo = '';
10
+$isActiveEither = 'checked';
11
+$isActiveDb = -1;
12
+$message = '';
13
+$hasError = false;
14
+//you cannot scroll through multiple results. All results are dumped in one page.
15
+
16
+//do stuff only if create button has been hit.
17
+if (array_key_exists('btnSearch', $_REQUEST))
18
+{
19
+    //Confirm that survey name is not empty
20
+    $searchString = trim($_REQUEST['searchString']);
21
+    
22
+    if(strlen($searchString) === 0)
23
+    {
24
+        $errors['searchStringError'] = 'Please enter some string to search for.';
25
+        $hasError = true;
26
+    }
27
+        
28
+    switch($_REQUEST['isActive'])
29
+    {
30
+        case 'yes':
31
+            $isActiveYes = 'checked';
32
+            $isActiveNo = '';
33
+            $isActiveEither = '';
34
+            $isActiveDb = 1;
35
+            break;
36
+        
37
+        case 'no':
38
+            $isActiveYes = '';
39
+            $isActiveNo = 'checked';
40
+            $isActiveEither = '';
41
+            $isActiveDb = 0;
42
+            break;
43
+        
44
+        case 'either':
45
+            $isActiveYes = '';
46
+            $isActiveNo = '';
47
+            $isActiveEither = 'checked';
48
+            $isActiveDb = 2;
49
+            break;
50
+        
51
+        default:
52
+            $isActiveYes = '';
53
+            $isActiveNo = '';
54
+            $isActiveEither = 'checked';
55
+            $isActiveDb = 2;
56
+    }
57
+    
58
+    if(!$hasError)
59
+    {
60
+        //if there are no errors, then try putting data in to database.
61
+        $matchingSurveys = $biz->SearchSurvey($searchString, $isActiveDb);
62
+        if(count($matchingSurveys) == 0)
63
+        {
64
+            $message = '<span class=\'error\'>No surveys that matched the search criteria were found.</span>';
65
+        }
66
+    }
67
+    else
68
+    {
69
+        $message = '<span class=\'error\'>Kindly resolve the shown errors before saving the survey.</span>';
70
+    }
71
+}
72
+
73
+$biz->CloseDatabaseConnection();
74
+?>
75
+
76
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
77
+<html>
78
+    <head>
79
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
80
+        <title>Carview | VRoom 360 Search Survey</title>
81
+        <link rel="stylesheet" href="admin_main.css" type="text/css" />
82
+    </head>
83
+    <body>
84
+        <?php PrintTopbar('Update Survey > Search'); ?>
85
+        <div id='content' class='mainContent'>
86
+            <p class='helpText'>Please find a survey that you wish to edit.</p>
87
+            <form action='admin_survey_search.php' method='post'>
88
+                <table border='0' id="tblSearchForm">
89
+                    <tbody>
90
+                        <tr>
91
+                            <td>Search Survey:</td>
92
+                            <td><input type='text' name='searchString' id='searchString' value='<?php echo $searchString ?>' />&nbsp;&nbsp;<span id="searchStringError" class='error'><?php if(array_key_exists('searchStringError', $errors)) echo $errors['searchStringError']; ?></span>
93
+                                <br/>
94
+                                <span class='helpText'>Search for surveys that contain these characters.</span>
95
+                            </td>
96
+                        </tr>
97
+                        <tr>
98
+                            <td>Is Active:</td>
99
+                            <td>
100
+                                <input type='radio' name='isActive' value='yes' <?php echo $isActiveYes; ?> />&nbsp;Yes
101
+                                <input type='radio' name='isActive' value='no' <?php echo $isActiveNo; ?>/>&nbsp;No
102
+                                <input type='radio' name='isActive' value='either' <?php echo $isActiveEither; ?>/>&nbsp;Does not matter
103
+                                <br/><span class='helpText'>Search surveys which only users can see, cannot see or may or may not see.</span></td>
104
+                        </tr>
105
+                        <tr>
106
+                            <td colspan="2">
107
+                                <input type='submit' name='btnSearch' id='btnSearch' value='Search' />
108
+                            </td>
109
+                        </tr>
110
+                    </tbody>
111
+                </table>
112
+                <p style='clear: left;'><?php echo $message; ?></p>
113
+                <?php
114
+                if(count($matchingSurveys) > 0)
115
+                echo "
116
+                <table border='0px' id='tblQuestions' cellspacing='0px'>
117
+                    <tr>
118
+                        <td colspan='5'>
119
+                            <span class='helpText'>Click the link in first column to go to the update page.</span>
120
+                        </td>
121
+                    </tr>
122
+                    <tr>
123
+                        <th>Survey Name</th>
124
+                        <th>Number of Questions</th>
125
+                        <th>Is Active</th>
126
+                        <th>Last Modified By</th>
127
+                        <th>Last Modified On</th>
128
+                    </tr>
129
+                    <tbody>";
130
+                        
131
+                        for($i = 0; $i<  count($matchingSurveys); $i++)
132
+                        {
133
+                            $styleClass = $matchingSurveys[$i]['isActive'] === 0 ? 'inActive' : 'active';
134
+                            $uiIndex = $i+1;
135
+                            $isActiveString = $matchingSurveys[$i]['isActive'] === 0 ? 'No' : 'Yes';
136
+                            $surveyName = $matchingSurveys[$i]['name'];
137
+                            echo "
138
+                        <tr valign='top' class='$styleClass'>
139
+                            <td>
140
+                                <a href='admin_survey_update.php?id=".$matchingSurveys[$i]['id']."&name=".urlencode($surveyName)."&active=".$matchingSurveys[$i]['isActive']."'
141
+                                    title='Click to update questions in $surveyName.'>$surveyName</a>
142
+                            </td>
143
+                            <td>
144
+                                ".$matchingSurveys[$i]['quesCount']."
145
+                            </td>
146
+                            <td>
147
+                               $isActiveString
148
+                            </td>
149
+                            <td>
150
+                                ".$matchingSurveys[$i]['modifiedBy']."
151
+                            </td>
152
+                            <td>
153
+                               ".date("F j, Y, g:i a", strtotime($matchingSurveys[$i]['modifiedOn']))."
154
+                            </td>
155
+                        </tr>";
156
+                        }
157
+                        if(count($matchingSurveys) > 0)
158
+                echo "
159
+                    </tbody>
160
+                </table>";
161
+                        ?>
162
+            </form>
163
+        </div>
164
+    </body>
165
+</html>
0 166
\ No newline at end of file
... ...
@@ -0,0 +1,363 @@
1
+<?php
2
+require_once 'admin_topbar.php';
3
+require_once 'admin_bizLayer.php';
4
+$biz = new admin_bizLayer();
5
+$maxQuestionSize = 100;
6
+$questionsPerPage = 10;
7
+$surveyName = '';
8
+$questions = array();
9
+$errors = array();
10
+$hasError = false;
11
+$isActiveUI = '';
12
+$isActiveDB = false;
13
+$saveMessage = '';
14
+$quesCount = 0;
15
+$setId = -1;
16
+$deletedQuestionIds = array();
17
+if(!(array_key_exists('id', $_GET) && array_key_exists('name', $_GET) && array_key_exists('active', $_GET)))
18
+{
19
+    echo '<script>alert("Important parameters are missing from the link! Please hit the browser\'s back button and try a valid action.")</script>';
20
+    exit();
21
+}
22
+$formSubmitLink ='admin_survey_update.php?id='.$_GET['id'].'&name='.urlencode($_GET['name']).'&active='.$_GET['active'];
23
+
24
+function StringToFloat( $val )
25
+{
26
+    preg_match( "#^([\+\-]|)([0-9]*)(\.([0-9]*?)|)(0*)$#", trim($val), $o );
27
+    if(count($o) == 0 )
28
+        return 'NaN';
29
+    return floatval($o[1].sprintf('%d',$o[2]).($o[3]!='.'?$o[3]:''));
30
+}
31
+
32
+//when loading the survey, make sure it is not a postback to the page.
33
+if(!array_key_exists('btnUpdate', $_REQUEST))
34
+{
35
+    $setId = trim($_GET['id']);
36
+    
37
+    if(array_key_exists('name', $_GET))
38
+        $surveyName = $_GET['name'];
39
+    
40
+    if(array_key_exists('active', $_GET))
41
+        $isActiveUI = $_GET['active'];
42
+    
43
+    //if we are passed an id in URL, pull data from the DB
44
+    $questions = $biz->GetQuestions(trim($setId));
45
+    if(!is_array($questions) || count($questions) == 0)
46
+        $saveMessage = "<span class='error'>Unable to find data for the selected survey! Please <a href='admin_survey_search.php'>click here</a> to search for a survey.</span>";
47
+    $quesCount = count($questions);
48
+}
49
+//do stuff only if Update button has been hit.
50
+if (array_key_exists('btnUpdate', $_REQUEST))
51
+{
52
+    $setId = $_REQUEST['setId'];
53
+    $deletedQuestionIds = explode(',', trim($_REQUEST['questionsToDelete'], ','));
54
+    
55
+    if(array_key_exists('isActive', $_REQUEST))
56
+    {
57
+        $isActiveUI = 1;
58
+        $isActiveDB = true;
59
+    }
60
+    else
61
+    {
62
+        $isActiveUI = 0;
63
+        $isActiveDB = false;
64
+    }
65
+    //Confirm that survey name is not empty
66
+    $surveyName = trim($_REQUEST['surveyName']);
67
+    
68
+    if(strlen($surveyName) == 0)
69
+    {
70
+        $errors['surveyNameError'] = 'Please enter name of the survey.';
71
+        $hasError = true;
72
+    }
73
+    //check if the survey name has been used already only if it has changed
74
+    else if($surveyName != $_GET['name'] && !$biz->IsSurveyNameAvailable($surveyName))
75
+    {
76
+        $errors['surveyNameError'] = 'This survey name is not available.';
77
+        $hasError = true;
78
+    }
79
+        
80
+    //get all values of question and corresponding co-ordinates
81
+    $quesCount = intval(trim($_REQUEST['quesCount']));
82
+    for($i = 0; $i<$quesCount; $i++)
83
+    {
84
+        $quesId = 'q'.$i;
85
+        $question = array(
86
+                            'text' => trim($_REQUEST[$quesId]),
87
+                            'x' => trim($_REQUEST[$quesId.'x']),
88
+                            'y' => trim($_REQUEST[$quesId.'y']),
89
+                            'z' => trim($_REQUEST[$quesId.'z']),
90
+                            'id' => trim($_REQUEST[$quesId.'Id'])
91
+                         );
92
+        $questions []= $question;
93
+        
94
+        //if either of the fields is full, check that all other fields are full
95
+        //and x,y and z only have numbers in it.
96
+        if(strlen($question['text']) > 0 || strlen($question['x']) > 0
97
+                || strlen($question['y']) > 0 || strlen($question['z']) > 0)
98
+        {
99
+            if(strlen($question['text']) == 0)
100
+            {
101
+                $errors[$quesId.'Error'] = 'Please enter some text for the question.';
102
+                $hasError = true;
103
+            }
104
+            
105
+            //check for x values
106
+            if(strlen($question['x']) == 0)
107
+            {
108
+                $errors[$quesId.'xError'] = '\'x\' cannot<br/>be empty';
109
+                $hasError = true;
110
+            }
111
+            else if(strlen($question['x']) > 17)
112
+            {    
113
+                $errors[$quesId.'xError'] = 'Please enter<br/>less than<br/>17 characters.';
114
+                $hasError = true;
115
+            }
116
+            else if(StringToFloat($question['x']) === 'NaN')
117
+            {
118
+                $errors[$quesId.'xError'] = 'Invalid decimal<br/>number.';
119
+                $hasError = true;
120
+            }
121
+            
122
+            //check for y values
123
+            if(strlen($question['y']) == 0)
124
+            {
125
+                $errors[$quesId.'yError'] = '\'y\' cannot<br/>be empty';
126
+                $hasError = true;
127
+            }
128
+            else if(strlen($question['y']) > 17)
129
+            {    
130
+                $errors[$quesId.'yError'] = 'Please enter<br/>less than<br/>17 characters.';
131
+                $hasError = true;
132
+            }
133
+            else if(StringToFloat($question['y']) === 'NaN')
134
+            {
135
+                $errors[$quesId.'yError'] = 'Invalid decimal<br/>number.';
136
+                $hasError = true;
137
+            }
138
+            
139
+            //check for z values
140
+            if(strlen($question['z']) == 0)
141
+            {
142
+                $errors[$quesId.'zError'] = '\'z\' cannot<br/>be empty';
143
+                $hasError = true;
144
+            }
145
+            else if(strlen($question['z']) > 17)
146
+            {    
147
+                $errors[$quesId.'zError'] = 'Please enter<br/>less than<br/>17 characters.';
148
+                $hasError = true;
149
+            }
150
+            else if(StringToFloat($question['z']) === 'NaN')
151
+            {
152
+                $errors[$quesId.'zError'] = 'Invalid decimal<br/>number.';
153
+                $hasError = true;
154
+            }
155
+        }
156
+    }
157
+    
158
+    if(!$hasError)
159
+    {
160
+        //if there are no errors, then try putting data in to database.
161
+        $isSuccessfulUpdate = $biz->UpdateSurvey($surveyName, $setId, $isActiveDB, $questions, $deletedQuestionIds, array());
162
+        if($isSuccessfulUpdate === true)
163
+        {
164
+            //refetch the questions from the database.
165
+            $questions = $biz->GetQuestions($setId);
166
+            $deletedQuestionIds = array();
167
+            $errors = array();
168
+            $saveMessage = '<span class=\'success\'>Changes were successfully saved to the database.</span>';
169
+            $formSubmitLink ='admin_survey_update.php?id='.$_GET['id'].'&name='.urlencode($surveyName).'$active='.$isActiveUI;
170
+        }
171
+        else
172
+        {
173
+            $saveMessage = '<span class=\'error\'>There was an error saving the survey to the database.<br/>'.$isSuccessfulUpdate->errorDescription.'</span>';
174
+        }
175
+    }
176
+    else
177
+    {
178
+        $saveMessage = '<span class=\'error\'>Kindly resolve the shown errors before saving the survey.</span>';
179
+    }
180
+}
181
+
182
+$biz->CloseDatabaseConnection();
183
+?>
184
+
185
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
186
+<html>
187
+    <head>
188
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
189
+        <title>Carview | VRoom 360 Edit Survey</title>
190
+        <link rel="stylesheet" href="admin_main.css" type="text/css" />
191
+        <script type="text/javascript">
192
+            function ToggleDeletion(questionId, rowid, button)
193
+            {
194
+                questionsToDelete = document.getElementById('questionsToDelete').value;
195
+                questionArray = questionsToDelete.split(',');
196
+                questionIndex = questionArray.indexOf(questionId);
197
+                if(button.innerHTML == "Delete")
198
+                {
199
+                    document.getElementById(rowid).style.backgroundColor = '#FF9D9D';
200
+                    button.innerHTML = 'Undelete';
201
+                    
202
+                    //do the delete action - add to questionsToDelete
203
+                    //first check if it has been already marked for deletion
204
+                    if(questionIndex == -1)
205
+                    {
206
+                        //questionId does not exist in the array. add it.
207
+                        questionsToDelete = questionsToDelete + questionId.toString() + ',';
208
+                    }
209
+                }
210
+                else
211
+                {
212
+                    document.getElementById(rowid).style.backgroundColor = '#FFFFFF';
213
+                    button.innerHTML = 'Delete';
214
+                    if(questionIndex > -1)
215
+                    {
216
+                        questionArray.splice(questionIndex, 1);
217
+                        //questionId does not exist in the array. add it.
218
+                        questionsToDelete = questionArray.toString();
219
+                    }
220
+                }
221
+                document.getElementById('questionsToDelete').value = questionsToDelete;
222
+            }
223
+            
224
+            
225
+            function UpdateCharactersRemaining(targetElement, srcTextarea)
226
+            {
227
+                var maxSize = 100;
228
+                var tag = document.getElementById(targetElement);
229
+                var textBox = document.getElementById(srcTextarea);
230
+                var charLeft = maxSize - textBox.value.length;
231
+                
232
+                if(charLeft <0)
233
+                {
234
+                    textBox.value = textBox.value.substr(0, maxSize);
235
+                    charLeft = 0;
236
+                }
237
+                tag.textContent = charLeft;
238
+            }
239
+            
240
+            
241
+        </script>
242
+    </head>
243
+    <body>
244
+        <?php PrintTopbar('Update Survey'); ?>
245
+        <div id='content' class='mainContent'>
246
+            <p class='helpText'>A few things to keep in mind
247
+                <ol class='helpText'>
248
+                    <li>To Edit the question, please directly modify the data as you see it and hit update at the bottom of the page to save it.</li>
249
+                    <li>Delete does not delete the questions until you hit Update at the end of the page.</li>
250
+                    <li>You do not need to Update after every change. Please perform all edits and deletes and then hit Update once to save all changes at once.</li>
251
+                    <li>Changing the survey name after the users have taken it may cause confusion. This feature has been provided mainly to correct typographical errors.</li>
252
+                </ol></p>
253
+            <form action='<?php echo $formSubmitLink; ?>' method='post'>
254
+                <table border='0'>
255
+                    <tbody>
256
+                        <tr>
257
+                            <td>Survey Name:</td>
258
+                            <td><input type='text' name='surveyName' id='surveyName' value='<?php echo $surveyName ?>' />&nbsp;&nbsp;<span id="surveyNameError" class='error'><?php if(array_key_exists('surveyNameError', $errors)) echo $errors['surveyNameError']; ?></span></td>
259
+                       </tr>
260
+                       <tr>
261
+                            <td>Is Active:</td>
262
+                            <td><input type='checkbox' name='isActive' value='checked' <?php echo $isActiveUI?'checked' : ''; ?> />&nbsp;<span class='helpText'>Will this survey be visible to end users as soon as the information is saved?</span></td>
263
+                        </tr>
264
+                      
265
+                    </tbody>
266
+                </table>
267
+                <p style='clear: left;'><?php echo $saveMessage; ?></p>
268
+                <table border='0px' id='tblQuestions' cellspacing='0px'>
269
+                    <tr>
270
+                        <td colspan='6'><input type='submit' name='btnUpdate' id='btnUpdate' value='Update'/>&nbsp;&nbsp;<span class='helpText'>Hit this button to save the changes you made anywhere in this page.</span></td>
271
+                    </tr>
272
+                    <tr>
273
+                        <th>Question<br/>Number</th>
274
+                        <th>Question Text</th>
275
+                        <th>x</th>
276
+                        <th>y</th>
277
+                        <th>z</th>
278
+                        <th>Action</th>
279
+                    </tr>
280
+                    <tbody>
281
+                        <?php 
282
+                        for($i = 0; $i<count($questions); $i++)
283
+                        {
284
+                            $uiIndex = $i + 1;
285
+                            $quesId = 'q'.$i;
286
+                            $quesTextError = '';
287
+                            $xError = '';
288
+                            $yError = '';
289
+                            $zError = '';
290
+                            $charLeft = $maxQuestionSize;
291
+                            
292
+                            $charLeft = $maxQuestionSize - strlen($questions[$i]['text']);
293
+                            $quesText = htmlspecialchars($questions[$i]['text'], ENT_QUOTES);
294
+                            $x = substr(htmlspecialchars($questions[$i]['x'], ENT_QUOTES), 0, 17);
295
+                            $y = substr(htmlspecialchars($questions[$i]['y'], ENT_QUOTES), 0, 17);
296
+                            $z = substr(htmlspecialchars($questions[$i]['z'], ENT_QUOTES), 0, 17);
297
+                            $quesDbId = $questions[$i]['id'];
298
+                            $isDeleted = !(array_search($quesDbId, $deletedQuestionIds) === false);
299
+                            $style = 'style=\'background-color: #FFFFFF;\'';
300
+                            $btnText = 'Delete';
301
+                            if($isDeleted)
302
+                            {
303
+                                $style = 'style=\'background-color: #FF9D9D;\'';
304
+                                $btnText = 'Undelete';
305
+                            }
306
+                            //set the errors
307
+                            if(array_key_exists($quesId.'Error', $errors))
308
+                            {
309
+                                $quesTextError = $errors[$quesId.'Error'];
310
+                            }
311
+                            if(array_key_exists($quesId.'xError', $errors))
312
+                            {
313
+                                $xError = $errors[$quesId.'xError'];
314
+                            }
315
+                            if(array_key_exists($quesId.'yError', $errors))
316
+                            {
317
+                                $yError = $errors[$quesId.'yError'];
318
+                            }
319
+                            if(array_key_exists($quesId.'zError', $errors))
320
+                            {
321
+                                $zError = $errors[$quesId.'zError'];
322
+                            }
323
+                            echo "
324
+                        <tr valign='top' id='q".$i."Row' $style>
325
+                            <td>$uiIndex.<input name='q".$i."Id' id='q".$i."Id' value='$quesDbId' type='hidden' /></td>
326
+                            <td>
327
+                                <textarea cols='50' rows='5' title='Please enter the question here.' id='q".$i."' name='q".$i."' 
328
+                                          onkeydown=\"UpdateCharactersRemaining('q".$i."CharCount', 'q".$i."');\"
329
+                                          onkeyup=\"UpdateCharactersRemaining('q".$i."CharCount', 'q".$i."');\"
330
+                                          >$quesText</textarea>
331
+                                <span style='white-space: nowrap'><span id='q".$i."CharCount'>$charLeft</span> characters left.</span><br/>
332
+                                <span id='q".$i."Error' class='error'>$quesTextError</span>
333
+                            </td>
334
+                            <td>
335
+                                <input id='q".$i."x' name='q".$i."x' maxlength=10 type='text' size='17' value='$x'></input>
336
+                                <br/><span id='q".$i."xError' class='error'>$xError</span>
337
+                            </td>
338
+                            <td>
339
+                                <input id='q".$i."y' name='q".$i."y' maxlength=10 type='text' size='17' value='$y'></input>
340
+                                <br/><span id='q".$i."yError' class='error'>$yError</span>
341
+                            </td>
342
+                            <td>
343
+                                <input id='q".$i."z' name='q".$i."z' maxlength=10 type='text' size='17' value='$z'></input>
344
+                                <br/><span id='q".$i."zError' class='error'>$zError</span>
345
+                            </td>
346
+                            <td>
347
+                                <button name='btnToggleDelete' id='btnToggleDelete' type='button' value='$btnText' onclick='ToggleDeletion(\"$quesDbId\", \"q".$i."Row\", this);'>$btnText</button>
348
+                            </td>
349
+                        </tr>";
350
+                        }
351
+                        ?>
352
+                        <tfoot>
353
+                        <td colspan='6'><input type='submit' name='btnUpdate' id='btnUpdate' value='Update'/>&nbsp;&nbsp;<span class='helpText'>Hit this button to save the changes you made anywhere in this page.</span></td>
354
+                        </tfoot>
355
+                    </tbody>
356
+                </table>
357
+                <input value='<?php echo implode(',', $deletedQuestionIds); ?>' name='questionsToDelete' id='questionsToDelete' type='hidden' />
358
+                <input value='<?php echo count($questions); ?>' name='quesCount' id='quesCount' type="hidden" />
359
+                <input value='<?php echo $setId; ?>' name="setId" id="setId" type="hidden" />
360
+            </form>
361
+        </div>
362
+    </body>
363
+</html>
0 364
\ No newline at end of file
... ...
@@ -0,0 +1,78 @@
1
+<?php
2
+//Kill the session and take the user to login page if username is not there
3
+//in the session.
4
+session_start();
5
+if (!array_key_exists('username', $_SESSION))
6
+    header('Location: admin_logout.php');
7
+
8
+if ($_SESSION['username'] == null)
9
+    header('Location: admin_logout.php');
10
+
11
+//css menus in this file courtesy:
12
+//http://www.shingokko.com/blog-entry/pure-css-hover-menu.html
13
+
14
+function PrintTopbar($sectionTitle)
15
+{
16
+    $sectionTitle = $sectionTitle == '' ? 'Welcome!' : $sectionTitle;
17
+    echo "
18
+            <link rel='stylesheet' href='admin_style_topbar.css' type='text/css' />
19
+            <div id='topbar' class='topbar'>
20
+                <div id='sectionTitle' class='sectionTitle'>
21
+                    $sectionTitle
22
+                </div>
23
+                <div id='menu'>
24
+                    <ul class='menuList'>
25
+                        <li class='menuTile'>
26
+                            <a href='admin.php' title='View the welcome message!'>Home</a>
27
+                        </li>
28
+                        <li class='menuTile'>
29
+                            <a href='#' title='Perform functions related to other admin users.'>Admin User Management</a> <span style='color: lightgray; font-size: small;'>▼</span>
30
+                            <ul class='submenu'>
31
+                                <li>
32
+                                    <a href='admin_user_create.php' title='Create a new admin user for this application.'>Create</a>
33
+                                </li>
34
+                                <li>
35
+                                    <span' title='Deactivate an existing admin for this application.'>Deactivate</span>
36
+                                </li>
37
+                            </ul>
38
+
39
+                        </li>
40
+                        <li class='menuTile'>
41
+                            <a href='#' title='Manage survey that the Carview application can display.'>Survey Management</a> <span style='color: lightgray; font-size: small;'>▼</span>
42
+                            <ul class='submenu'>
43
+                                <li>
44
+                                    <a href='admin_survey_create.php' title='Create a new survey and add new questions to it'>
45
+                                    Create
46
+                                    </a>
47
+                                </li>
48
+                                <li>
49
+                                    <a href='admin_survey_search.php' title='Update an exiting survey.'>
50
+                                    Update
51
+                                    </a>
52
+                                </li>
53
+                                <li>
54
+                                    <a href='admin_survey_availability.php' title='Make a survey available or unavailable to end users.'>
55
+                                    Hide/Unhide Surveys
56
+                                    </a>
57
+                                </li>
58
+                            </ul>
59
+
60
+                        </li>
61
+    <!--
62
+                        <li class='menuTile'>
63
+                            <a href='admin_download_data.php'>
64
+                                Download Data
65
+                            </a>
66
+                        </li>
67
+    -->
68
+                        <li class='menuTile'>
69
+                            <div>
70
+                                <a href='admin_logout.php' title='Sign off from the application and go to the login page.'>Logout</a>
71
+                            </div>
72
+                        </li>
73
+                    </ul>
74
+                </div>
75
+            </div>";
76
+}
77
+?>
78
+
... ...
@@ -0,0 +1,121 @@
1
+<?php
2
+require_once 'admin_topbar.php';
3
+?>
4
+
5
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
6
+<html>
7
+    <head>
8
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
9
+        <title>Carview | VRoom 360 Create Admin</title>
10
+        <link rel="stylesheet" href="admin_main.css" type="text/css" />
11
+    </head>
12
+    <body>
13
+        <?php
14
+        require_once 'admin_bizLayer.php';
15
+        $biz = new admin_bizLayer();
16
+        $username = '';
17
+        $password = '';
18
+        $reenterPassword = '';
19
+        $email = '';
20
+        $usernameError = '';
21
+        $passwordError = '';
22
+        $reenterPasswordError = '';
23
+        $emailError = '';
24
+        $createStatus = '';
25
+        
26
+        function ValidateCreateAdmin($username, $password, $reenterPassword, $email)
27
+        {
28
+            global $biz;
29
+            //fields should not be empty
30
+            $usernameError = strlen($username) == 0 ? 'Username is required.' : '';
31
+            $passwordError = strlen($password) == 0 ? 'Password field cannot be empty.' : '';
32
+            $reenterPasswordError = strlen($reenterPassword) == 0 ? 'Re-enter Password field cannot be empty.' : '';
33
+            
34
+            $emailError = strlen($email) == 0 ? 'Email field cannot be empty.' : '';
35
+            
36
+            //now check for logical errors if fields are not empty
37
+            if(strlen($usernameError) == 0)
38
+            {
39
+                $usernameError = $biz->IsUsernameAvailable($username) ? '' : 'This id is not available.';
40
+            }
41
+            
42
+            if(strlen($emailError) == 0)
43
+            {
44
+                $emailError = preg_match('/^[a-z0-9._%+-]+@(?:[a-z0-9.]+\.)+(?:[a-z]{2}|aero|arpa|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|org|pro|tel|travel|xxx)$/', $email) == 0 ? 'Invalid Email.' : '';
45
+            }
46
+            
47
+            if(strlen($reenterPasswordError) == 0)
48
+            {
49
+                $reenterPasswordError = $password != $reenterPassword ? 'Passwords do not match. They should be same.' : '';
50
+            }
51
+            
52
+            return array($usernameError, $passwordError, $reenterPasswordError, $emailError);
53
+        }
54
+        
55
+        //do stuff only if create button has been hit.
56
+        if(array_key_exists('create', $_REQUEST))
57
+        {
58
+            $username = trim($_REQUEST['username']);
59
+            $password = trim($_REQUEST['password']);
60
+            $reenterPassword = trim($_REQUEST['reenterPassword']);
61
+            $email = trim(strtolower($_REQUEST['email']));
62
+        
63
+            //Validations
64
+            list ($usernameError, $passwordError, $reenterPasswordError, $emailError) = ValidateCreateAdmin($username, $password, $reenterPassword, $email);
65
+
66
+            if(strlen($usernameError) == 0 && strlen($emailError) == 0 && strlen($passwordError) == 0)
67
+            {
68
+                //do a database hit now that there isn't any error
69
+                if($biz->AddAdmin($username, $password, $email))
70
+                {
71
+                    $createStatus =  '<span class=\'success\'>Admin successfully created!</span>';
72
+                    $username = '';
73
+                    $password = '';
74
+                    $reenterPassword = '';
75
+                    $email = '';
76
+                }
77
+                else
78
+                {
79
+                    $createStatus =  '<span class=\'error\'>An error occured while creating admin.</span>';
80
+                    $password = '';
81
+                    $reenterPassword = '';
82
+                }
83
+            }
84
+        }
85
+        $biz->CloseDatabaseConnection();
86
+        //check for return
87
+        PrintTopbar('Create Admin');
88
+        echo "<div id='content' class='mainContent'>
89
+        <p class='helpText'>Upon successful registration, an email will be sent to the one entered below to notify user of their credentials.<p>
90
+        <form action='admin_user_create.php' method='post'>
91
+        <table border='0' align='left'>
92
+            <tbody>
93
+                <tr>
94
+                    <td>Username:</td>
95
+                    <td><input type='text' name='username' id='username' value='$username' />&nbsp;&nbsp;<span class='error'>$usernameError</span> </td>
96
+                </tr>
97
+                <tr>
98
+                    <td>Password:</td>
99
+                    <td><input type='password' name='password' id='password' />&nbsp;&nbsp;<span class='error'>$passwordError</span></td>
100
+                </tr>
101
+                <tr>
102
+                    <td>Re-enter Password:</td>
103
+                    <td><input type='password' name='reenterPassword' id='reenterPassword' />&nbsp;&nbsp;<span class='error'>$reenterPasswordError</span></td>
104
+                </tr>
105
+                <tr>
106
+                    <td>Email:</td>
107
+                    <td><input type='text' name='email' id='email' value='$email'/>&nbsp;&nbsp;<span class='error'>$emailError</span></td>
108
+                </tr>
109
+                <tr>
110
+                    <td colspan='2'>$createStatus</td>
111
+                </tr>
112
+                <tr>
113
+                    <td colspan='2'><input type='submit' name='create' id='create' value='Create' /></td>
114
+                </tr>
115
+            </tbody>
116
+        </table>
117
+        </form>
118
+        </div>";
119
+        ?>
120
+    </body>
121
+</html>
0 122
\ No newline at end of file
... ...
@@ -0,0 +1,21 @@
1
+<?php
2
+require_once 'admin_topbar.php';
3
+?>
4
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5
+<html>
6
+    <head>
7
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
8
+        <title>Carview | VRoom 360 Deactivate Admin</title>
9
+        <link rel="stylesheet" href="admin_main.css" type="text/css" />
10
+    </head>
11
+    <body>
12
+        <?php
13
+        PrintTopbar('Deactivate Admin');
14
+        ?>
15
+        <br/>
16
+        <br/>
17
+        <br/>
18
+        <br/>
19
+        Under construction.
20
+    </body>
21
+</html>
... ...
@@ -0,0 +1,105 @@
1
+<?php
2
+require_once 'Config.php';
3
+require_once 'Crypt/RSA.php';
4
+require_once 'RequestObject.php';
5
+require_once 'ResponseObject.php';
6
+require_once 'BizLayer.php';
7
+
8
+//Get a hold of all configuration variables.
9
+$config = new Config();
10
+
11
+//Encrypted post data should be contained in $_POST['req']
12
+/**
13
+ * @return decrypted request. 
14
+ */
15
+function DecryptRequest($rawRequest)
16
+{
17
+    global $config;
18
+    
19
+    if($config->IsConnectionEncryptionEnabled())
20
+    {
21
+        $rsa = new Crypt_RSA();
22
+
23
+        ////Use the following lines to create a new key pair and write it to a file.
24
+        //extract($rsa->createKey());
25
+        //$filename = "keys_newpair.txt";
26
+        //$filehandle = fopen($filename, "w+b");
27
+        //fwrite($filehandle, $privatekey."|||||".$publickey);
28
+        //fclose($filehandle);
29
+        /* 
30
+         * Use config::receive_privateKey to decrypt data received from client
31
+         * Use config::send_publicKey to encrypt data before sending it to client.
32
+         */
33
+    //    if(!$rsa->loadKey($config->GetRequestPublicKey()))
34
+    //        echo "<p>Loading pub key failed.</p>";
35
+    //    $plaintext = "Che chak zuv myon";
36
+    //    $encryptedText = $rsa->encrypt($plaintext);
37
+    //    echo "<p><strong>Encrypted text:</strong><br/>$encryptedText</p>";
38
+
39
+        //decrypted text
40
+        if(!$rsa->loadKey($config->GetRequestPrivateKey()))
41
+        {
42
+            //send a json encoded error message if loading client's pub key failed.
43
+            $e =  new ErrorObject($responseData, E_VROOM_LOAD_RECV_PRI_KEY_FAILED);
44
+            exit();//no need to continue processing once the error has been sent.
45
+        }
46
+        $decryptedText = $rsa->decrypt($rawRequest);
47
+    }
48
+    else
49
+        $decryptedText = $rawRequest;
50
+    //json decoding
51
+    $request_array = json_decode($decryptedText, true);
52
+    //Store the request
53
+    $request = new RequestObject(
54
+                                 $request_array['requestHash'], 
55
+                                 $request_array['call'], 
56
+                                 $request_array['paramArray']
57
+                                );
58
+    return $request;
59
+}
60
+
61
+
62
+/*send it back to requester.*/
63
+function SendResponse($responseData)
64
+{
65
+    global $config;
66
+    //json_encode will encode only public variables of the class.
67
+    $responseJson = json_encode($responseData);
68
+    
69
+    if(!$config->IsConnectionEncryptionEnabled())
70
+    {
71
+        echo $responseJson;
72
+        return;
73
+    }
74
+    
75
+    $rsa = new Crypt_RSA();
76
+    //encrypt response
77
+    if(!$rsa->loadKey($config->GetResponsePublicKey()))
78
+    {
79
+        //send a json encoded error message if loading client's pub key failed.
80
+        $e =  new ErrorObject($responseData, E_VROOM_LOAD_SEND_PUB_KEY_FAILED);
81
+        exit();//no need to continue processing once the error has been sent.
82
+    }
83
+    
84
+    echo $rsa->encrypt($responseJson);
85
+}
86
+
87
+function GetResponse($requestData)
88
+{
89
+    $biz = new BizLayer($requestData);
90
+    return $biz->CallFunction();
91
+}
92
+
93
+$rawRequest = file_get_contents("php://input");
94
+if($rawRequest == null)
95
+        return;
96
+if($config->IsLoggingRequestsEnabled())
97
+{
98
+    $filename = "requests.txt";
99
+    $filehandle = fopen($filename, "a+b");
100
+    fwrite($filehandle, date('d F Y h:i:s A', time()). chr(13).$rawRequest.chr(13).'-------------'.chr(13).chr(13));
101
+    fclose($filehandle);
102
+}
103
+SendResponse(GetResponse(DecryptRequest($rawRequest)));
104
+
105
+?>
0 106
\ No newline at end of file
... ...
@@ -0,0 +1,304 @@
1
+SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
2
+SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
3
+SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
4
+
5
+CREATE SCHEMA IF NOT EXISTS `vroom360` DEFAULT CHARACTER SET latin1 ;
6
+USE `vroom360` ;
7
+
8
+-- -----------------------------------------------------
9
+-- Table `vroom360`.`ages`
10
+-- -----------------------------------------------------
11
+DROP TABLE IF EXISTS `vroom360`.`ages` ;
12
+
13
+CREATE  TABLE IF NOT EXISTS `vroom360`.`ages` (
14
+  `ages_id` INT NOT NULL AUTO_INCREMENT ,
15
+  `ages_from` INT NULL ,
16
+  `ages_to` INT NULL ,
17
+  PRIMARY KEY (`ages_id`) )
18
+ENGINE = InnoDB,
19
+COMMENT = 'Stores various age ranges available to a user to select from' /* comment truncated */ ;
20
+
21
+
22
+-- -----------------------------------------------------
23
+-- Table `vroom360`.`weights`
24
+-- -----------------------------------------------------
25
+DROP TABLE IF EXISTS `vroom360`.`weights` ;
26
+
27
+CREATE  TABLE IF NOT EXISTS `vroom360`.`weights` (
28
+  `weights_id` INT NOT NULL AUTO_INCREMENT ,
29
+  `weights_from` INT NOT NULL ,
30
+  `weights_to` INT NOT NULL ,
31
+  PRIMARY KEY (`weights_id`) )
32
+ENGINE = InnoDB,
33
+COMMENT = 'Stores various weight ranges available to a user to select f' /* comment truncated */ ;
34
+
35
+
36
+-- -----------------------------------------------------
37
+-- Table `vroom360`.`users`
38
+-- -----------------------------------------------------
39
+DROP TABLE IF EXISTS `vroom360`.`users` ;
40
+
41
+CREATE  TABLE IF NOT EXISTS `vroom360`.`users` (
42
+  `users_loginId` VARCHAR(20) CHARACTER SET 'latin1' COLLATE 'latin1_general_cs' NOT NULL ,
43
+  `users_password` VARCHAR(45) NOT NULL ,
44
+  `users_ageid` INT NULL ,
45
+  `users_gender` ENUM('Male', 'Female') NULL ,
46
+  `users_height` INT NULL ,
47
+  `users_shoesize` FLOAT NULL ,
48
+  `users_weightid` INT NULL ,
49
+  `users_zip` INT NULL ,
50
+  `users_shirtsize` VARCHAR(4) NULL ,
51
+  `users_email` VARCHAR(100) NOT NULL ,
52
+  `user_sittingheight` FLOAT NULL COMMENT 'inches' ,
53
+  `user_upperleglength` FLOAT NULL COMMENT 'inches' ,
54
+  PRIMARY KEY (`users_loginId`) ,
55
+  UNIQUE INDEX `users_loginId_UNIQUE` (`users_loginId` ASC) ,
56
+  INDEX `fk_users_age_ages_id` (`users_ageid` ASC) ,
57
+  INDEX `fk_users_weight_weights_id` (`users_weightid` ASC) ,
58
+  CONSTRAINT `fk_users_age_ages_id`
59
+    FOREIGN KEY (`users_ageid` )
60
+    REFERENCES `vroom360`.`ages` (`ages_id` )
61
+    ON DELETE NO ACTION
62
+    ON UPDATE NO ACTION,
63
+  CONSTRAINT `fk_users_weight_weights_id`
64
+    FOREIGN KEY (`users_weightid` )
65
+    REFERENCES `vroom360`.`weights` (`weights_id` )
66
+    ON DELETE NO ACTION
67
+    ON UPDATE NO ACTION)
68
+ENGINE = InnoDB
69
+COMMENT = 'Contains all information about the users of the system.' ;
70
+
71
+
72
+-- -----------------------------------------------------
73
+-- Table `vroom360`.`questions`
74
+-- -----------------------------------------------------
75
+DROP TABLE IF EXISTS `vroom360`.`questions` ;
76
+
77
+CREATE  TABLE IF NOT EXISTS `vroom360`.`questions` (
78
+  `questions_id` INT NOT NULL AUTO_INCREMENT ,
79
+  `questions_text` VARCHAR(250) NOT NULL ,
80
+  `questions_ans_value_type` ENUM('Integer', 'Decimal') NOT NULL DEFAULT 'Integer' ,
81
+  `questions_ans_direction` ENUM('LowerIsBetter', 'HigherIsBetter') NOT NULL DEFAULT 'HigherIsBetter' ,
82
+  `questions_location_x` FLOAT NOT NULL ,
83
+  `questions_location_y` FLOAT NOT NULL ,
84
+  `questions_location_z` FLOAT NOT NULL ,
85
+  `questions_active` TINYINT(1)  NOT NULL DEFAULT true ,
86
+  PRIMARY KEY (`questions_id`) )
87
+ENGINE = InnoDB,
88
+COMMENT = 'This table will store all questions that can be given in the' /* comment truncated */ ;
89
+
90
+
91
+-- -----------------------------------------------------
92
+-- Table `vroom360`.`vehicle`
93
+-- -----------------------------------------------------
94
+DROP TABLE IF EXISTS `vroom360`.`vehicle` ;
95
+
96
+CREATE  TABLE IF NOT EXISTS `vroom360`.`vehicle` (
97
+  `vehicle_id` INT NOT NULL AUTO_INCREMENT ,
98
+  `vehicle_make` VARCHAR(45) NOT NULL COMMENT 'Company name to which the vehicle belongs' ,
99
+  `vehicle_model` VARCHAR(45) NOT NULL ,
100
+  `vehicle_year` INT NOT NULL ,
101
+  PRIMARY KEY (`vehicle_id`) )
102
+ENGINE = InnoDB,
103
+COMMENT = 'Master table of vehicles.' ;
104
+
105
+
106
+-- -----------------------------------------------------
107
+-- Table `vroom360`.`admins`
108
+-- -----------------------------------------------------
109
+DROP TABLE IF EXISTS `vroom360`.`admins` ;
110
+
111
+CREATE  TABLE IF NOT EXISTS `vroom360`.`admins` (
112
+  `admins_id` VARCHAR(20) CHARACTER SET 'latin1' COLLATE 'latin1_general_cs' NOT NULL ,
113
+  `admins_password` VARCHAR(45) NULL ,
114
+  `admins_email` VARCHAR(90) NULL ,
115
+  `admins_active` TINYINT(1)  NULL DEFAULT false ,
116
+  `admins_modified_by` VARCHAR(20) NOT NULL ,
117
+  `admins_modification_date` DATETIME NOT NULL DEFAULT '1969-12-31 19:00:00' ,
118
+  PRIMARY KEY (`admins_id`) )
119
+ENGINE = InnoDB;
120
+
121
+
122
+-- -----------------------------------------------------
123
+-- Table `vroom360`.`question_set`
124
+-- -----------------------------------------------------
125
+DROP TABLE IF EXISTS `vroom360`.`question_set` ;
126
+
127
+CREATE  TABLE IF NOT EXISTS `vroom360`.`question_set` (
128
+  `questionset_id` INT NOT NULL AUTO_INCREMENT ,
129
+  `questionset_setname` VARCHAR(100) NOT NULL ,
130
+  `questionset_active` TINYINT(1)  NOT NULL DEFAULT true COMMENT 'Tells if the survey is active or not.' ,
131
+  `questionset_modified_by` VARCHAR(20) CHARACTER SET 'latin1' COLLATE 'latin1_general_cs' NOT NULL ,
132
+  `questionset_modification_date` DATETIME NOT NULL DEFAULT '1969-12-31 19:00:00' ,
133
+  PRIMARY KEY (`questionset_id`) ,
134
+  UNIQUE INDEX `qs_setname_UNIQUE` (`questionset_setname` ASC) ,
135
+  INDEX `fk_questionset_modified_by_admins_id` (`questionset_modified_by` ASC) ,
136
+  CONSTRAINT `fk_questionset_modified_by_admins_id`
137
+    FOREIGN KEY (`questionset_modified_by` )
138
+    REFERENCES `vroom360`.`admins` (`admins_id` )
139
+    ON DELETE NO ACTION
140
+    ON UPDATE NO ACTION)
141
+ENGINE = InnoDB,
142
+COMMENT = 'This table allows active questions in the question table to ' /* comment truncated */ ;
143
+
144
+
145
+-- -----------------------------------------------------
146
+-- Table `vroom360`.`survey`
147
+-- -----------------------------------------------------
148
+DROP TABLE IF EXISTS `vroom360`.`survey` ;
149
+
150
+CREATE  TABLE IF NOT EXISTS `vroom360`.`survey` (
151
+  `survey_id` INT NOT NULL AUTO_INCREMENT ,
152
+  `survey_vehicleid` INT NOT NULL ,
153
+  `survey_start_date` DATETIME NOT NULL ,
154
+  `survey_end_date` DATETIME NULL COMMENT 'Missing end date will mean that the survey is in progress.' ,
155
+  `survey_user_id` VARCHAR(20) CHARACTER SET 'latin1' COLLATE 'latin1_general_cs' NOT NULL ,
156
+  `survey_question_set` INT NOT NULL ,
157
+  PRIMARY KEY (`survey_id`) ,
158
+  INDEX `fk_survey_vehicle_vehicle_id` (`survey_vehicleid` ASC) ,
159
+  INDEX `fk_survey_question_set_qs_id` (`survey_question_set` ASC) ,
160
+  INDEX `fk_survey_user_id_users_loginId` (`survey_user_id` ASC) ,
161
+  CONSTRAINT `fk_survey_vehicle_vehicle_id`
162
+    FOREIGN KEY (`survey_vehicleid` )
163
+    REFERENCES `vroom360`.`vehicle` (`vehicle_id` )
164
+    ON DELETE NO ACTION
165
+    ON UPDATE NO ACTION,
166
+  CONSTRAINT `fk_survey_question_set_qs_id`
167
+    FOREIGN KEY (`survey_question_set` )
168
+    REFERENCES `vroom360`.`question_set` (`questionset_id` )
169
+    ON DELETE NO ACTION
170
+    ON UPDATE NO ACTION,
171
+  CONSTRAINT `fk_survey_user_id_users_loginId`
172
+    FOREIGN KEY (`survey_user_id` )
173
+    REFERENCES `vroom360`.`users` (`users_loginId` )
174
+    ON DELETE NO ACTION
175
+    ON UPDATE NO ACTION)
176
+ENGINE = InnoDB,
177
+COMMENT = 'Table that will maintain state of the survey. In case this t' /* comment truncated */ ;
178
+
179
+
180
+-- -----------------------------------------------------
181
+-- Table `vroom360`.`answers`
182
+-- -----------------------------------------------------
183
+DROP TABLE IF EXISTS `vroom360`.`answers` ;
184
+
185
+CREATE  TABLE IF NOT EXISTS `vroom360`.`answers` (
186
+  `answers_id` INT NOT NULL AUTO_INCREMENT ,
187
+  `answers_ques_id` INT NOT NULL ,
188
+  `answers_value` FLOAT NOT NULL ,
189
+  `answers_attachment_path` VARCHAR(150) NULL ,
190
+  `answers_survey_id` INT NOT NULL ,
191
+  `answers_date` DATETIME NOT NULL ,
192
+  `answers_sequence` INT NOT NULL ,
193
+  `answers_comment` VARCHAR(400) NULL ,
194
+  PRIMARY KEY (`answers_id`) ,
195
+  INDEX `fk_answers_ques_id_questions_id` (`answers_ques_id` ASC) ,
196
+  INDEX `fk_answers_survey_id_survey_id` (`answers_survey_id` ASC) ,
197
+  CONSTRAINT `fk_answers_ques_id_questions_id`
198
+    FOREIGN KEY (`answers_ques_id` )
199
+    REFERENCES `vroom360`.`questions` (`questions_id` )
200
+    ON DELETE NO ACTION
201
+    ON UPDATE NO ACTION,
202
+  CONSTRAINT `fk_answers_survey_id_survey_id`
203
+    FOREIGN KEY (`answers_survey_id` )
204
+    REFERENCES `vroom360`.`survey` (`survey_id` )
205
+    ON DELETE NO ACTION
206
+    ON UPDATE NO ACTION)
207
+ENGINE = InnoDB;
208
+
209
+
210
+-- -----------------------------------------------------
211
+-- Table `vroom360`.`questions_in_set`
212
+-- -----------------------------------------------------
213
+DROP TABLE IF EXISTS `vroom360`.`questions_in_set` ;
214
+
215
+CREATE  TABLE IF NOT EXISTS `vroom360`.`questions_in_set` (
216
+  `questionsinset_set_id` INT NOT NULL ,
217
+  `questionsinset_question_id` INT NOT NULL ,
218
+  INDEX `fk_qis_set_id_qs_id` (`questionsinset_set_id` ASC) ,
219
+  INDEX `fk_qis_question_id_questions_id` (`questionsinset_question_id` ASC) ,
220
+  CONSTRAINT `fk_qis_set_id_qs_id`
221
+    FOREIGN KEY (`questionsinset_set_id` )
222
+    REFERENCES `vroom360`.`question_set` (`questionset_id` )
223
+    ON DELETE NO ACTION
224
+    ON UPDATE NO ACTION,
225
+  CONSTRAINT `fk_qis_question_id_questions_id`
226
+    FOREIGN KEY (`questionsinset_question_id` )
227
+    REFERENCES `vroom360`.`questions` (`questions_id` )
228
+    ON DELETE NO ACTION
229
+    ON UPDATE NO ACTION)
230
+ENGINE = InnoDB;
231
+
232
+
233
+-- -----------------------------------------------------
234
+-- Table `vroom360`.`badges`
235
+-- -----------------------------------------------------
236
+DROP TABLE IF EXISTS `vroom360`.`badges` ;
237
+
238
+CREATE  TABLE IF NOT EXISTS `vroom360`.`badges` (
239
+  `badges_id` INT NOT NULL AUTO_INCREMENT ,
240
+  `badges_description` VARCHAR(100) NOT NULL ,
241
+  `badges_weight` INT NOT NULL ,
242
+  PRIMARY KEY (`badges_id`) )
243
+ENGINE = InnoDB;
244
+
245
+
246
+-- -----------------------------------------------------
247
+-- Table `vroom360`.`user_badges`
248
+-- -----------------------------------------------------
249
+DROP TABLE IF EXISTS `vroom360`.`user_badges` ;
250
+
251
+CREATE  TABLE IF NOT EXISTS `vroom360`.`user_badges` (
252
+  `userbadges_badgeid` INT NOT NULL ,
253
+  `userbadges_userid` VARCHAR(20) CHARACTER SET 'latin1' COLLATE 'latin1_general_cs' NOT NULL ,
254
+  INDEX `fk_userbadges_badgeid_badges_id` (`userbadges_badgeid` ASC) ,
255
+  INDEX `fk_userbadges_userid_users_loginId` (`userbadges_userid` ASC) ,
256
+  CONSTRAINT `fk_userbadges_badgeid_badges_id`
257
+    FOREIGN KEY (`userbadges_badgeid` )
258
+    REFERENCES `vroom360`.`badges` (`badges_id` )
259
+    ON DELETE NO ACTION
260
+    ON UPDATE NO ACTION,
261
+  CONSTRAINT `fk_userbadges_userid_users_loginId`
262
+    FOREIGN KEY (`userbadges_userid` )
263
+    REFERENCES `vroom360`.`users` (`users_loginId` )
264
+    ON DELETE NO ACTION
265
+    ON UPDATE NO ACTION)
266
+ENGINE = InnoDB;
267
+
268
+
269
+-- -----------------------------------------------------
270
+-- Table `vroom360`.`errorlog`
271
+-- -----------------------------------------------------
272
+DROP TABLE IF EXISTS `vroom360`.`errorlog` ;
273
+
274
+CREATE  TABLE IF NOT EXISTS `vroom360`.`errorlog` (
275
+  `errorlog_id` INT NOT NULL ,
276
+  `errorlog_datetime` DATETIME NOT NULL ,
277
+  `errorlog_object` VARCHAR(2000) NOT NULL ,
278
+  PRIMARY KEY (`errorlog_id`) )
279
+ENGINE = InnoDB;
280
+
281
+
282
+
283
+SET SQL_MODE=@OLD_SQL_MODE;
284
+SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
285
+SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
286
+
287
+-- --------------------------------------------------
288
+-- USERS
289
+-- --------------------------------------------------
290
+-- Create user with qualified domain and ip address. Not using wildcards.
291
+CREATE USER 'webuser'@'127.0.0.1' IDENTIFIED BY PASSWORD '*C5DF9C11FDCEA187921EEB5DDDFF0C32FE9CB352';
292
+CREATE USER 'webuser'@'localhost' IDENTIFIED BY PASSWORD '*C5DF9C11FDCEA187921EEB5DDDFF0C32FE9CB352';
293
+
294
+-- http://dev.mysql.com/doc/refman/5.6/en/grant.html#grant-privileges
295
+GRANT SELECT, INSERT, UPDATE, EXECUTE ON vroom360.* TO 'webuser'@'127.0.0.1';
296
+GRANT SELECT, INSERT, UPDATE, EXECUTE ON vroom360.* TO 'webuser'@'localhost';
297
+
298
+-- admin
299
+CREATE USER 'vroomadmin'@'127.0.0.1' IDENTIFIED BY PASSWORD '*D272B26E75F3D18F7EB3C0714F77960D0015DB79';
300
+CREATE USER 'vroomadmin'@'localhost' IDENTIFIED BY PASSWORD '*D272B26E75F3D18F7EB3C0714F77960D0015DB79';
301
+
302
+GRANT SELECT, INSERT, UPDATE, EXECUTE, DELETE ON vroom360.* TO 'vroomadmin'@'127.0.0.1';
303
+GRANT SELECT, INSERT, UPDATE, EXECUTE, DELETE ON vroom360.* TO 'vroomadmin'@'localhost';
304
+-------------------------------------------
... ...
@@ -0,0 +1,6263 @@
1
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1, 'Acura', 'MDX', 2011);
2
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2, 'Audi', 'A8', 2011);
3
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3, 'Audi', 'Q5', 2011);
4
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4, 'BMW', '3 Series', 2011);
5
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5, 'BMW', '5 Series', 2011);
6
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6, 'BMW', 'X3', 2011);
7
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (7, 'BMW', 'X5', 2011);
8
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (8, 'BMW', 'X6', 2011);
9
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (9, 'BMW', 'Z4', 2011);
10
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (10, 'Buick', 'Enclave', 2011);
11
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (11, 'Buick', 'LaCrosse', 2011);
12
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (12, 'Buick', 'Lucerne', 2011);
13
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (13, 'Buick', 'Regal', 2011);
14
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (14, 'Cadillac', 'DTS', 2011);
15
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (15, 'Cadillac', 'Escalade', 2011);
16
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (16, 'Cadillac', 'Escalade ESV', 2011);
17
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (17, 'Cadillac', 'Escalade EXT', 2011);
18
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (18, 'Cadillac', 'SRX', 2011);
19
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (19, 'Cadillac', 'STS', 2011);
20
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (20, 'Chevrolet', 'Avalanche', 2011);
21
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (21, 'Chevrolet', 'Aveo', 2011);
22
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (22, 'Chevrolet', 'Camaro', 2011);
23
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (23, 'Chevrolet', 'Colorado Crew Cab', 2011);
24
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (24, 'Chevrolet', 'Colorado Extended Cab', 2011);
25
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (25, 'Chevrolet', 'Colorado Regular Cab', 2011);
26
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (26, 'Chevrolet', 'Corvette', 2011);
27
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (27, 'Chevrolet', 'Cruze', 2011);
28
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (28, 'Chevrolet', 'Equinox', 2011);
29
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (29, 'Chevrolet', 'Express 1500 Cargo', 2011);
30
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (30, 'Chevrolet', 'Express 1500 Passenger', 2011);
31
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (31, 'Chevrolet', 'Express 2500 Cargo', 2011);
32
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (32, 'Chevrolet', 'Express 2500 Passenger', 2011);
33
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (33, 'Chevrolet', 'Express 3500 Cargo', 2011);
34
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (34, 'Chevrolet', 'Express 3500 Passenger', 2011);
35
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (35, 'Chevrolet', 'HHR', 2011);
36
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (36, 'Chevrolet', 'Impala', 2011);
37
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (37, 'Chevrolet', 'Malibu', 2011);
38
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (38, 'Chevrolet', 'Silverado 1500 Crew Cab', 2011);
39
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (39, 'Chevrolet', 'Silverado 1500 Extended Cab', 2011);
40
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (40, 'Chevrolet', 'Silverado 1500 Regular Cab', 2011);
41
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (41, 'Chevrolet', 'Suburban 1500', 2011);
42
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (42, 'Chevrolet', 'Suburban 2500', 2011);
43
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (43, 'Chevrolet', 'Tahoe', 2011);
44
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (44, 'Chevrolet', 'Traverse', 2011);
45
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (45, 'Dodge', 'Avenger', 2011);
46
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (46, 'Dodge', 'Caliber', 2011);
47
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (47, 'Dodge', 'Charger', 2011);
48
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (48, 'Dodge', 'Durango', 2011);
49
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (49, 'Dodge', 'Journey', 2011);
50
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (50, 'Dodge', 'Nitro', 2011);
51
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (51, 'Ford', 'E150 Cargo', 2011);
52
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (52, 'Ford', 'E150 Passenger', 2011);
53
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (53, 'Ford', 'E250 Cargo', 2011);
54
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (54, 'Ford', 'E350 Super Duty Cargo', 2011);
55
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (55, 'Ford', 'E350 Super Duty Passenger', 2011);
56
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (56, 'Ford', 'Edge', 2011);
57
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (57, 'Ford', 'Escape', 2011);
58
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (58, 'Ford', 'Expedition', 2011);
59
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (59, 'Ford', 'Expedition EL', 2011);
60
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (60, 'Ford', 'Explorer', 2011);
61
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (61, 'Ford', 'F150 Regular Cab', 2011);
62
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (62, 'Ford', 'F150 Super Cab', 2011);
63
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (63, 'Ford', 'F150 SuperCrew Cab', 2011);
64
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (64, 'Ford', 'Fiesta', 2011);
65
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (65, 'Ford', 'Flex', 2011);
66
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (66, 'Ford', 'Focus', 2011);
67
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (67, 'Ford', 'Fusion', 2011);
68
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (68, 'Ford', 'Mustang', 2011);
69
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (69, 'Ford', 'Ranger Regular Cab', 2011);
70
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (70, 'Ford', 'Ranger Super Cab', 2011);
71
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (71, 'Ford', 'Taurus', 2011);
72
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (72, 'GMC', 'Acadia', 2011);
73
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (73, 'GMC', 'Canyon Crew Cab', 2011);
74
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (74, 'GMC', 'Canyon Extended Cab', 2011);
75
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (75, 'GMC', 'Canyon Regular Cab', 2011);
76
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (76, 'GMC', 'Savana 1500 Cargo', 2011);
77
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (77, 'GMC', 'Savana 1500 Passenger', 2011);
78
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (78, 'GMC', 'Savana 2500 Cargo', 2011);
79
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (79, 'GMC', 'Savana 2500 Passenger', 2011);
80
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (80, 'GMC', 'Savana 3500 Cargo', 2011);
81
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (81, 'GMC', 'Savana 3500 Passenger', 2011);
82
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (82, 'GMC', 'Sierra 1500 Crew Cab', 2011);
83
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (83, 'GMC', 'Sierra 1500 Extended Cab', 2011);
84
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (84, 'GMC', 'Sierra 1500 Regular Cab', 2011);
85
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (85, 'GMC', 'Yukon', 2011);
86
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (86, 'GMC', 'Yukon XL 1500', 2011);
87
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (87, 'GMC', 'Yukon XL 2500', 2011);
88
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (88, 'Honda', 'Accord', 2011);
89
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (89, 'Honda', 'Civic', 2011);
90
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (90, 'Honda', 'CR-V', 2011);
91
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (91, 'Honda', 'CR-Z', 2011);
92
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (92, 'Honda', 'Element', 2011);
93
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (93, 'Honda', 'Pilot', 2011);
94
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (94, 'Honda', 'Ridgeline', 2011);
95
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (95, 'Hyundai', 'Accent', 2011);
96
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (96, 'Hyundai', 'Elantra', 2011);
97
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (97, 'Hyundai', 'Genesis', 2011);
98
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (98, 'Hyundai', 'Genesis Coupe', 2011);
99
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (99, 'Hyundai', 'Santa Fe', 2011);
100
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (100, 'Hyundai', 'Sonata', 2011);
101
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (101, 'Hyundai', 'Tucson', 2011);
102
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (102, 'Infiniti', 'FX', 2011);
103
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (103, 'Infiniti', 'M', 2011);
104
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (104, 'Infiniti', 'QX', 2011);
105
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (105, 'Jeep', 'Compass', 2011);
106
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (106, 'Jeep', 'Grand Cherokee', 2011);
107
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (107, 'Jeep', 'Liberty', 2011);
108
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (108, 'Jeep', 'Patriot', 2011);
109
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (109, 'Jeep', 'Wrangler', 2011);
110
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (110, 'Kia', 'Forte', 2011);
111
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (111, 'Kia', 'Optima', 2011);
112
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (112, 'Kia', 'Rio', 2011);
113
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (113, 'Kia', 'Sedona', 2011);
114
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (114, 'Kia', 'Sorento', 2011);
115
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (115, 'Kia', 'Soul', 2011);
116
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (116, 'Kia', 'Sportage', 2011);
117
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (117, 'Lexus', 'RX', 2011);
118
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (118, 'Lincoln', 'MKS', 2011);
119
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (119, 'Lincoln', 'MKT', 2011);
120
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (120, 'Lincoln', 'MKX', 2011);
121
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (121, 'Lincoln', 'MKZ', 2011);
122
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (122, 'Lincoln', 'Navigator', 2011);
123
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (123, 'Lincoln', 'Navigator L', 2011);
124
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (124, 'Lincoln', 'Town Car', 2011);
125
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (125, 'Mazda', 'CX-7', 2011);
126
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (126, 'Mazda', 'CX-9', 2011);
127
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (127, 'Mazda', 'MAZDA2', 2011);
128
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (128, 'Mazda', 'MAZDA3', 2011);
129
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (129, 'Mazda', 'Miata MX-5', 2011);
130
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (130, 'Mazda', 'RX-8', 2011);
131
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (131, 'Mazda', 'Tribute', 2011);
132
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (132, 'Mercedes-Benz', 'CLS-Class', 2011);
133
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (133, 'Mercedes-Benz', 'E-Class', 2011);
134
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (134, 'Mercedes-Benz', 'GL-Class', 2011);
135
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (135, 'Mercedes-Benz', 'M-Class', 2011);
136
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (136, 'Mercury', 'Grand Marquis', 2011);
137
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (137, 'Mercury', 'Mariner', 2011);
138
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (138, 'Mercury', 'Milan', 2011);
139
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (139, 'MINI', 'Cooper', 2011);
140
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (140, 'MINI', 'Cooper Clubman', 2011);
141
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (141, 'MINI', 'Cooper Countryman', 2011);
142
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (142, 'Mitsubishi', 'Eclipse', 2011);
143
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (143, 'Mitsubishi', 'Endeavor', 2011);
144
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (144, 'Mitsubishi', 'Galant', 2011);
145
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (145, 'Mitsubishi', 'Lancer', 2011);
146
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (146, 'Mitsubishi', 'Outlander Sport', 2011);
147
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (147, 'Nissan', '370Z', 2011);
148
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (148, 'Nissan', 'Altima', 2011);
149
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (149, 'Nissan', 'Armada', 2011);
150
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (150, 'Nissan', 'cube', 2011);
151
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (151, 'Nissan', 'Frontier Crew Cab', 2011);
152
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (152, 'Nissan', 'Frontier King Cab', 2011);
153
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (153, 'Nissan', 'JUKE', 2011);
154
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (154, 'Nissan', 'Maxima', 2011);
155
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (155, 'Nissan', 'Murano', 2011);
156
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (156, 'Nissan', 'Pathfinder', 2011);
157
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (157, 'Nissan', 'Rogue', 2011);
158
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (158, 'Nissan', 'Sentra', 2011);
159
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (159, 'Nissan', 'Titan Crew Cab', 2011);
160
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (160, 'Nissan', 'Titan King Cab', 2011);
161
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (161, 'Nissan', 'Versa', 2011);
162
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (162, 'Nissan', 'Xterra', 2011);
163
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (163, 'Ram', '1500 Crew Cab', 2011);
164
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (164, 'Ram', '1500 Quad Cab', 2011);
165
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (165, 'Ram', '1500 Regular Cab', 2011);
166
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (166, 'Ram', 'Dakota Crew Cab', 2011);
167
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (167, 'Ram', 'Dakota Extended Cab', 2011);
168
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (168, 'Scion', 'tC', 2011);
169
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (169, 'Scion', 'xB', 2011);
170
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (170, 'Scion', 'xD', 2011);
171
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (171, 'Subaru', 'Impreza', 2011);
172
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (172, 'Suzuki', 'SX4', 2011);
173
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (173, 'Toyota', 'Camry', 2011);
174
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (174, 'Toyota', 'Corolla', 2011);
175
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (175, 'Toyota', 'FJ Cruiser', 2011);
176
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (176, 'Toyota', 'Highlander', 2011);
177
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (177, 'Toyota', 'RAV4', 2011);
178
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (178, 'Toyota', 'Sienna', 2011);
179
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (179, 'Toyota', 'Tundra CrewMax', 2011);
180
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (180, 'Toyota', 'Tundra Double Cab', 2011);
181
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (181, 'Toyota', 'Tundra Regular Cab', 2011);
182
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (182, 'Toyota', 'Venza', 2011);
183
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (183, 'Toyota', 'Yaris', 2011);
184
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (184, 'Volkswagen', 'Eos', 2011);
185
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (185, 'Volkswagen', 'Golf', 2011);
186
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (186, 'Volkswagen', 'GTI', 2011);
187
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (187, 'Volkswagen', 'Jetta', 2011);
188
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (188, 'Volkswagen', 'Tiguan', 2011);
189
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (189, 'Volvo', 'C70', 2011);
190
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (190, 'Volvo', 'S60', 2011);
191
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (191, 'Volvo', 'S80', 2011);
192
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (192, 'Volvo', 'XC60', 2011);
193
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (193, 'Volvo', 'XC70', 2011);
194
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (194, 'Acura', 'MDX', 2010);
195
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (195, 'Acura', 'RDX', 2010);
196
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (196, 'Acura', 'RL', 2010);
197
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (197, 'Acura', 'TL', 2010);
198
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (198, 'Acura', 'TSX', 2010);
199
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (199, 'Acura', 'ZDX', 2010);
200
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (200, 'Aston Martin', 'DB9', 2010);
201
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (201, 'Aston Martin', 'DBS', 2010);
202
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (202, 'Aston Martin', 'Rapide', 2010);
203
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (203, 'Aston Martin', 'Vantage', 2010);
204
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (204, 'Audi', 'A3', 2010);
205
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (205, 'Audi', 'A4', 2010);
206
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (206, 'Audi', 'A5', 2010);
207
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (207, 'Audi', 'A6', 2010);
208
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (208, 'Audi', 'A8', 2010);
209
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (209, 'Audi', 'Q5', 2010);
210
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (210, 'Audi', 'Q7', 2010);
211
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (211, 'Audi', 'R8', 2010);
212
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (212, 'Audi', 'S4', 2010);
213
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (213, 'Audi', 'S5', 2010);
214
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (214, 'Audi', 'S6', 2010);
215
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (215, 'Audi', 'TT', 2010);
216
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (216, 'Bentley', 'Azure T', 2010);
217
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (217, 'Bentley', 'Brooklands', 2010);
218
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (218, 'Bentley', 'Continental', 2010);
219
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (219, 'BMW', '1 Series', 2010);
220
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (220, 'BMW', '3 Series', 2010);
221
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (221, 'BMW', '5 Series', 2010);
222
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (222, 'BMW', '6 Series', 2010);
223
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (223, 'BMW', '7 Series', 2010);
224
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (224, 'BMW', 'M3', 2010);
225
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (225, 'BMW', 'M5', 2010);
226
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (226, 'BMW', 'M6', 2010);
227
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (227, 'BMW', 'X3', 2010);
228
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (228, 'BMW', 'X5', 2010);
229
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (229, 'BMW', 'X6', 2010);
230
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (230, 'BMW', 'Z4', 2010);
231
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (231, 'Buick', 'Enclave', 2010);
232
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (232, 'Buick', 'LaCrosse', 2010);
233
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (233, 'Buick', 'Lucerne', 2010);
234
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (234, 'Cadillac', 'CTS', 2010);
235
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (235, 'Cadillac', 'DTS', 2010);
236
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (236, 'Cadillac', 'Escalade', 2010);
237
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (237, 'Cadillac', 'Escalade ESV', 2010);
238
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (238, 'Cadillac', 'Escalade EXT', 2010);
239
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (239, 'Cadillac', 'SRX', 2010);
240
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (240, 'Cadillac', 'STS', 2010);
241
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (241, 'Chevrolet', 'Avalanche', 2010);
242
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (242, 'Chevrolet', 'Aveo', 2010);
243
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (243, 'Chevrolet', 'Camaro', 2010);
244
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (244, 'Chevrolet', 'Cobalt', 2010);
245
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (245, 'Chevrolet', 'Colorado Crew Cab', 2010);
246
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (246, 'Chevrolet', 'Colorado Extended Cab', 2010);
247
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (247, 'Chevrolet', 'Colorado Regular Cab', 2010);
248
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (248, 'Chevrolet', 'Corvette', 2010);
249
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (249, 'Chevrolet', 'Equinox', 2010);
250
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (250, 'Chevrolet', 'Express 1500 Cargo', 2010);
251
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (251, 'Chevrolet', 'Express 1500 Passenger', 2010);
252
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (252, 'Chevrolet', 'Express 2500 Cargo', 2010);
253
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (253, 'Chevrolet', 'Express 2500 Passenger', 2010);
254
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (254, 'Chevrolet', 'Express 3500 Cargo', 2010);
255
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (255, 'Chevrolet', 'Express 3500 Passenger', 2010);
256
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (256, 'Chevrolet', 'HHR', 2010);
257
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (257, 'Chevrolet', 'Impala', 2010);
258
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (258, 'Chevrolet', 'Malibu', 2010);
259
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (259, 'Chevrolet', 'Silverado 1500 Crew Cab', 2010);
260
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (260, 'Chevrolet', 'Silverado 1500 Extended Cab', 2010);
261
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (261, 'Chevrolet', 'Silverado 1500 Regular Cab', 2010);
262
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (262, 'Chevrolet', 'Silverado 2500 HD Crew Cab', 2010);
263
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (263, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2010);
264
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (264, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2010);
265
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (265, 'Chevrolet', 'Silverado 3500 HD Crew Cab', 2010);
266
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (266, 'Chevrolet', 'Silverado 3500 HD Extended Cab', 2010);
267
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (267, 'Chevrolet', 'Silverado 3500 HD Regular Cab', 2010);
268
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (268, 'Chevrolet', 'Suburban 1500', 2010);
269
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (269, 'Chevrolet', 'Suburban 2500', 2010);
270
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (270, 'Chevrolet', 'Tahoe', 2010);
271
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (271, 'Chevrolet', 'Traverse', 2010);
272
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (272, 'Chrysler', '300', 2010);
273
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (273, 'Chrysler', 'PT Cruiser', 2010);
274
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (274, 'Chrysler', 'Sebring', 2010);
275
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (275, 'Chrysler', 'Town & Country', 2010);
276
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (276, 'Dodge', 'Avenger', 2010);
277
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (277, 'Dodge', 'Caliber', 2010);
278
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (278, 'Dodge', 'Challenger', 2010);
279
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (279, 'Dodge', 'Charger', 2010);
280
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (280, 'Dodge', 'Dakota Crew Cab', 2010);
281
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (281, 'Dodge', 'Dakota Extended Cab', 2010);
282
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (282, 'Dodge', 'Grand Caravan Cargo', 2010);
283
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (283, 'Dodge', 'Grand Caravan Passenger', 2010);
284
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (284, 'Dodge', 'Journey', 2010);
285
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (285, 'Dodge', 'Nitro', 2010);
286
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (286, 'Dodge', 'Ram 1500 Crew Cab', 2010);
287
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (287, 'Dodge', 'Ram 1500 Quad Cab', 2010);
288
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (288, 'Dodge', 'Ram 1500 Regular Cab', 2010);
289
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (289, 'Dodge', 'Ram 2500 Crew Cab', 2010);
290
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (290, 'Dodge', 'Ram 2500 Mega Cab', 2010);
291
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (291, 'Dodge', 'Ram 2500 Regular Cab', 2010);
292
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (292, 'Dodge', 'Ram 3500 Crew Cab', 2010);
293
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (293, 'Dodge', 'Ram 3500 Mega Cab', 2010);
294
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (294, 'Dodge', 'Ram 3500 Regular Cab', 2010);
295
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (295, 'Dodge', 'Viper', 2010);
296
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (296, 'Ford', 'E150 Cargo', 2010);
297
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (297, 'Ford', 'E150 Super Duty Passenger', 2010);
298
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (298, 'Ford', 'E250 Cargo', 2010);
299
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (299, 'Ford', 'E350 Super Duty Cargo', 2010);
300
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (300, 'Ford', 'E350 Super Duty Passenger', 2010);
301
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (301, 'Ford', 'Edge', 2010);
302
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (302, 'Ford', 'Escape', 2010);
303
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (303, 'Ford', 'Expedition', 2010);
304
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (304, 'Ford', 'Expedition EL', 2010);
305
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (305, 'Ford', 'Explorer', 2010);
306
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (306, 'Ford', 'Explorer Sport Trac', 2010);
307
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (307, 'Ford', 'F150 Regular Cab', 2010);
308
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (308, 'Ford', 'F150 Super Cab', 2010);
309
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (309, 'Ford', 'F150 SuperCrew Cab', 2010);
310
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (310, 'Ford', 'F250 Super Duty Crew Cab', 2010);
311
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (311, 'Ford', 'F250 Super Duty Regular Cab', 2010);
312
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (312, 'Ford', 'F250 Super Duty Super Cab', 2010);
313
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (313, 'Ford', 'F350 Super Duty Crew Cab', 2010);
314
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (314, 'Ford', 'F350 Super Duty Regular Cab', 2010);
315
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (315, 'Ford', 'F350 Super Duty Super Cab', 2010);
316
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (316, 'Ford', 'F450 Super Duty Crew Cab', 2010);
317
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (317, 'Ford', 'Flex', 2010);
318
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (318, 'Ford', 'Focus', 2010);
319
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (319, 'Ford', 'Fusion', 2010);
320
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (320, 'Ford', 'Mustang', 2010);
321
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (321, 'Ford', 'Ranger Regular Cab', 2010);
322
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (322, 'Ford', 'Ranger Super Cab', 2010);
323
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (323, 'Ford', 'Taurus', 2010);
324
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (324, 'Ford', 'Transit Connect Cargo', 2010);
325
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (325, 'Ford', 'Transit Connect Passenger', 2010);
326
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (326, 'GMC', 'Acadia', 2010);
327
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (327, 'GMC', 'Canyon Crew Cab', 2010);
328
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (328, 'GMC', 'Canyon Extended Cab', 2010);
329
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (329, 'GMC', 'Canyon Regular Cab', 2010);
330
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (330, 'GMC', 'Savana 1500 Cargo', 2010);
331
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (331, 'GMC', 'Savana 1500 Passenger', 2010);
332
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (332, 'GMC', 'Savana 2500 Cargo', 2010);
333
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (333, 'GMC', 'Savana 2500 Passenger', 2010);
334
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (334, 'GMC', 'Savana 3500 Cargo', 2010);
335
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (335, 'GMC', 'Savana 3500 Passenger', 2010);
336
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (336, 'GMC', 'Sierra 1500 Crew Cab', 2010);
337
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (337, 'GMC', 'Sierra 1500 Extended Cab', 2010);
338
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (338, 'GMC', 'Sierra 1500 Regular Cab', 2010);
339
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (339, 'GMC', 'Sierra 2500 HD Crew Cab', 2010);
340
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (340, 'GMC', 'Sierra 2500 HD Extended Cab', 2010);
341
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (341, 'GMC', 'Sierra 2500 HD Regular Cab', 2010);
342
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (342, 'GMC', 'Sierra 3500 HD Crew Cab', 2010);
343
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (343, 'GMC', 'Sierra 3500 HD Extended Cab', 2010);
344
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (344, 'GMC', 'Sierra 3500 HD Regular Cab', 2010);
345
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (345, 'GMC', 'Terrain', 2010);
346
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (346, 'GMC', 'Yukon', 2010);
347
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (347, 'GMC', 'Yukon XL 1500', 2010);
348
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (348, 'GMC', 'Yukon XL 2500', 2010);
349
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (349, 'Honda', 'Accord', 2010);
350
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (350, 'Honda', 'Accord Crosstour', 2010);
351
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (351, 'Honda', 'Civic', 2010);
352
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (352, 'Honda', 'CR-V', 2010);
353
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (353, 'Honda', 'Element', 2010);
354
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (354, 'Honda', 'Fit', 2010);
355
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (355, 'Honda', 'Insight', 2010);
356
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (356, 'Honda', 'Odyssey', 2010);
357
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (357, 'Honda', 'Pilot', 2010);
358
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (358, 'Honda', 'Ridgeline', 2010);
359
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (359, 'HUMMER', 'H3', 2010);
360
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (360, 'HUMMER', 'H3T', 2010);
361
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (361, 'Hyundai', 'Accent', 2010);
362
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (362, 'Hyundai', 'Azera', 2010);
363
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (363, 'Hyundai', 'Elantra', 2010);
364
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (364, 'Hyundai', 'Genesis', 2010);
365
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (365, 'Hyundai', 'Genesis Coupe', 2010);
366
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (366, 'Hyundai', 'Santa Fe', 2010);
367
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (367, 'Hyundai', 'Sonata', 2010);
368
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (368, 'Hyundai', 'Tucson', 2010);
369
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (369, 'Hyundai', 'Veracruz', 2010);
370
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (370, 'Infiniti', 'EX', 2010);
371
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (371, 'Infiniti', 'FX', 2010);
372
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (372, 'Infiniti', 'G', 2010);
373
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (373, 'Infiniti', 'M', 2010);
374
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (374, 'Infiniti', 'QX', 2010);
375
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (375, 'Jaguar', 'XF', 2010);
376
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (376, 'Jaguar', 'XK Series', 2010);
377
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (377, 'Jeep', 'Commander', 2010);
378
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (378, 'Jeep', 'Compass', 2010);
379
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (379, 'Jeep', 'Grand Cherokee', 2010);
380
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (380, 'Jeep', 'Liberty', 2010);
381
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (381, 'Jeep', 'Patriot', 2010);
382
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (382, 'Jeep', 'Wrangler', 2010);
383
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (383, 'Kia', 'Forte', 2010);
384
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (384, 'Kia', 'Optima', 2010);
385
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (385, 'Kia', 'Rio', 2010);
386
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (386, 'Kia', 'Rondo', 2010);
387
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (387, 'Kia', 'Sedona', 2010);
388
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (388, 'Kia', 'Soul', 2010);
389
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (389, 'Kia', 'Sportage', 2010);
390
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (390, 'Land Rover', 'LR2', 2010);
391
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (391, 'Land Rover', 'LR4', 2010);
392
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (392, 'Land Rover', 'Range Rover', 2010);
393
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (393, 'Land Rover', 'Range Rover Sport', 2010);
394
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (394, 'Lexus', 'ES', 2010);
395
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (395, 'Lexus', 'GS', 2010);
396
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (396, 'Lexus', 'GX', 2010);
397
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (397, 'Lexus', 'HS', 2010);
398
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (398, 'Lexus', 'IS', 2010);
399
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (399, 'Lexus', 'IS F', 2010);
400
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (400, 'Lexus', 'LS', 2010);
401
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (401, 'Lexus', 'LX', 2010);
402
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (402, 'Lexus', 'RX', 2010);
403
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (403, 'Lexus', 'SC', 2010);
404
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (404, 'Lincoln', 'MKS', 2010);
405
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (405, 'Lincoln', 'MKT', 2010);
406
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (406, 'Lincoln', 'MKX', 2010);
407
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (407, 'Lincoln', 'MKZ', 2010);
408
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (408, 'Lincoln', 'Navigator', 2010);
409
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (409, 'Lincoln', 'Navigator L', 2010);
410
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (410, 'Lincoln', 'Town Car', 2010);
411
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (411, 'Lotus', 'Elise', 2010);
412
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (412, 'Lotus', 'Exige', 2010);
413
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (413, 'Maybach', '57', 2010);
414
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (414, 'Maybach', '62', 2010);
415
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (415, 'Mazda', 'CX-7', 2010);
416
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (416, 'Mazda', 'CX-9', 2010);
417
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (417, 'Mazda', 'MAZDA3', 2010);
418
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (418, 'Mazda', 'MAZDA5', 2010);
419
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (419, 'Mazda', 'MAZDA6', 2010);
420
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (420, 'Mazda', 'Miata MX-5', 2010);
421
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (421, 'Mazda', 'RX-8', 2010);
422
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (422, 'Mazda', 'Tribute', 2010);
423
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (423, 'Mercedes-Benz', 'C-Class', 2010);
424
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (424, 'Mercedes-Benz', 'CL-Class', 2010);
425
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (425, 'Mercedes-Benz', 'CLS-Class', 2010);
426
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (426, 'Mercedes-Benz', 'E-Class', 2010);
427
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (427, 'Mercedes-Benz', 'G-Class', 2010);
428
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (428, 'Mercedes-Benz', 'GL-Class', 2010);
429
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (429, 'Mercedes-Benz', 'GLK-Class', 2010);
430
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (430, 'Mercedes-Benz', 'M-Class', 2010);
431
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (431, 'Mercedes-Benz', 'R-Class', 2010);
432
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (432, 'Mercedes-Benz', 'S-Class', 2010);
433
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (433, 'Mercedes-Benz', 'SLK-Class', 2010);
434
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (434, 'Mercury', 'Grand Marquis', 2010);
435
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (435, 'Mercury', 'Mariner', 2010);
436
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (436, 'Mercury', 'Milan', 2010);
437
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (437, 'Mercury', 'Mountaineer', 2010);
438
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (438, 'MINI', 'Cooper', 2010);
439
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (439, 'MINI', 'Cooper Clubman', 2010);
440
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (440, 'Mitsubishi', 'Eclipse', 2010);
441
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (441, 'Mitsubishi', 'Endeavor', 2010);
442
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (442, 'Mitsubishi', 'Galant', 2010);
443
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (443, 'Mitsubishi', 'Lancer', 2010);
444
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (444, 'Mitsubishi', 'Outlander', 2010);
445
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (445, 'Nissan', '370Z', 2010);
446
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (446, 'Nissan', 'Altima', 2010);
447
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (447, 'Nissan', 'Armada', 2010);
448
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (448, 'Nissan', 'cube', 2010);
449
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (449, 'Nissan', 'Frontier Crew Cab', 2010);
450
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (450, 'Nissan', 'Frontier King Cab', 2010);
451
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (451, 'Nissan', 'GT-R', 2010);
452
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (452, 'Nissan', 'Maxima', 2010);
453
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (453, 'Nissan', 'Murano', 2010);
454
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (454, 'Nissan', 'Pathfinder', 2010);
455
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (455, 'Nissan', 'Rogue', 2010);
456
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (456, 'Nissan', 'Sentra', 2010);
457
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (457, 'Nissan', 'Titan Crew Cab', 2010);
458
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (458, 'Nissan', 'Titan King Cab', 2010);
459
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (459, 'Nissan', 'Versa', 2010);
460
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (460, 'Nissan', 'Xterra', 2010);
461
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (461, 'Pontiac', 'G3', 2010);
462
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (462, 'Pontiac', 'G6', 2010);
463
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (463, 'Pontiac', 'Vibe', 2010);
464
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (464, 'Porsche', '911', 2010);
465
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (465, 'Porsche', 'Boxster', 2010);
466
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (466, 'Porsche', 'Cayenne', 2010);
467
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (467, 'Porsche', 'Cayman', 2010);
468
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (468, 'Porsche', 'Panamera', 2010);
469
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (469, 'Rolls-Royce', 'Ghost', 2010);
470
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (470, 'Rolls-Royce', 'Phantom', 2010);
471
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (471, 'Saab', '9-3', 2010);
472
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (472, 'Saab', '9-5', 2010);
473
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (473, 'Saturn', 'Outlook', 2010);
474
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (474, 'Saturn', 'VUE', 2010);
475
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (475, 'Scion', 'tC', 2010);
476
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (476, 'Scion', 'xB', 2010);
477
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (477, 'Scion', 'xD', 2010);
478
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (478, 'Smart', 'fortwo', 2010);
479
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (479, 'Subaru', 'Forester', 2010);
480
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (480, 'Subaru', 'Impreza', 2010);
481
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (481, 'Subaru', 'Legacy', 2010);
482
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (482, 'Subaru', 'Outback', 2010);
483
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (483, 'Subaru', 'Tribeca', 2010);
484
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (484, 'Suzuki', 'Equator Crew Cab', 2010);
485
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (485, 'Suzuki', 'Equator Extended Cab', 2010);
486
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (486, 'Suzuki', 'Grand Vitara', 2010);
487
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (487, 'Suzuki', 'Kizashi', 2010);
488
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (488, 'Suzuki', 'SX4', 2010);
489
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (489, 'Toyota', '4Runner', 2010);
490
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (490, 'Toyota', 'Avalon', 2010);
491
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (491, 'Toyota', 'Camry', 2010);
492
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (492, 'Toyota', 'Corolla', 2010);
493
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (493, 'Toyota', 'FJ Cruiser', 2010);
494
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (494, 'Toyota', 'Highlander', 2010);
495
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (495, 'Toyota', 'Land Cruiser', 2010);
496
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (496, 'Toyota', 'Matrix', 2010);
497
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (497, 'Toyota', 'Prius', 2010);
498
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (498, 'Toyota', 'RAV4', 2010);
499
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (499, 'Toyota', 'Sequoia', 2010);
500
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (500, 'Toyota', 'Sienna', 2010);
501
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (501, 'Toyota', 'Tacoma Access Cab', 2010);
502
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (502, 'Toyota', 'Tacoma Double Cab', 2010);
503
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (503, 'Toyota', 'Tacoma Regular Cab', 2010);
504
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (504, 'Toyota', 'Tundra CrewMax', 2010);
505
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (505, 'Toyota', 'Tundra Double Cab', 2010);
506
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (506, 'Toyota', 'Tundra Regular Cab', 2010);
507
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (507, 'Toyota', 'Venza', 2010);
508
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (508, 'Toyota', 'Yaris', 2010);
509
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (509, 'Volkswagen', 'CC', 2010);
510
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (510, 'Volkswagen', 'Eos', 2010);
511
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (511, 'Volkswagen', 'Golf', 2010);
512
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (512, 'Volkswagen', 'GTI', 2010);
513
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (513, 'Volkswagen', 'Jetta', 2010);
514
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (514, 'Volkswagen', 'New Beetle', 2010);
515
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (515, 'Volkswagen', 'Passat', 2010);
516
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (516, 'Volkswagen', 'Routan', 2010);
517
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (517, 'Volkswagen', 'Tiguan', 2010);
518
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (518, 'Volkswagen', 'Touareg', 2010);
519
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (519, 'Volvo', 'C30', 2010);
520
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (520, 'Volvo', 'C70', 2010);
521
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (521, 'Volvo', 'S40', 2010);
522
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (522, 'Volvo', 'S80', 2010);
523
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (523, 'Volvo', 'V50', 2010);
524
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (524, 'Volvo', 'V70', 2010);
525
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (525, 'Volvo', 'XC60', 2010);
526
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (526, 'Volvo', 'XC70', 2010);
527
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (527, 'Volvo', 'XC90', 2010);
528
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (528, 'Acura', 'MDX', 2009);
529
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (529, 'Acura', 'RDX', 2009);
530
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (530, 'Acura', 'RL', 2009);
531
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (531, 'Acura', 'TL', 2009);
532
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (532, 'Acura', 'TSX', 2009);
533
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (533, 'Aston Martin', 'DB9', 2009);
534
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (534, 'Aston Martin', 'DBS', 2009);
535
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (535, 'Aston Martin', 'Vantage', 2009);
536
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (536, 'Audi', 'A3', 2009);
537
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (537, 'Audi', 'A4', 2009);
538
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (538, 'Audi', 'A5', 2009);
539
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (539, 'Audi', 'A6', 2009);
540
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (540, 'Audi', 'A8', 2009);
541
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (541, 'Audi', 'Q5', 2009);
542
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (542, 'Audi', 'Q7', 2009);
543
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (543, 'Audi', 'R8', 2009);
544
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (544, 'Audi', 'S4', 2009);
545
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (545, 'Audi', 'S5', 2009);
546
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (546, 'Audi', 'S6', 2009);
547
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (547, 'Audi', 'S8', 2009);
548
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (548, 'Audi', 'TT', 2009);
549
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (549, 'Bentley', 'Arnage', 2009);
550
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (550, 'Bentley', 'Azure', 2009);
551
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (551, 'Bentley', 'Brooklands', 2009);
552
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (552, 'Bentley', 'Continental', 2009);
553
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (553, 'BMW', '1 Series', 2009);
554
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (554, 'BMW', '3 Series', 2009);
555
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (555, 'BMW', '5 Series', 2009);
556
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (556, 'BMW', '6 Series', 2009);
557
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (557, 'BMW', '7 Series', 2009);
558
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (558, 'BMW', 'M3', 2009);
559
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (559, 'BMW', 'M5', 2009);
560
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (560, 'BMW', 'M6', 2009);
561
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (561, 'BMW', 'X3', 2009);
562
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (562, 'BMW', 'X5', 2009);
563
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (563, 'BMW', 'X6', 2009);
564
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (564, 'BMW', 'Z4', 2009);
565
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (565, 'Buick', 'Enclave', 2009);
566
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (566, 'Buick', 'LaCrosse', 2009);
567
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (567, 'Buick', 'Lucerne', 2009);
568
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (568, 'Cadillac', 'CTS', 2009);
569
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (569, 'Cadillac', 'DTS', 2009);
570
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (570, 'Cadillac', 'Escalade', 2009);
571
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (571, 'Cadillac', 'Escalade ESV', 2009);
572
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (572, 'Cadillac', 'Escalade EXT', 2009);
573
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (573, 'Cadillac', 'SRX', 2009);
574
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (574, 'Cadillac', 'STS', 2009);
575
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (575, 'Cadillac', 'XLR', 2009);
576
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (576, 'Chevrolet', 'Avalanche', 2009);
577
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (577, 'Chevrolet', 'Aveo', 2009);
578
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (578, 'Chevrolet', 'Cobalt', 2009);
579
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (579, 'Chevrolet', 'Colorado Crew Cab', 2009);
580
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (580, 'Chevrolet', 'Colorado Extended Cab', 2009);
581
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (581, 'Chevrolet', 'Colorado Regular Cab', 2009);
582
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (582, 'Chevrolet', 'Corvette', 2009);
583
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (583, 'Chevrolet', 'Equinox', 2009);
584
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (584, 'Chevrolet', 'Express 1500 Cargo', 2009);
585
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (585, 'Chevrolet', 'Express 1500 Passenger', 2009);
586
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (586, 'Chevrolet', 'Express 2500 Cargo', 2009);
587
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (587, 'Chevrolet', 'Express 2500 Passenger', 2009);
588
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (588, 'Chevrolet', 'Express 3500 Cargo', 2009);
589
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (589, 'Chevrolet', 'Express 3500 Passenger', 2009);
590
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (590, 'Chevrolet', 'HHR', 2009);
591
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (591, 'Chevrolet', 'Impala', 2009);
592
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (592, 'Chevrolet', 'Malibu', 2009);
593
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (593, 'Chevrolet', 'Silverado 1500 Crew Cab', 2009);
594
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (594, 'Chevrolet', 'Silverado 1500 Extended Cab', 2009);
595
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (595, 'Chevrolet', 'Silverado 1500 Regular Cab', 2009);
596
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (596, 'Chevrolet', 'Silverado 2500 HD Crew Cab', 2009);
597
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (597, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2009);
598
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (598, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2009);
599
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (599, 'Chevrolet', 'Silverado 3500 HD Crew Cab', 2009);
600
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (600, 'Chevrolet', 'Silverado 3500 HD Extended Cab', 2009);
601
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (601, 'Chevrolet', 'Silverado 3500 HD Regular Cab', 2009);
602
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (602, 'Chevrolet', 'Suburban 1500', 2009);
603
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (603, 'Chevrolet', 'Suburban 2500', 2009);
604
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (604, 'Chevrolet', 'Tahoe', 2009);
605
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (605, 'Chevrolet', 'TrailBlazer', 2009);
606
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (606, 'Chevrolet', 'Traverse', 2009);
607
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (607, 'Chrysler', '300', 2009);
608
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (608, 'Chrysler', 'Aspen', 2009);
609
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (609, 'Chrysler', 'PT Cruiser', 2009);
610
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (610, 'Chrysler', 'Sebring', 2009);
611
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (611, 'Chrysler', 'Town & Country', 2009);
612
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (612, 'Dodge', 'Avenger', 2009);
613
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (613, 'Dodge', 'Caliber', 2009);
614
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (614, 'Dodge', 'Challenger', 2009);
615
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (615, 'Dodge', 'Charger', 2009);
616
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (616, 'Dodge', 'Dakota Crew Cab', 2009);
617
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (617, 'Dodge', 'Dakota Extended Cab', 2009);
618
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (618, 'Dodge', 'Durango', 2009);
619
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (619, 'Dodge', 'Grand Caravan Cargo', 2009);
620
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (620, 'Dodge', 'Grand Caravan Passenger', 2009);
621
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (621, 'Dodge', 'Journey', 2009);
622
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (622, 'Dodge', 'Nitro', 2009);
623
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (623, 'Dodge', 'Ram 1500 Crew Cab', 2009);
624
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (624, 'Dodge', 'Ram 1500 Quad Cab', 2009);
625
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (625, 'Dodge', 'Ram 1500 Regular Cab', 2009);
626
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (626, 'Dodge', 'Ram 2500 Mega Cab', 2009);
627
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (627, 'Dodge', 'Ram 2500 Quad Cab', 2009);
628
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (628, 'Dodge', 'Ram 2500 Regular Cab', 2009);
629
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (629, 'Dodge', 'Ram 3500 Mega Cab', 2009);
630
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (630, 'Dodge', 'Ram 3500 Quad Cab', 2009);
631
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (631, 'Dodge', 'Ram 3500 Regular Cab', 2009);
632
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (632, 'Dodge', 'Viper', 2009);
633
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (633, 'Ford', 'Crown Victoria', 2009);
634
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (634, 'Ford', 'E150 Cargo', 2009);
635
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (635, 'Ford', 'E150 Super Duty Passenger', 2009);
636
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (636, 'Ford', 'E250 Cargo', 2009);
637
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (637, 'Ford', 'E350 Super Duty Cargo', 2009);
638
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (638, 'Ford', 'E350 Super Duty Passenger', 2009);
639
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (639, 'Ford', 'Edge', 2009);
640
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (640, 'Ford', 'Escape', 2009);
641
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (641, 'Ford', 'Expedition', 2009);
642
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (642, 'Ford', 'Expedition EL', 2009);
643
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (643, 'Ford', 'Explorer', 2009);
644
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (644, 'Ford', 'Explorer Sport Trac', 2009);
645
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (645, 'Ford', 'F150 Regular Cab', 2009);
646
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (646, 'Ford', 'F150 Super Cab', 2009);
647
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (647, 'Ford', 'F150 SuperCrew Cab', 2009);
648
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (648, 'Ford', 'F250 Super Duty Crew Cab', 2009);
649
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (649, 'Ford', 'F250 Super Duty Regular Cab', 2009);
650
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (650, 'Ford', 'F250 Super Duty Super Cab', 2009);
651
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (651, 'Ford', 'F350 Super Duty Crew Cab', 2009);
652
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (652, 'Ford', 'F350 Super Duty Regular Cab', 2009);
653
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (653, 'Ford', 'F350 Super Duty Super Cab', 2009);
654
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (654, 'Ford', 'F450 Super Duty Crew Cab', 2009);
655
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (655, 'Ford', 'Flex', 2009);
656
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (656, 'Ford', 'Focus', 2009);
657
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (657, 'Ford', 'Fusion', 2009);
658
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (658, 'Ford', 'Mustang', 2009);
659
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (659, 'Ford', 'Ranger Regular Cab', 2009);
660
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (660, 'Ford', 'Ranger Super Cab', 2009);
661
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (661, 'Ford', 'Taurus', 2009);
662
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (662, 'Ford', 'Taurus X', 2009);
663
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (663, 'GMC', 'Acadia', 2009);
664
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (664, 'GMC', 'Canyon Crew Cab', 2009);
665
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (665, 'GMC', 'Canyon Extended Cab', 2009);
666
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (666, 'GMC', 'Canyon Regular Cab', 2009);
667
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (667, 'GMC', 'Envoy', 2009);
668
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (668, 'GMC', 'Savana 1500 Cargo', 2009);
669
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (669, 'GMC', 'Savana 1500 Passenger', 2009);
670
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (670, 'GMC', 'Savana 2500 Cargo', 2009);
671
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (671, 'GMC', 'Savana 2500 Passenger', 2009);
672
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (672, 'GMC', 'Savana 3500 Cargo', 2009);
673
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (673, 'GMC', 'Savana 3500 Passenger', 2009);
674
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (674, 'GMC', 'Sierra 1500 Crew Cab', 2009);
675
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (675, 'GMC', 'Sierra 1500 Extended Cab', 2009);
676
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (676, 'GMC', 'Sierra 1500 Regular Cab', 2009);
677
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (677, 'GMC', 'Sierra 2500 HD Crew Cab', 2009);
678
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (678, 'GMC', 'Sierra 2500 HD Extended Cab', 2009);
679
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (679, 'GMC', 'Sierra 2500 HD Regular Cab', 2009);
680
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (680, 'GMC', 'Sierra 3500 HD Crew Cab', 2009);
681
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (681, 'GMC', 'Sierra 3500 HD Extended Cab', 2009);
682
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (682, 'GMC', 'Sierra 3500 HD Regular Cab', 2009);
683
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (683, 'GMC', 'Yukon', 2009);
684
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (684, 'GMC', 'Yukon XL 1500', 2009);
685
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (685, 'GMC', 'Yukon XL 2500', 2009);
686
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (686, 'Honda', 'Accord', 2009);
687
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (687, 'Honda', 'Civic', 2009);
688
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (688, 'Honda', 'CR-V', 2009);
689
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (689, 'Honda', 'Element', 2009);
690
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (690, 'Honda', 'Fit', 2009);
691
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (691, 'Honda', 'Odyssey', 2009);
692
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (692, 'Honda', 'Pilot', 2009);
693
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (693, 'Honda', 'Ridgeline', 2009);
694
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (694, 'Honda', 'S2000', 2009);
695
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (695, 'HUMMER', 'H2', 2009);
696
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (696, 'HUMMER', 'H3', 2009);
697
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (697, 'HUMMER', 'H3T', 2009);
698
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (698, 'Hyundai', 'Accent', 2009);
699
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (699, 'Hyundai', 'Azera', 2009);
700
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (700, 'Hyundai', 'Elantra', 2009);
701
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (701, 'Hyundai', 'Genesis', 2009);
702
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (702, 'Hyundai', 'Santa Fe', 2009);
703
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (703, 'Hyundai', 'Sonata', 2009);
704
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (704, 'Hyundai', 'Tucson', 2009);
705
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (705, 'Hyundai', 'Veracruz', 2009);
706
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (706, 'Infiniti', 'EX', 2009);
707
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (707, 'Infiniti', 'FX', 2009);
708
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (708, 'Infiniti', 'G', 2009);
709
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (709, 'Infiniti', 'M', 2009);
710
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (710, 'Infiniti', 'QX', 2009);
711
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (711, 'Jaguar', 'XF', 2009);
712
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (712, 'Jaguar', 'XJ Series', 2009);
713
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (713, 'Jaguar', 'XK Series', 2009);
714
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (714, 'Jeep', 'Commander', 2009);
715
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (715, 'Jeep', 'Compass', 2009);
716
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (716, 'Jeep', 'Grand Cherokee', 2009);
717
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (717, 'Jeep', 'Liberty', 2009);
718
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (718, 'Jeep', 'Patriot', 2009);
719
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (719, 'Jeep', 'Wrangler', 2009);
720
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (720, 'Kia', 'Amanti', 2009);
721
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (721, 'Kia', 'Borrego', 2009);
722
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (722, 'Kia', 'Optima', 2009);
723
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (723, 'Kia', 'Rio', 2009);
724
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (724, 'Kia', 'Rondo', 2009);
725
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (725, 'Kia', 'Sedona', 2009);
726
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (726, 'Kia', 'Sorento', 2009);
727
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (727, 'Kia', 'Spectra', 2009);
728
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (728, 'Kia', 'Sportage', 2009);
729
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (729, 'Land Rover', 'LR2', 2009);
730
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (730, 'Land Rover', 'LR3', 2009);
731
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (731, 'Land Rover', 'Range Rover', 2009);
732
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (732, 'Land Rover', 'Range Rover Sport', 2009);
733
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (733, 'Lexus', 'ES', 2009);
734
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (734, 'Lexus', 'GS', 2009);
735
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (735, 'Lexus', 'GX', 2009);
736
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (736, 'Lexus', 'IS', 2009);
737
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (737, 'Lexus', 'IS F', 2009);
738
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (738, 'Lexus', 'LS', 2009);
739
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (739, 'Lexus', 'LX', 2009);
740
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (740, 'Lexus', 'RX', 2009);
741
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (741, 'Lexus', 'SC', 2009);
742
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (742, 'Lincoln', 'MKS', 2009);
743
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (743, 'Lincoln', 'MKX', 2009);
744
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (744, 'Lincoln', 'MKZ', 2009);
745
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (745, 'Lincoln', 'Navigator', 2009);
746
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (746, 'Lincoln', 'Navigator L', 2009);
747
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (747, 'Lincoln', 'Town Car', 2009);
748
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (748, 'Lotus', 'Elise', 2009);
749
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (749, 'Lotus', 'Exige', 2009);
750
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (750, 'Maybach', '57', 2009);
751
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (751, 'Maybach', '62', 2009);
752
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (752, 'Mazda', 'B-Series Extended Cab', 2009);
753
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (753, 'Mazda', 'B-Series Regular Cab', 2009);
754
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (754, 'Mazda', 'CX-7', 2009);
755
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (755, 'Mazda', 'CX-9', 2009);
756
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (756, 'Mazda', 'MAZDA3', 2009);
757
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (757, 'Mazda', 'MAZDA5', 2009);
758
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (758, 'Mazda', 'MAZDA6', 2009);
759
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (759, 'Mazda', 'Miata MX-5', 2009);
760
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (760, 'Mazda', 'RX-8', 2009);
761
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (761, 'Mazda', 'Tribute', 2009);
762
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (762, 'Mercedes-Benz', 'C-Class', 2009);
763
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (763, 'Mercedes-Benz', 'CL-Class', 2009);
764
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (764, 'Mercedes-Benz', 'CLK-Class', 2009);
765
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (765, 'Mercedes-Benz', 'CLS-Class', 2009);
766
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (766, 'Mercedes-Benz', 'E-Class', 2009);
767
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (767, 'Mercedes-Benz', 'G-Class', 2009);
768
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (768, 'Mercedes-Benz', 'GL-Class', 2009);
769
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (769, 'Mercedes-Benz', 'M-Class', 2009);
770
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (770, 'Mercedes-Benz', 'R-Class', 2009);
771
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (771, 'Mercedes-Benz', 'S-Class', 2009);
772
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (772, 'Mercedes-Benz', 'SL-Class', 2009);
773
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (773, 'Mercedes-Benz', 'SLK-Class', 2009);
774
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (774, 'Mercedes-Benz', 'SLR McLaren', 2009);
775
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (775, 'Mercury', 'Grand Marquis', 2009);
776
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (776, 'Mercury', 'Mariner', 2009);
777
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (777, 'Mercury', 'Milan', 2009);
778
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (778, 'Mercury', 'Mountaineer', 2009);
779
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (779, 'Mercury', 'Sable', 2009);
780
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (780, 'MINI', 'Cooper', 2009);
781
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (781, 'MINI', 'Cooper Clubman', 2009);
782
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (782, 'Mitsubishi', 'Eclipse', 2009);
783
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (783, 'Mitsubishi', 'Galant', 2009);
784
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (784, 'Mitsubishi', 'Lancer', 2009);
785
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (785, 'Mitsubishi', 'Outlander', 2009);
786
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (786, 'Mitsubishi', 'Raider Double Cab', 2009);
787
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (787, 'Mitsubishi', 'Raider Extended Cab', 2009);
788
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (788, 'Nissan', '350Z', 2009);
789
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (789, 'Nissan', '370Z', 2009);
790
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (790, 'Nissan', 'Altima', 2009);
791
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (791, 'Nissan', 'Armada', 2009);
792
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (792, 'Nissan', 'cube', 2009);
793
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (793, 'Nissan', 'Frontier Crew Cab', 2009);
794
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (794, 'Nissan', 'Frontier King Cab', 2009);
795
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (795, 'Nissan', 'GT-R', 2009);
796
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (796, 'Nissan', 'Maxima', 2009);
797
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (797, 'Nissan', 'Murano', 2009);
798
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (798, 'Nissan', 'Pathfinder', 2009);
799
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (799, 'Nissan', 'Quest', 2009);
800
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (800, 'Nissan', 'Rogue', 2009);
801
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (801, 'Nissan', 'Sentra', 2009);
802
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (802, 'Nissan', 'Titan Crew Cab', 2009);
803
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (803, 'Nissan', 'Titan King Cab', 2009);
804
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (804, 'Nissan', 'Versa', 2009);
805
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (805, 'Nissan', 'Xterra', 2009);
806
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (806, 'Pontiac', 'G3', 2009);
807
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (807, 'Pontiac', 'G5', 2009);
808
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (808, 'Pontiac', 'G6', 2009);
809
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (809, 'Pontiac', 'G6 (2009.5)', 2009);
810
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (810, 'Pontiac', 'G8', 2009);
811
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (811, 'Pontiac', 'Solstice', 2009);
812
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (812, 'Pontiac', 'Torrent', 2009);
813
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (813, 'Pontiac', 'Vibe', 2009);
814
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (814, 'Porsche', '911', 2009);
815
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (815, 'Porsche', 'Boxster', 2009);
816
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (816, 'Porsche', 'Cayenne', 2009);
817
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (817, 'Porsche', 'Cayman', 2009);
818
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (818, 'Rolls-Royce', 'Phantom', 2009);
819
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (819, 'Saab', '9-3', 2009);
820
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (820, 'Saab', '9-5', 2009);
821
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (821, 'Saab', '9-7X', 2009);
822
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (822, 'Saturn', 'Aura', 2009);
823
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (823, 'Saturn', 'Outlook', 2009);
824
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (824, 'Saturn', 'SKY', 2009);
825
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (825, 'Saturn', 'VUE', 2009);
826
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (826, 'Scion', 'tC', 2009);
827
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (827, 'Scion', 'xB', 2009);
828
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (828, 'Scion', 'xD', 2009);
829
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (829, 'Smart', 'fortwo', 2009);
830
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (830, 'Subaru', 'Forester', 2009);
831
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (831, 'Subaru', 'Impreza', 2009);
832
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (832, 'Subaru', 'Legacy', 2009);
833
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (833, 'Subaru', 'Outback', 2009);
834
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (834, 'Subaru', 'Tribeca', 2009);
835
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (835, 'Suzuki', 'Equator Crew Cab', 2009);
836
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (836, 'Suzuki', 'Equator Extended Cab', 2009);
837
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (837, 'Suzuki', 'Grand Vitara', 2009);
838
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (838, 'Suzuki', 'SX4', 2009);
839
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (839, 'Suzuki', 'XL7', 2009);
840
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (840, 'Toyota', '4Runner', 2009);
841
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (841, 'Toyota', 'Avalon', 2009);
842
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (842, 'Toyota', 'Camry', 2009);
843
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (843, 'Toyota', 'Corolla', 2009);
844
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (844, 'Toyota', 'FJ Cruiser', 2009);
845
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (845, 'Toyota', 'Highlander', 2009);
846
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (846, 'Toyota', 'Land Cruiser', 2009);
847
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (847, 'Toyota', 'Matrix', 2009);
848
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (848, 'Toyota', 'Prius', 2009);
849
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (849, 'Toyota', 'RAV4', 2009);
850
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (850, 'Toyota', 'Sequoia', 2009);
851
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (851, 'Toyota', 'Sienna', 2009);
852
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (852, 'Toyota', 'Tacoma Access Cab', 2009);
853
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (853, 'Toyota', 'Tacoma Double Cab', 2009);
854
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (854, 'Toyota', 'Tacoma Regular Cab', 2009);
855
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (855, 'Toyota', 'Tundra CrewMax', 2009);
856
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (856, 'Toyota', 'Tundra Double Cab', 2009);
857
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (857, 'Toyota', 'Tundra Regular Cab', 2009);
858
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (858, 'Toyota', 'Venza', 2009);
859
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (859, 'Toyota', 'Yaris', 2009);
860
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (860, 'Volkswagen', 'CC', 2009);
861
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (861, 'Volkswagen', 'Eos', 2009);
862
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (862, 'Volkswagen', 'GLI', 2009);
863
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (863, 'Volkswagen', 'GTI', 2009);
864
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (864, 'Volkswagen', 'Jetta', 2009);
865
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (865, 'Volkswagen', 'New Beetle', 2009);
866
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (866, 'Volkswagen', 'Passat', 2009);
867
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (867, 'Volkswagen', 'Rabbit', 2009);
868
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (868, 'Volkswagen', 'Routan', 2009);
869
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (869, 'Volkswagen', 'Tiguan', 2009);
870
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (870, 'Volkswagen', 'Touareg 2', 2009);
871
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (871, 'Volvo', 'C30', 2009);
872
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (872, 'Volvo', 'C70', 2009);
873
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (873, 'Volvo', 'S40', 2009);
874
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (874, 'Volvo', 'S60', 2009);
875
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (875, 'Volvo', 'S80', 2009);
876
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (876, 'Volvo', 'V50', 2009);
877
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (877, 'Volvo', 'V70', 2009);
878
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (878, 'Volvo', 'XC70', 2009);
879
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (879, 'Volvo', 'XC90', 2009);
880
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (880, 'Acura', 'MDX', 2008);
881
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (881, 'Acura', 'RDX', 2008);
882
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (882, 'Acura', 'RL', 2008);
883
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (883, 'Acura', 'TL', 2008);
884
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (884, 'Acura', 'TSX', 2008);
885
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (885, 'Aston Martin', 'DB9', 2008);
886
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (886, 'Aston Martin', 'DBS', 2008);
887
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (887, 'Aston Martin', 'Vantage', 2008);
888
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (888, 'Audi', 'A3', 2008);
889
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (889, 'Audi', 'A4', 2008);
890
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (890, 'Audi', 'A5', 2008);
891
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (891, 'Audi', 'A6', 2008);
892
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (892, 'Audi', 'A8', 2008);
893
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (893, 'Audi', 'Q7', 2008);
894
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (894, 'Audi', 'R8', 2008);
895
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (895, 'Audi', 'RS 4', 2008);
896
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (896, 'Audi', 'S4', 2008);
897
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (897, 'Audi', 'S5', 2008);
898
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (898, 'Audi', 'S6', 2008);
899
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (899, 'Audi', 'S8', 2008);
900
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (900, 'Audi', 'TT', 2008);
901
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (901, 'Bentley', 'Arnage', 2008);
902
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (902, 'Bentley', 'Azure', 2008);
903
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (903, 'Bentley', 'Continental', 2008);
904
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (904, 'BMW', '1 Series', 2008);
905
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (905, 'BMW', '3 Series', 2008);
906
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (906, 'BMW', '5 Series', 2008);
907
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (907, 'BMW', '6 Series', 2008);
908
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (908, 'BMW', '7 Series', 2008);
909
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (909, 'BMW', 'Alpina B7', 2008);
910
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (910, 'BMW', 'M3', 2008);
911
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (911, 'BMW', 'M5', 2008);
912
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (912, 'BMW', 'M6', 2008);
913
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (913, 'BMW', 'X3', 2008);
914
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (914, 'BMW', 'X5', 2008);
915
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (915, 'BMW', 'X6', 2008);
916
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (916, 'BMW', 'Z4', 2008);
917
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (917, 'BMW', 'Z4 M', 2008);
918
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (918, 'Buick', 'Enclave', 2008);
919
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (919, 'Buick', 'LaCrosse', 2008);
920
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (920, 'Buick', 'Lucerne', 2008);
921
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (921, 'Cadillac', 'CTS', 2008);
922
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (922, 'Cadillac', 'DTS', 2008);
923
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (923, 'Cadillac', 'Escalade', 2008);
924
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (924, 'Cadillac', 'Escalade ESV', 2008);
925
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (925, 'Cadillac', 'Escalade EXT', 2008);
926
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (926, 'Cadillac', 'SRX', 2008);
927
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (927, 'Cadillac', 'STS', 2008);
928
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (928, 'Cadillac', 'XLR', 2008);
929
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (929, 'Chevrolet', 'Avalanche', 2008);
930
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (930, 'Chevrolet', 'Aveo', 2008);
931
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (931, 'Chevrolet', 'Cobalt', 2008);
932
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (932, 'Chevrolet', 'Colorado Crew Cab', 2008);
933
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (933, 'Chevrolet', 'Colorado Extended Cab', 2008);
934
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (934, 'Chevrolet', 'Colorado Regular Cab', 2008);
935
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (935, 'Chevrolet', 'Corvette', 2008);
936
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (936, 'Chevrolet', 'Equinox', 2008);
937
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (937, 'Chevrolet', 'Express 1500 Cargo', 2008);
938
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (938, 'Chevrolet', 'Express 1500 Passenger', 2008);
939
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (939, 'Chevrolet', 'Express 2500 Cargo', 2008);
940
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (940, 'Chevrolet', 'Express 2500 Passenger', 2008);
941
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (941, 'Chevrolet', 'Express 3500 Cargo', 2008);
942
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (942, 'Chevrolet', 'Express 3500 Passenger', 2008);
943
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (943, 'Chevrolet', 'HHR', 2008);
944
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (944, 'Chevrolet', 'Impala', 2008);
945
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (945, 'Chevrolet', 'Malibu', 2008);
946
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (946, 'Chevrolet', 'Malibu (Classic)', 2008);
947
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (947, 'Chevrolet', 'Silverado 1500 Crew Cab', 2008);
948
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (948, 'Chevrolet', 'Silverado 1500 Extended Cab', 2008);
949
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (949, 'Chevrolet', 'Silverado 1500 Regular Cab', 2008);
950
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (950, 'Chevrolet', 'Silverado 2500 HD Crew Cab', 2008);
951
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (951, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2008);
952
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (952, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2008);
953
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (953, 'Chevrolet', 'Silverado 3500 HD Crew Cab', 2008);
954
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (954, 'Chevrolet', 'Silverado 3500 HD Extended Cab', 2008);
955
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (955, 'Chevrolet', 'Silverado 3500 HD Regular Cab', 2008);
956
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (956, 'Chevrolet', 'Suburban 1500', 2008);
957
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (957, 'Chevrolet', 'Suburban 2500', 2008);
958
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (958, 'Chevrolet', 'Tahoe', 2008);
959
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (959, 'Chevrolet', 'TrailBlazer', 2008);
960
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (960, 'Chevrolet', 'Uplander Cargo', 2008);
961
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (961, 'Chevrolet', 'Uplander Passenger', 2008);
962
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (962, 'Chrysler', '300', 2008);
963
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (963, 'Chrysler', 'Aspen', 2008);
964
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (964, 'Chrysler', 'Crossfire', 2008);
965
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (965, 'Chrysler', 'Pacifica', 2008);
966
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (966, 'Chrysler', 'PT Cruiser', 2008);
967
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (967, 'Chrysler', 'Sebring', 2008);
968
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (968, 'Chrysler', 'Town & Country', 2008);
969
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (969, 'Dodge', 'Avenger', 2008);
970
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (970, 'Dodge', 'Caliber', 2008);
971
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (971, 'Dodge', 'Challenger', 2008);
972
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (972, 'Dodge', 'Charger', 2008);
973
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (973, 'Dodge', 'Dakota Crew Cab', 2008);
974
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (974, 'Dodge', 'Dakota Extended Cab', 2008);
975
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (975, 'Dodge', 'Durango', 2008);
976
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (976, 'Dodge', 'Grand Caravan Cargo', 2008);
977
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (977, 'Dodge', 'Grand Caravan Passenger', 2008);
978
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (978, 'Dodge', 'Magnum', 2008);
979
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (979, 'Dodge', 'Nitro', 2008);
980
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (980, 'Dodge', 'Ram 1500 Mega Cab', 2008);
981
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (981, 'Dodge', 'Ram 1500 Quad Cab', 2008);
982
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (982, 'Dodge', 'Ram 1500 Regular Cab', 2008);
983
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (983, 'Dodge', 'Ram 2500 Mega Cab', 2008);
984
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (984, 'Dodge', 'Ram 2500 Quad Cab', 2008);
985
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (985, 'Dodge', 'Ram 2500 Regular Cab', 2008);
986
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (986, 'Dodge', 'Ram 3500 Mega Cab', 2008);
987
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (987, 'Dodge', 'Ram 3500 Quad Cab', 2008);
988
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (988, 'Dodge', 'Ram 3500 Regular Cab', 2008);
989
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (989, 'Dodge', 'Viper', 2008);
990
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (990, 'Ford', 'Crown Victoria', 2008);
991
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (991, 'Ford', 'E150 Cargo', 2008);
992
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (992, 'Ford', 'E150 Super Duty Passenger', 2008);
993
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (993, 'Ford', 'E250 Cargo', 2008);
994
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (994, 'Ford', 'E350 Super Duty Cargo', 2008);
995
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (995, 'Ford', 'E350 Super Duty Passenger', 2008);
996
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (996, 'Ford', 'Edge', 2008);
997
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (997, 'Ford', 'Escape', 2008);
998
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (998, 'Ford', 'Expedition', 2008);
999
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (999, 'Ford', 'Expedition EL', 2008);
1000
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1000, 'Ford', 'Explorer', 2008);
1001
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1001, 'Ford', 'Explorer Sport Trac', 2008);
1002
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1002, 'Ford', 'F150 Regular Cab', 2008);
1003
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1003, 'Ford', 'F150 Super Cab', 2008);
1004
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1004, 'Ford', 'F150 SuperCrew Cab', 2008);
1005
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1005, 'Ford', 'F250 Super Duty Crew Cab', 2008);
1006
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1006, 'Ford', 'F250 Super Duty Regular Cab', 2008);
1007
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1007, 'Ford', 'F250 Super Duty Super Cab', 2008);
1008
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1008, 'Ford', 'F350 Super Duty Crew Cab', 2008);
1009
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1009, 'Ford', 'F350 Super Duty Regular Cab', 2008);
1010
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1010, 'Ford', 'F350 Super Duty Super Cab', 2008);
1011
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1011, 'Ford', 'F450 Super Duty Crew Cab', 2008);
1012
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1012, 'Ford', 'Focus', 2008);
1013
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1013, 'Ford', 'Fusion', 2008);
1014
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1014, 'Ford', 'Mustang', 2008);
1015
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1015, 'Ford', 'Ranger Regular Cab', 2008);
1016
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1016, 'Ford', 'Ranger Super Cab', 2008);
1017
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1017, 'Ford', 'Taurus', 2008);
1018
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1018, 'Ford', 'Taurus X', 2008);
1019
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1019, 'GMC', 'Acadia', 2008);
1020
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1020, 'GMC', 'Canyon Crew Cab', 2008);
1021
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1021, 'GMC', 'Canyon Extended Cab', 2008);
1022
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1022, 'GMC', 'Canyon Regular Cab', 2008);
1023
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1023, 'GMC', 'Envoy', 2008);
1024
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1024, 'GMC', 'Savana 1500 Cargo', 2008);
1025
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1025, 'GMC', 'Savana 1500 Passenger', 2008);
1026
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1026, 'GMC', 'Savana 2500 Cargo', 2008);
1027
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1027, 'GMC', 'Savana 2500 Passenger', 2008);
1028
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1028, 'GMC', 'Savana 3500 Cargo', 2008);
1029
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1029, 'GMC', 'Savana 3500 Passenger', 2008);
1030
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1030, 'GMC', 'Sierra 1500 Crew Cab', 2008);
1031
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1031, 'GMC', 'Sierra 1500 Extended Cab', 2008);
1032
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1032, 'GMC', 'Sierra 1500 Regular Cab', 2008);
1033
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1033, 'GMC', 'Sierra 2500 HD Crew Cab', 2008);
1034
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1034, 'GMC', 'Sierra 2500 HD Extended Cab', 2008);
1035
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1035, 'GMC', 'Sierra 2500 HD Regular Cab', 2008);
1036
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1036, 'GMC', 'Sierra 3500 HD Crew Cab', 2008);
1037
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1037, 'GMC', 'Sierra 3500 HD Extended Cab', 2008);
1038
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1038, 'GMC', 'Sierra 3500 HD Regular Cab', 2008);
1039
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1039, 'GMC', 'Yukon', 2008);
1040
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1040, 'GMC', 'Yukon XL 1500', 2008);
1041
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1041, 'GMC', 'Yukon XL 2500', 2008);
1042
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1042, 'Honda', 'Accord', 2008);
1043
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1043, 'Honda', 'Civic', 2008);
1044
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1044, 'Honda', 'CR-V', 2008);
1045
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1045, 'Honda', 'Element', 2008);
1046
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1046, 'Honda', 'Fit', 2008);
1047
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1047, 'Honda', 'Odyssey', 2008);
1048
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1048, 'Honda', 'Pilot', 2008);
1049
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1049, 'Honda', 'Ridgeline', 2008);
1050
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1050, 'Honda', 'S2000', 2008);
1051
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1051, 'HUMMER', 'H2', 2008);
1052
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1052, 'HUMMER', 'H3', 2008);
1053
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1053, 'Hyundai', 'Accent', 2008);
1054
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1054, 'Hyundai', 'Azera', 2008);
1055
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1055, 'Hyundai', 'Elantra', 2008);
1056
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1056, 'Hyundai', 'Entourage', 2008);
1057
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1057, 'Hyundai', 'Santa Fe', 2008);
1058
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1058, 'Hyundai', 'Sonata', 2008);
1059
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1059, 'Hyundai', 'Tiburon', 2008);
1060
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1060, 'Hyundai', 'Tucson', 2008);
1061
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1061, 'Hyundai', 'Veracruz', 2008);
1062
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1062, 'Infiniti', 'EX', 2008);
1063
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1063, 'Infiniti', 'FX', 2008);
1064
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1064, 'Infiniti', 'G', 2008);
1065
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1065, 'Infiniti', 'M', 2008);
1066
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1066, 'Infiniti', 'QX', 2008);
1067
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1067, 'Isuzu', 'Ascender', 2008);
1068
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1068, 'Isuzu', 'i-290 Extended Cab', 2008);
1069
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1069, 'Isuzu', 'i-370 Crew Cab', 2008);
1070
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1070, 'Isuzu', 'i-370 Extended Cab', 2008);
1071
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1071, 'Jaguar', 'S-Type', 2008);
1072
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1072, 'Jaguar', 'XJ Series', 2008);
1073
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1073, 'Jaguar', 'XK Series', 2008);
1074
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1074, 'Jaguar', 'X-Type', 2008);
1075
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1075, 'Jeep', 'Commander', 2008);
1076
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1076, 'Jeep', 'Compass', 2008);
1077
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1077, 'Jeep', 'Grand Cherokee', 2008);
1078
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1078, 'Jeep', 'Liberty', 2008);
1079
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1079, 'Jeep', 'Patriot', 2008);
1080
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1080, 'Jeep', 'Wrangler', 2008);
1081
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1081, 'Kia', 'Amanti', 2008);
1082
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1082, 'Kia', 'Optima', 2008);
1083
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1083, 'Kia', 'Rio', 2008);
1084
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1084, 'Kia', 'Rondo', 2008);
1085
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1085, 'Kia', 'Sedona', 2008);
1086
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1086, 'Kia', 'Sorento', 2008);
1087
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1087, 'Kia', 'Spectra', 2008);
1088
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1088, 'Kia', 'Sportage', 2008);
1089
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1089, 'Land Rover', 'LR2', 2008);
1090
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1090, 'Land Rover', 'LR3', 2008);
1091
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1091, 'Land Rover', 'Range Rover', 2008);
1092
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1092, 'Land Rover', 'Range Rover Sport', 2008);
1093
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1093, 'Lexus', 'ES', 2008);
1094
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1094, 'Lexus', 'GS', 2008);
1095
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1095, 'Lexus', 'GX', 2008);
1096
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1096, 'Lexus', 'IS', 2008);
1097
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1097, 'Lexus', 'IS F', 2008);
1098
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1098, 'Lexus', 'LS', 2008);
1099
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1099, 'Lexus', 'LX', 2008);
1100
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1100, 'Lexus', 'RX', 2008);
1101
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1101, 'Lexus', 'SC', 2008);
1102
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1102, 'Lincoln', 'Mark LT', 2008);
1103
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1103, 'Lincoln', 'MKX', 2008);
1104
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1104, 'Lincoln', 'MKZ', 2008);
1105
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1105, 'Lincoln', 'Navigator', 2008);
1106
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1106, 'Lincoln', 'Navigator L', 2008);
1107
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1107, 'Lincoln', 'Town Car', 2008);
1108
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1108, 'Lotus', 'Elise', 2008);
1109
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1109, 'Lotus', 'Exige S', 2008);
1110
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1110, 'Maybach', '57', 2008);
1111
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1111, 'Maybach', '62', 2008);
1112
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1112, 'Mazda', 'B-Series Extended Cab', 2008);
1113
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1113, 'Mazda', 'B-Series Regular Cab', 2008);
1114
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1114, 'Mazda', 'CX-7', 2008);
1115
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1115, 'Mazda', 'CX-9', 2008);
1116
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1116, 'Mazda', 'MAZDA3', 2008);
1117
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1117, 'Mazda', 'MAZDA5', 2008);
1118
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1118, 'Mazda', 'MAZDA6', 2008);
1119
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1119, 'Mazda', 'Miata MX-5', 2008);
1120
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1120, 'Mazda', 'RX-8', 2008);
1121
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1121, 'Mazda', 'Tribute', 2008);
1122
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1122, 'Mercedes-Benz', 'C-Class', 2008);
1123
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1123, 'Mercedes-Benz', 'CL-Class', 2008);
1124
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1124, 'Mercedes-Benz', 'CLK-Class', 2008);
1125
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1125, 'Mercedes-Benz', 'CLS-Class', 2008);
1126
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1126, 'Mercedes-Benz', 'E-Class', 2008);
1127
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1127, 'Mercedes-Benz', 'G-Class', 2008);
1128
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1128, 'Mercedes-Benz', 'GL-Class', 2008);
1129
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1129, 'Mercedes-Benz', 'M-Class', 2008);
1130
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1130, 'Mercedes-Benz', 'R-Class', 2008);
1131
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1131, 'Mercedes-Benz', 'S-Class', 2008);
1132
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1132, 'Mercedes-Benz', 'SL-Class', 2008);
1133
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1133, 'Mercedes-Benz', 'SLK-Class', 2008);
1134
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1134, 'Mercedes-Benz', 'SLR McLaren', 2008);
1135
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1135, 'Mercury', 'Grand Marquis', 2008);
1136
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1136, 'Mercury', 'Mariner', 2008);
1137
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1137, 'Mercury', 'Milan', 2008);
1138
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1138, 'Mercury', 'Mountaineer', 2008);
1139
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1139, 'Mercury', 'Sable', 2008);
1140
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1140, 'MINI', 'Cooper', 2008);
1141
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1141, 'MINI', 'Cooper Clubman', 2008);
1142
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1142, 'Mitsubishi', 'Eclipse', 2008);
1143
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1143, 'Mitsubishi', 'Endeavor', 2008);
1144
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1144, 'Mitsubishi', 'Galant', 2008);
1145
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1145, 'Mitsubishi', 'Lancer', 2008);
1146
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1146, 'Mitsubishi', 'Outlander', 2008);
1147
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1147, 'Mitsubishi', 'Raider Double Cab', 2008);
1148
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1148, 'Mitsubishi', 'Raider Extended Cab', 2008);
1149
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1149, 'Nissan', '350Z', 2008);
1150
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1150, 'Nissan', 'Altima', 2008);
1151
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1151, 'Nissan', 'Armada', 2008);
1152
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1152, 'Nissan', 'Frontier Crew Cab', 2008);
1153
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1153, 'Nissan', 'Frontier King Cab', 2008);
1154
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1154, 'Nissan', 'Maxima', 2008);
1155
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1155, 'Nissan', 'Pathfinder', 2008);
1156
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1156, 'Nissan', 'Quest', 2008);
1157
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1157, 'Nissan', 'Rogue', 2008);
1158
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1158, 'Nissan', 'Sentra', 2008);
1159
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1159, 'Nissan', 'Titan Crew Cab', 2008);
1160
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1160, 'Nissan', 'Titan King Cab', 2008);
1161
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1161, 'Nissan', 'Versa', 2008);
1162
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1162, 'Nissan', 'Xterra', 2008);
1163
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1163, 'Pontiac', 'G5', 2008);
1164
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1164, 'Pontiac', 'G6', 2008);
1165
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1165, 'Pontiac', 'G8', 2008);
1166
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1166, 'Pontiac', 'Grand Prix', 2008);
1167
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1167, 'Pontiac', 'Solstice', 2008);
1168
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1168, 'Pontiac', 'Torrent', 2008);
1169
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1169, 'Pontiac', 'Vibe', 2008);
1170
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1170, 'Porsche', '911', 2008);
1171
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1171, 'Porsche', 'Boxster', 2008);
1172
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1172, 'Porsche', 'Cayenne', 2008);
1173
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1173, 'Porsche', 'Cayman', 2008);
1174
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1174, 'Rolls-Royce', 'Phantom', 2008);
1175
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1175, 'Saab', '9-3', 2008);
1176
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1176, 'Saab', '9-5', 2008);
1177
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1177, 'Saab', '9-7X', 2008);
1178
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1178, 'Saturn', 'Astra', 2008);
1179
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1179, 'Saturn', 'Aura', 2008);
1180
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1180, 'Saturn', 'Outlook', 2008);
1181
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1181, 'Saturn', 'SKY', 2008);
1182
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1182, 'Saturn', 'VUE', 2008);
1183
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1183, 'Scion', 'tC', 2008);
1184
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1184, 'Scion', 'xB', 2008);
1185
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1185, 'Scion', 'xD', 2008);
1186
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1186, 'Smart', 'fortwo', 2008);
1187
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1187, 'Subaru', 'Forester', 2008);
1188
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1188, 'Subaru', 'Impreza', 2008);
1189
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1189, 'Subaru', 'Legacy', 2008);
1190
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1190, 'Subaru', 'Outback', 2008);
1191
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1191, 'Subaru', 'Tribeca', 2008);
1192
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1192, 'Suzuki', 'Forenza', 2008);
1193
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1193, 'Suzuki', 'Grand Vitara', 2008);
1194
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1194, 'Suzuki', 'Reno', 2008);
1195
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1195, 'Suzuki', 'SX4', 2008);
1196
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1196, 'Suzuki', 'XL7', 2008);
1197
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1197, 'Toyota', '4Runner', 2008);
1198
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1198, 'Toyota', 'Avalon', 2008);
1199
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1199, 'Toyota', 'Camry', 2008);
1200
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1200, 'Toyota', 'Corolla', 2008);
1201
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1201, 'Toyota', 'FJ Cruiser', 2008);
1202
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1202, 'Toyota', 'Highlander', 2008);
1203
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1203, 'Toyota', 'Land Cruiser', 2008);
1204
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1204, 'Toyota', 'Matrix', 2008);
1205
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1205, 'Toyota', 'Prius', 2008);
1206
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1206, 'Toyota', 'RAV4', 2008);
1207
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1207, 'Toyota', 'Sequoia', 2008);
1208
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1208, 'Toyota', 'Sienna', 2008);
1209
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1209, 'Toyota', 'Solara', 2008);
1210
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1210, 'Toyota', 'Tacoma Access Cab', 2008);
1211
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1211, 'Toyota', 'Tacoma Double Cab', 2008);
1212
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1212, 'Toyota', 'Tacoma Regular Cab', 2008);
1213
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1213, 'Toyota', 'Tundra CrewMax', 2008);
1214
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1214, 'Toyota', 'Tundra Double Cab', 2008);
1215
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1215, 'Toyota', 'Tundra Regular Cab', 2008);
1216
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1216, 'Toyota', 'Yaris', 2008);
1217
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1217, 'Volkswagen', 'Eos', 2008);
1218
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1218, 'Volkswagen', 'GLI', 2008);
1219
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1219, 'Volkswagen', 'GTI', 2008);
1220
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1220, 'Volkswagen', 'Jetta', 2008);
1221
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1221, 'Volkswagen', 'New Beetle', 2008);
1222
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1222, 'Volkswagen', 'Passat', 2008);
1223
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1223, 'Volkswagen', 'R32', 2008);
1224
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1224, 'Volkswagen', 'Rabbit', 2008);
1225
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1225, 'Volkswagen', 'Touareg 2', 2008);
1226
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1226, 'Volvo', 'C30', 2008);
1227
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1227, 'Volvo', 'C70', 2008);
1228
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1228, 'Volvo', 'S40', 2008);
1229
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1229, 'Volvo', 'S60', 2008);
1230
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1230, 'Volvo', 'S80', 2008);
1231
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1231, 'Volvo', 'V50', 2008);
1232
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1232, 'Volvo', 'V70', 2008);
1233
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1233, 'Volvo', 'XC70', 2008);
1234
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1234, 'Volvo', 'XC90', 2008);
1235
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1235, 'Acura', 'MDX', 2007);
1236
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1236, 'Acura', 'RDX', 2007);
1237
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1237, 'Acura', 'RL', 2007);
1238
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1238, 'Acura', 'TL', 2007);
1239
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1239, 'Acura', 'TSX', 2007);
1240
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1240, 'Aston Martin', 'DB9', 2007);
1241
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1241, 'Aston Martin', 'Vantage', 2007);
1242
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1242, 'Audi', 'A3', 2007);
1243
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1243, 'Audi', 'A4', 2007);
1244
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1244, 'Audi', 'A6', 2007);
1245
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1245, 'Audi', 'A8', 2007);
1246
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1246, 'Audi', 'Q7', 2007);
1247
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1247, 'Audi', 'RS 4', 2007);
1248
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1248, 'Audi', 'S4', 2007);
1249
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1249, 'Audi', 'S6', 2007);
1250
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1250, 'Audi', 'S8', 2007);
1251
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1251, 'Bentley', 'Arnage', 2007);
1252
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1252, 'Bentley', 'Azure', 2007);
1253
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1253, 'Bentley', 'Continental', 2007);
1254
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1254, 'BMW', '3 Series', 2007);
1255
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1255, 'BMW', '5 Series', 2007);
1256
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1256, 'BMW', '6 Series', 2007);
1257
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1257, 'BMW', '7 Series', 2007);
1258
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1258, 'BMW', 'Alpina B7', 2007);
1259
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1259, 'BMW', 'M5', 2007);
1260
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1260, 'BMW', 'M6', 2007);
1261
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1261, 'BMW', 'X3', 2007);
1262
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1262, 'BMW', 'X5', 2007);
1263
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1263, 'BMW', 'Z4', 2007);
1264
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1264, 'BMW', 'Z4 M', 2007);
1265
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1265, 'Buick', 'LaCrosse', 2007);
1266
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1266, 'Buick', 'Lucerne', 2007);
1267
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1267, 'Buick', 'Rainier', 2007);
1268
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1268, 'Buick', 'Rendezvous', 2007);
1269
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1269, 'Buick', 'Terraza', 2007);
1270
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1270, 'Cadillac', 'CTS', 2007);
1271
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1271, 'Cadillac', 'DTS', 2007);
1272
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1272, 'Cadillac', 'Escalade', 2007);
1273
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1273, 'Cadillac', 'Escalade ESV', 2007);
1274
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1274, 'Cadillac', 'Escalade EXT', 2007);
1275
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1275, 'Cadillac', 'SRX', 2007);
1276
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1276, 'Cadillac', 'STS', 2007);
1277
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1277, 'Cadillac', 'XLR', 2007);
1278
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1278, 'Chevrolet', 'Avalanche', 2007);
1279
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1279, 'Chevrolet', 'Aveo', 2007);
1280
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1280, 'Chevrolet', 'Cobalt', 2007);
1281
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1281, 'Chevrolet', 'Colorado Crew Cab', 2007);
1282
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1282, 'Chevrolet', 'Colorado Extended Cab', 2007);
1283
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1283, 'Chevrolet', 'Colorado Regular Cab', 2007);
1284
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1284, 'Chevrolet', 'Corvette', 2007);
1285
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1285, 'Chevrolet', 'Equinox', 2007);
1286
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1286, 'Chevrolet', 'Express 1500 Cargo', 2007);
1287
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1287, 'Chevrolet', 'Express 1500 Passenger', 2007);
1288
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1288, 'Chevrolet', 'Express 2500 Cargo', 2007);
1289
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1289, 'Chevrolet', 'Express 2500 Passenger', 2007);
1290
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1290, 'Chevrolet', 'Express 3500 Cargo', 2007);
1291
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1291, 'Chevrolet', 'Express 3500 Passenger', 2007);
1292
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1292, 'Chevrolet', 'HHR', 2007);
1293
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1293, 'Chevrolet', 'Impala', 2007);
1294
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1294, 'Chevrolet', 'Malibu', 2007);
1295
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1295, 'Chevrolet', 'Monte Carlo', 2007);
1296
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1296, 'Chevrolet', 'Silverado (Classic) 1500 Crew Cab', 2007);
1297
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1297, 'Chevrolet', 'Silverado (Classic) 1500 Extended Cab', 2007);
1298
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1298, 'Chevrolet', 'Silverado (Classic) 1500 HD Crew Cab', 2007);
1299
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1299, 'Chevrolet', 'Silverado (Classic) 1500 Regular Cab', 2007);
1300
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1300, 'Chevrolet', 'Silverado (Classic) 2500 HD Crew Cab', 2007);
1301
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1301, 'Chevrolet', 'Silverado (Classic) 2500 HD Extended Cab', 2007);
1302
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1302, 'Chevrolet', 'Silverado (Classic) 2500 HD Regular Cab', 2007);
1303
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1303, 'Chevrolet', 'Silverado (Classic) 3500 Crew Cab', 2007);
1304
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1304, 'Chevrolet', 'Silverado (Classic) 3500 Extended Cab', 2007);
1305
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1305, 'Chevrolet', 'Silverado (Classic) 3500 Regular Cab', 2007);
1306
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1306, 'Chevrolet', 'Silverado 1500 Crew Cab', 2007);
1307
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1307, 'Chevrolet', 'Silverado 1500 Extended Cab', 2007);
1308
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1308, 'Chevrolet', 'Silverado 1500 Regular Cab', 2007);
1309
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1309, 'Chevrolet', 'Silverado 2500 HD Crew Cab', 2007);
1310
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1310, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2007);
1311
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1311, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2007);
1312
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1312, 'Chevrolet', 'Silverado 3500 HD Crew Cab', 2007);
1313
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1313, 'Chevrolet', 'Silverado 3500 HD Extended Cab', 2007);
1314
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1314, 'Chevrolet', 'Silverado 3500 HD Regular Cab', 2007);
1315
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1315, 'Chevrolet', 'Suburban 1500', 2007);
1316
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1316, 'Chevrolet', 'Suburban 2500', 2007);
1317
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1317, 'Chevrolet', 'Tahoe', 2007);
1318
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1318, 'Chevrolet', 'TrailBlazer', 2007);
1319
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1319, 'Chevrolet', 'Uplander Cargo', 2007);
1320
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1320, 'Chevrolet', 'Uplander Passenger', 2007);
1321
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1321, 'Chrysler', '300', 2007);
1322
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1322, 'Chrysler', 'Aspen', 2007);
1323
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1323, 'Chrysler', 'Crossfire', 2007);
1324
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1324, 'Chrysler', 'Pacifica', 2007);
1325
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1325, 'Chrysler', 'PT Cruiser', 2007);
1326
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1326, 'Chrysler', 'Sebring', 2007);
1327
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1327, 'Chrysler', 'Town & Country', 2007);
1328
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1328, 'Dodge', 'Caliber', 2007);
1329
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1329, 'Dodge', 'Caravan Cargo', 2007);
1330
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1330, 'Dodge', 'Caravan Passenger', 2007);
1331
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1331, 'Dodge', 'Charger', 2007);
1332
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1332, 'Dodge', 'Dakota Club Cab', 2007);
1333
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1333, 'Dodge', 'Dakota Quad Cab', 2007);
1334
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1334, 'Dodge', 'Durango', 2007);
1335
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1335, 'Dodge', 'Grand Caravan Cargo', 2007);
1336
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1336, 'Dodge', 'Grand Caravan Passenger', 2007);
1337
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1337, 'Dodge', 'Magnum', 2007);
1338
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1338, 'Dodge', 'Nitro', 2007);
1339
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1339, 'Dodge', 'Ram 1500 Mega Cab', 2007);
1340
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1340, 'Dodge', 'Ram 1500 Quad Cab', 2007);
1341
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1341, 'Dodge', 'Ram 1500 Regular Cab', 2007);
1342
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1342, 'Dodge', 'Ram 2500 Mega Cab', 2007);
1343
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1343, 'Dodge', 'Ram 2500 Quad Cab', 2007);
1344
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1344, 'Dodge', 'Ram 2500 Regular Cab', 2007);
1345
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1345, 'Dodge', 'Ram 3500 Mega Cab', 2007);
1346
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1346, 'Dodge', 'Ram 3500 Quad Cab', 2007);
1347
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1347, 'Dodge', 'Ram 3500 Regular Cab', 2007);
1348
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1348, 'Ford', 'Crown Victoria', 2007);
1349
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1349, 'Ford', 'E150 Super Duty Cargo', 2007);
1350
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1350, 'Ford', 'E150 Super Duty Passenger', 2007);
1351
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1351, 'Ford', 'E250 Super Duty Cargo', 2007);
1352
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1352, 'Ford', 'E350 Super Duty Cargo', 2007);
1353
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1353, 'Ford', 'E350 Super Duty Passenger', 2007);
1354
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1354, 'Ford', 'Edge', 2007);
1355
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1355, 'Ford', 'Escape', 2007);
1356
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1356, 'Ford', 'Expedition', 2007);
1357
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1357, 'Ford', 'Expedition EL', 2007);
1358
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1358, 'Ford', 'Explorer', 2007);
1359
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1359, 'Ford', 'Explorer Sport Trac', 2007);
1360
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1360, 'Ford', 'F150 Regular Cab', 2007);
1361
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1361, 'Ford', 'F150 Super Cab', 2007);
1362
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1362, 'Ford', 'F150 SuperCrew Cab', 2007);
1363
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1363, 'Ford', 'F250 Super Duty Crew Cab', 2007);
1364
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1364, 'Ford', 'F250 Super Duty Regular Cab', 2007);
1365
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1365, 'Ford', 'F250 Super Duty Super Cab', 2007);
1366
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1366, 'Ford', 'F350 Super Duty Crew Cab', 2007);
1367
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1367, 'Ford', 'F350 Super Duty Regular Cab', 2007);
1368
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1368, 'Ford', 'F350 Super Duty Super Cab', 2007);
1369
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1369, 'Ford', 'Five Hundred', 2007);
1370
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1370, 'Ford', 'Focus', 2007);
1371
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1371, 'Ford', 'Freestar Cargo', 2007);
1372
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1372, 'Ford', 'Freestar Passenger', 2007);
1373
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1373, 'Ford', 'Freestyle', 2007);
1374
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1374, 'Ford', 'Fusion', 2007);
1375
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1375, 'Ford', 'Mustang', 2007);
1376
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1376, 'Ford', 'Ranger Regular Cab', 2007);
1377
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1377, 'Ford', 'Ranger Super Cab', 2007);
1378
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1378, 'Ford', 'Taurus', 2007);
1379
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1379, 'GMC', 'Acadia', 2007);
1380
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1380, 'GMC', 'Canyon Crew Cab', 2007);
1381
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1381, 'GMC', 'Canyon Extended Cab', 2007);
1382
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1382, 'GMC', 'Canyon Regular Cab', 2007);
1383
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1383, 'GMC', 'Envoy', 2007);
1384
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1384, 'GMC', 'Savana 1500 Cargo', 2007);
1385
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1385, 'GMC', 'Savana 1500 Passenger', 2007);
1386
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1386, 'GMC', 'Savana 2500 Cargo', 2007);
1387
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1387, 'GMC', 'Savana 2500 Passenger', 2007);
1388
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1388, 'GMC', 'Savana 3500 Cargo', 2007);
1389
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1389, 'GMC', 'Savana 3500 Passenger', 2007);
1390
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1390, 'GMC', 'Sierra (Classic) 1500 Crew Cab', 2007);
1391
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1391, 'GMC', 'Sierra (Classic) 1500 Extended Cab', 2007);
1392
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1392, 'GMC', 'Sierra (Classic) 1500 HD Crew Cab', 2007);
1393
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1393, 'GMC', 'Sierra (Classic) 1500 Regular Cab', 2007);
1394
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1394, 'GMC', 'Sierra (Classic) 2500 HD Crew Cab', 2007);
1395
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1395, 'GMC', 'Sierra (Classic) 2500 HD Extended Cab', 2007);
1396
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1396, 'GMC', 'Sierra (Classic) 2500 HD Regular Cab', 2007);
1397
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1397, 'GMC', 'Sierra (Classic) 3500 Crew Cab', 2007);
1398
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1398, 'GMC', 'Sierra (Classic) 3500 Extended Cab', 2007);
1399
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1399, 'GMC', 'Sierra (Classic) 3500 Regular Cab', 2007);
1400
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1400, 'GMC', 'Sierra 1500 Crew Cab', 2007);
1401
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1401, 'GMC', 'Sierra 1500 Extended Cab', 2007);
1402
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1402, 'GMC', 'Sierra 1500 Regular Cab', 2007);
1403
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1403, 'GMC', 'Sierra 2500 HD Crew Cab', 2007);
1404
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1404, 'GMC', 'Sierra 2500 HD Extended Cab', 2007);
1405
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1405, 'GMC', 'Sierra 2500 HD Regular Cab', 2007);
1406
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1406, 'GMC', 'Sierra 3500 HD Crew Cab', 2007);
1407
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1407, 'GMC', 'Sierra 3500 HD Extended Cab', 2007);
1408
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1408, 'GMC', 'Sierra 3500 HD Regular Cab', 2007);
1409
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1409, 'GMC', 'Yukon', 2007);
1410
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1410, 'GMC', 'Yukon XL 1500', 2007);
1411
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1411, 'GMC', 'Yukon XL 2500', 2007);
1412
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1412, 'Honda', 'Accord', 2007);
1413
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1413, 'Honda', 'Civic', 2007);
1414
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1414, 'Honda', 'CR-V', 2007);
1415
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1415, 'Honda', 'Element', 2007);
1416
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1416, 'Honda', 'Fit', 2007);
1417
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1417, 'Honda', 'Odyssey', 2007);
1418
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1418, 'Honda', 'Pilot', 2007);
1419
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1419, 'Honda', 'Ridgeline', 2007);
1420
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1420, 'Honda', 'S2000', 2007);
1421
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1421, 'HUMMER', 'H2', 2007);
1422
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1422, 'HUMMER', 'H3', 2007);
1423
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1423, 'Hyundai', 'Accent', 2007);
1424
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1424, 'Hyundai', 'Azera', 2007);
1425
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1425, 'Hyundai', 'Elantra', 2007);
1426
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1426, 'Hyundai', 'Entourage', 2007);
1427
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1427, 'Hyundai', 'Santa Fe', 2007);
1428
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1428, 'Hyundai', 'Sonata', 2007);
1429
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1429, 'Hyundai', 'Tiburon', 2007);
1430
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1430, 'Hyundai', 'Tucson', 2007);
1431
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1431, 'Hyundai', 'Veracruz', 2007);
1432
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1432, 'Infiniti', 'FX', 2007);
1433
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1433, 'Infiniti', 'G', 2007);
1434
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1434, 'Infiniti', 'M', 2007);
1435
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1435, 'Infiniti', 'QX', 2007);
1436
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1436, 'Isuzu', 'Ascender', 2007);
1437
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1437, 'Isuzu', 'i-290 Extended Cab', 2007);
1438
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1438, 'Isuzu', 'i-370 Crew Cab', 2007);
1439
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1439, 'Isuzu', 'i-370 Extended Cab', 2007);
1440
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1440, 'Jaguar', 'S-Type', 2007);
1441
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1441, 'Jaguar', 'XJ Series', 2007);
1442
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1442, 'Jaguar', 'XK Series', 2007);
1443
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1443, 'Jaguar', 'X-Type', 2007);
1444
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1444, 'Jeep', 'Commander', 2007);
1445
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1445, 'Jeep', 'Compass', 2007);
1446
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1446, 'Jeep', 'Grand Cherokee', 2007);
1447
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1447, 'Jeep', 'Liberty', 2007);
1448
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1448, 'Jeep', 'Patriot', 2007);
1449
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1449, 'Jeep', 'Wrangler', 2007);
1450
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1450, 'Kia', 'Amanti', 2007);
1451
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1451, 'Kia', 'Optima', 2007);
1452
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1452, 'Kia', 'Rio', 2007);
1453
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1453, 'Kia', 'Rondo', 2007);
1454
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1454, 'Kia', 'Sedona', 2007);
1455
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1455, 'Kia', 'Sorento', 2007);
1456
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1456, 'Kia', 'Spectra', 2007);
1457
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1457, 'Kia', 'Sportage', 2007);
1458
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1458, 'Land Rover', 'LR3', 2007);
1459
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1459, 'Land Rover', 'Range Rover', 2007);
1460
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1460, 'Land Rover', 'Range Rover Sport', 2007);
1461
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1461, 'Lexus', 'ES', 2007);
1462
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1462, 'Lexus', 'GS', 2007);
1463
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1463, 'Lexus', 'GX', 2007);
1464
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1464, 'Lexus', 'IS', 2007);
1465
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1465, 'Lexus', 'LS', 2007);
1466
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1466, 'Lexus', 'LX', 2007);
1467
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1467, 'Lexus', 'RX', 2007);
1468
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1468, 'Lexus', 'SC', 2007);
1469
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1469, 'Lincoln', 'Mark LT', 2007);
1470
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1470, 'Lincoln', 'MKX', 2007);
1471
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1471, 'Lincoln', 'MKZ', 2007);
1472
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1472, 'Lincoln', 'Navigator', 2007);
1473
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1473, 'Lincoln', 'Navigator L', 2007);
1474
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1474, 'Lincoln', 'Town Car', 2007);
1475
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1475, 'Lotus', 'Elise', 2007);
1476
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1476, 'Lotus', 'Exige S', 2007);
1477
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1477, 'Maybach', '57', 2007);
1478
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1478, 'Maybach', '62', 2007);
1479
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1479, 'Mazda', 'B-Series Extended Cab', 2007);
1480
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1480, 'Mazda', 'B-Series Regular Cab', 2007);
1481
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1481, 'Mazda', 'CX-7', 2007);
1482
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1482, 'Mazda', 'CX-9', 2007);
1483
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1483, 'Mazda', 'MAZDA3', 2007);
1484
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1484, 'Mazda', 'MAZDA5', 2007);
1485
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1485, 'Mazda', 'MAZDA6', 2007);
1486
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1486, 'Mazda', 'Miata MX-5', 2007);
1487
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1487, 'Mazda', 'RX-8', 2007);
1488
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1488, 'Mercedes-Benz', 'C-Class', 2007);
1489
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1489, 'Mercedes-Benz', 'CL-Class', 2007);
1490
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1490, 'Mercedes-Benz', 'CLK-Class', 2007);
1491
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1491, 'Mercedes-Benz', 'CLS-Class', 2007);
1492
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1492, 'Mercedes-Benz', 'E-Class', 2007);
1493
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1493, 'Mercedes-Benz', 'G-Class', 2007);
1494
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1494, 'Mercedes-Benz', 'GL-Class', 2007);
1495
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1495, 'Mercedes-Benz', 'M-Class', 2007);
1496
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1496, 'Mercedes-Benz', 'R-Class', 2007);
1497
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1497, 'Mercedes-Benz', 'S-Class', 2007);
1498
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1498, 'Mercedes-Benz', 'SL-Class', 2007);
1499
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1499, 'Mercedes-Benz', 'SLK-Class', 2007);
1500
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1500, 'Mercedes-Benz', 'SLR McLaren', 2007);
1501
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1501, 'Mercury', 'Grand Marquis', 2007);
1502
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1502, 'Mercury', 'Mariner', 2007);
1503
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1503, 'Mercury', 'Milan', 2007);
1504
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1504, 'Mercury', 'Montego', 2007);
1505
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1505, 'Mercury', 'Monterey', 2007);
1506
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1506, 'Mercury', 'Mountaineer', 2007);
1507
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1507, 'MINI', 'Cooper', 2007);
1508
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1508, 'Mitsubishi', 'Eclipse', 2007);
1509
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1509, 'Mitsubishi', 'Endeavor', 2007);
1510
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1510, 'Mitsubishi', 'Galant', 2007);
1511
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1511, 'Mitsubishi', 'Lancer', 2007);
1512
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1512, 'Mitsubishi', 'Outlander', 2007);
1513
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1513, 'Mitsubishi', 'Raider Double Cab', 2007);
1514
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1514, 'Mitsubishi', 'Raider Extended Cab', 2007);
1515
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1515, 'Nissan', '350Z', 2007);
1516
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1516, 'Nissan', 'Altima', 2007);
1517
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1517, 'Nissan', 'Armada', 2007);
1518
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1518, 'Nissan', 'Frontier Crew Cab', 2007);
1519
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1519, 'Nissan', 'Frontier King Cab', 2007);
1520
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1520, 'Nissan', 'Maxima', 2007);
1521
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1521, 'Nissan', 'Murano', 2007);
1522
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1522, 'Nissan', 'Pathfinder', 2007);
1523
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1523, 'Nissan', 'Quest', 2007);
1524
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1524, 'Nissan', 'Sentra', 2007);
1525
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1525, 'Nissan', 'Titan Crew Cab', 2007);
1526
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1526, 'Nissan', 'Titan King Cab', 2007);
1527
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1527, 'Nissan', 'Versa', 2007);
1528
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1528, 'Nissan', 'Xterra', 2007);
1529
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1529, 'Pontiac', 'G5', 2007);
1530
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1530, 'Pontiac', 'G6', 2007);
1531
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1531, 'Pontiac', 'Grand Prix', 2007);
1532
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1532, 'Pontiac', 'Solstice', 2007);
1533
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1533, 'Pontiac', 'Torrent', 2007);
1534
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1534, 'Pontiac', 'Vibe', 2007);
1535
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1535, 'Porsche', '911', 2007);
1536
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1536, 'Porsche', 'Boxster', 2007);
1537
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1537, 'Porsche', 'Cayman', 2007);
1538
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1538, 'Rolls-Royce', 'Phantom', 2007);
1539
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1539, 'Saab', '9-3', 2007);
1540
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1540, 'Saab', '9-5', 2007);
1541
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1541, 'Saab', '9-7X', 2007);
1542
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1542, 'Saturn', 'Aura', 2007);
1543
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1543, 'Saturn', 'Ion', 2007);
1544
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1544, 'Saturn', 'Outlook', 2007);
1545
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1545, 'Saturn', 'Relay', 2007);
1546
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1546, 'Saturn', 'SKY', 2007);
1547
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1547, 'Saturn', 'VUE', 2007);
1548
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1548, 'Scion', 'tC', 2007);
1549
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1549, 'Subaru', 'B9 Tribeca', 2007);
1550
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1550, 'Subaru', 'Forester', 2007);
1551
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1551, 'Subaru', 'Impreza', 2007);
1552
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1552, 'Subaru', 'Legacy', 2007);
1553
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1553, 'Subaru', 'Outback', 2007);
1554
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1554, 'Suzuki', 'Aerio', 2007);
1555
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1555, 'Suzuki', 'Forenza', 2007);
1556
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1556, 'Suzuki', 'Grand Vitara', 2007);
1557
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1557, 'Suzuki', 'Reno', 2007);
1558
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1558, 'Suzuki', 'SX4', 2007);
1559
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1559, 'Suzuki', 'XL7', 2007);
1560
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1560, 'Toyota', '4Runner', 2007);
1561
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1561, 'Toyota', 'Avalon', 2007);
1562
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1562, 'Toyota', 'Camry', 2007);
1563
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1563, 'Toyota', 'Corolla', 2007);
1564
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1564, 'Toyota', 'FJ Cruiser', 2007);
1565
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1565, 'Toyota', 'Highlander', 2007);
1566
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1566, 'Toyota', 'Land Cruiser', 2007);
1567
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1567, 'Toyota', 'Matrix', 2007);
1568
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1568, 'Toyota', 'Prius', 2007);
1569
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1569, 'Toyota', 'RAV4', 2007);
1570
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1570, 'Toyota', 'Sequoia', 2007);
1571
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1571, 'Toyota', 'Sienna', 2007);
1572
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1572, 'Toyota', 'Solara', 2007);
1573
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1573, 'Toyota', 'Tacoma Access Cab', 2007);
1574
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1574, 'Toyota', 'Tacoma Double Cab', 2007);
1575
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1575, 'Toyota', 'Tacoma Regular Cab', 2007);
1576
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1576, 'Toyota', 'Tundra CrewMax', 2007);
1577
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1577, 'Toyota', 'Tundra Double Cab', 2007);
1578
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1578, 'Toyota', 'Tundra Regular Cab', 2007);
1579
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1579, 'Toyota', 'Yaris', 2007);
1580
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1580, 'Volkswagen', 'Eos', 2007);
1581
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1581, 'Volkswagen', 'GTI', 2007);
1582
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1582, 'Volkswagen', 'Jetta', 2007);
1583
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1583, 'Volkswagen', 'New Beetle', 2007);
1584
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1584, 'Volkswagen', 'Passat', 2007);
1585
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1585, 'Volkswagen', 'Rabbit', 2007);
1586
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1586, 'Volkswagen', 'Touareg', 2007);
1587
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1587, 'Volvo', 'C70', 2007);
1588
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1588, 'Volvo', 'S40', 2007);
1589
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1589, 'Volvo', 'S60', 2007);
1590
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1590, 'Volvo', 'S80', 2007);
1591
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1591, 'Volvo', 'V50', 2007);
1592
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1592, 'Volvo', 'V70', 2007);
1593
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1593, 'Volvo', 'XC70', 2007);
1594
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1594, 'Volvo', 'XC90', 2007);
1595
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1595, 'Acura', 'MDX', 2006);
1596
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1596, 'Acura', 'RL', 2006);
1597
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1597, 'Acura', 'RSX', 2006);
1598
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1598, 'Acura', 'TL', 2006);
1599
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1599, 'Acura', 'TSX', 2006);
1600
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1600, 'Aston Martin', 'DB9', 2006);
1601
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1601, 'Aston Martin', 'Vanquish S', 2006);
1602
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1602, 'Aston Martin', 'Vantage', 2006);
1603
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1603, 'Audi', 'A3', 2006);
1604
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1604, 'Audi', 'A4', 2006);
1605
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1605, 'Audi', 'A6', 2006);
1606
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1606, 'Audi', 'A8', 2006);
1607
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1607, 'Audi', 'S4', 2006);
1608
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1608, 'Audi', 'TT', 2006);
1609
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1609, 'Bentley', 'Arnage', 2006);
1610
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1610, 'Bentley', 'Continental', 2006);
1611
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1611, 'BMW', '3 Series', 2006);
1612
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1612, 'BMW', '5 Series', 2006);
1613
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1613, 'BMW', '6 Series', 2006);
1614
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1614, 'BMW', '7 Series', 2006);
1615
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1615, 'BMW', 'M3', 2006);
1616
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1616, 'BMW', 'M5', 2006);
1617
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1617, 'BMW', 'M6', 2006);
1618
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1618, 'BMW', 'X3', 2006);
1619
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1619, 'BMW', 'X5', 2006);
1620
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1620, 'BMW', 'Z4', 2006);
1621
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1621, 'BMW', 'Z4 M', 2006);
1622
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1622, 'Buick', 'LaCrosse', 2006);
1623
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1623, 'Buick', 'Lucerne', 2006);
1624
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1624, 'Buick', 'Rainier', 2006);
1625
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1625, 'Buick', 'Rendezvous', 2006);
1626
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1626, 'Buick', 'Terraza', 2006);
1627
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1627, 'Cadillac', 'CTS', 2006);
1628
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1628, 'Cadillac', 'DTS', 2006);
1629
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1629, 'Cadillac', 'Escalade', 2006);
1630
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1630, 'Cadillac', 'Escalade ESV', 2006);
1631
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1631, 'Cadillac', 'Escalade EXT', 2006);
1632
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1632, 'Cadillac', 'SRX', 2006);
1633
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1633, 'Cadillac', 'STS', 2006);
1634
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1634, 'Cadillac', 'XLR', 2006);
1635
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1635, 'Chevrolet', 'Avalanche 1500', 2006);
1636
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1636, 'Chevrolet', 'Avalanche 2500', 2006);
1637
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1637, 'Chevrolet', 'Aveo', 2006);
1638
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1638, 'Chevrolet', 'Cobalt', 2006);
1639
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1639, 'Chevrolet', 'Colorado Crew Cab', 2006);
1640
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1640, 'Chevrolet', 'Colorado Extended Cab', 2006);
1641
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1641, 'Chevrolet', 'Colorado Regular Cab', 2006);
1642
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1642, 'Chevrolet', 'Corvette', 2006);
1643
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1643, 'Chevrolet', 'Equinox', 2006);
1644
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1644, 'Chevrolet', 'Express 1500 Cargo', 2006);
1645
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1645, 'Chevrolet', 'Express 1500 Passenger', 2006);
1646
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1646, 'Chevrolet', 'Express 2500 Cargo', 2006);
1647
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1647, 'Chevrolet', 'Express 2500 Passenger', 2006);
1648
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1648, 'Chevrolet', 'Express 3500 Cargo', 2006);
1649
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1649, 'Chevrolet', 'Express 3500 Passenger', 2006);
1650
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1650, 'Chevrolet', 'HHR', 2006);
1651
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1651, 'Chevrolet', 'Impala', 2006);
1652
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1652, 'Chevrolet', 'Malibu', 2006);
1653
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1653, 'Chevrolet', 'Monte Carlo', 2006);
1654
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1654, 'Chevrolet', 'Silverado 1500 Crew Cab', 2006);
1655
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1655, 'Chevrolet', 'Silverado 1500 Extended Cab', 2006);
1656
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1656, 'Chevrolet', 'Silverado 1500 HD Crew Cab', 2006);
1657
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1657, 'Chevrolet', 'Silverado 1500 Regular Cab', 2006);
1658
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1658, 'Chevrolet', 'Silverado 2500 HD Crew Cab', 2006);
1659
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1659, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2006);
1660
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1660, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2006);
1661
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1661, 'Chevrolet', 'Silverado 3500 Crew Cab', 2006);
1662
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1662, 'Chevrolet', 'Silverado 3500 Extended Cab', 2006);
1663
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1663, 'Chevrolet', 'Silverado 3500 Regular Cab', 2006);
1664
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1664, 'Chevrolet', 'SSR', 2006);
1665
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1665, 'Chevrolet', 'Suburban 1500', 2006);
1666
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1666, 'Chevrolet', 'Suburban 2500', 2006);
1667
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1667, 'Chevrolet', 'Tahoe', 2006);
1668
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1668, 'Chevrolet', 'TrailBlazer', 2006);
1669
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1669, 'Chevrolet', 'Uplander Cargo', 2006);
1670
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1670, 'Chevrolet', 'Uplander Passenger', 2006);
1671
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1671, 'Chrysler', '300', 2006);
1672
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1672, 'Chrysler', 'Crossfire', 2006);
1673
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1673, 'Chrysler', 'Pacifica', 2006);
1674
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1674, 'Chrysler', 'PT Cruiser', 2006);
1675
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1675, 'Chrysler', 'Sebring', 2006);
1676
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1676, 'Chrysler', 'Town & Country', 2006);
1677
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1677, 'Dodge', 'Caravan Cargo', 2006);
1678
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1678, 'Dodge', 'Caravan Passenger', 2006);
1679
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1679, 'Dodge', 'Charger', 2006);
1680
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1680, 'Dodge', 'Dakota Club Cab', 2006);
1681
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1681, 'Dodge', 'Dakota Quad Cab', 2006);
1682
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1682, 'Dodge', 'Durango', 2006);
1683
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1683, 'Dodge', 'Grand Caravan Cargo', 2006);
1684
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1684, 'Dodge', 'Grand Caravan Passenger', 2006);
1685
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1685, 'Dodge', 'Magnum', 2006);
1686
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1686, 'Dodge', 'Ram 1500 Mega Cab', 2006);
1687
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1687, 'Dodge', 'Ram 1500 Quad Cab', 2006);
1688
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1688, 'Dodge', 'Ram 1500 Regular Cab', 2006);
1689
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1689, 'Dodge', 'Ram 2500 Mega Cab', 2006);
1690
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1690, 'Dodge', 'Ram 2500 Quad Cab', 2006);
1691
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1691, 'Dodge', 'Ram 2500 Regular Cab', 2006);
1692
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1692, 'Dodge', 'Ram 3500 Mega Cab', 2006);
1693
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1693, 'Dodge', 'Ram 3500 Quad Cab', 2006);
1694
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1694, 'Dodge', 'Ram 3500 Regular Cab', 2006);
1695
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1695, 'Dodge', 'Stratus', 2006);
1696
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1696, 'Dodge', 'Viper', 2006);
1697
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1697, 'Ford', 'Crown Victoria', 2006);
1698
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1698, 'Ford', 'E150 Super Duty Cargo', 2006);
1699
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1699, 'Ford', 'E150 Super Duty Passenger', 2006);
1700
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1700, 'Ford', 'E250 Super Duty Cargo', 2006);
1701
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1701, 'Ford', 'E350 Super Duty Cargo', 2006);
1702
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1702, 'Ford', 'E350 Super Duty Passenger', 2006);
1703
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1703, 'Ford', 'Escape', 2006);
1704
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1704, 'Ford', 'Expedition', 2006);
1705
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1705, 'Ford', 'Explorer', 2006);
1706
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1706, 'Ford', 'F150 Regular Cab', 2006);
1707
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1707, 'Ford', 'F150 Super Cab', 2006);
1708
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1708, 'Ford', 'F150 SuperCrew Cab', 2006);
1709
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1709, 'Ford', 'F250 Super Duty Crew Cab', 2006);
1710
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1710, 'Ford', 'F250 Super Duty Regular Cab', 2006);
1711
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1711, 'Ford', 'F250 Super Duty Super Cab', 2006);
1712
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1712, 'Ford', 'F350 Super Duty Crew Cab', 2006);
1713
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1713, 'Ford', 'F350 Super Duty Regular Cab', 2006);
1714
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1714, 'Ford', 'F350 Super Duty Super Cab', 2006);
1715
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1715, 'Ford', 'Five Hundred', 2006);
1716
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1716, 'Ford', 'Focus', 2006);
1717
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1717, 'Ford', 'Freestar Cargo', 2006);
1718
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1718, 'Ford', 'Freestar Passenger', 2006);
1719
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1719, 'Ford', 'Freestyle', 2006);
1720
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1720, 'Ford', 'Fusion', 2006);
1721
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1721, 'Ford', 'GT', 2006);
1722
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1722, 'Ford', 'Mustang', 2006);
1723
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1723, 'Ford', 'Ranger Regular Cab', 2006);
1724
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1724, 'Ford', 'Ranger Super Cab', 2006);
1725
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1725, 'Ford', 'Taurus', 2006);
1726
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1726, 'GMC', 'Canyon Crew Cab', 2006);
1727
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1727, 'GMC', 'Canyon Extended Cab', 2006);
1728
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1728, 'GMC', 'Canyon Regular Cab', 2006);
1729
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1729, 'GMC', 'Envoy', 2006);
1730
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1730, 'GMC', 'Envoy XL', 2006);
1731
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1731, 'GMC', 'Savana 1500 Cargo', 2006);
1732
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1732, 'GMC', 'Savana 1500 Passenger', 2006);
1733
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1733, 'GMC', 'Savana 2500 Cargo', 2006);
1734
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1734, 'GMC', 'Savana 2500 Passenger', 2006);
1735
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1735, 'GMC', 'Savana 3500 Cargo', 2006);
1736
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1736, 'GMC', 'Savana 3500 Passenger', 2006);
1737
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1737, 'GMC', 'Sierra 1500 Crew Cab', 2006);
1738
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1738, 'GMC', 'Sierra 1500 Extended Cab', 2006);
1739
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1739, 'GMC', 'Sierra 1500 HD Crew Cab', 2006);
1740
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1740, 'GMC', 'Sierra 1500 Regular Cab', 2006);
1741
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1741, 'GMC', 'Sierra 2500 HD Crew Cab', 2006);
1742
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1742, 'GMC', 'Sierra 2500 HD Extended Cab', 2006);
1743
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1743, 'GMC', 'Sierra 2500 HD Regular Cab', 2006);
1744
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1744, 'GMC', 'Sierra 3500 Crew Cab', 2006);
1745
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1745, 'GMC', 'Sierra 3500 Extended Cab', 2006);
1746
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1746, 'GMC', 'Sierra 3500 Regular Cab', 2006);
1747
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1747, 'GMC', 'Yukon', 2006);
1748
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1748, 'GMC', 'Yukon XL 1500', 2006);
1749
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1749, 'GMC', 'Yukon XL 2500', 2006);
1750
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1750, 'Honda', 'Accord', 2006);
1751
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1751, 'Honda', 'Civic', 2006);
1752
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1752, 'Honda', 'CR-V', 2006);
1753
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1753, 'Honda', 'Element', 2006);
1754
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1754, 'Honda', 'Insight', 2006);
1755
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1755, 'Honda', 'Odyssey', 2006);
1756
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1756, 'Honda', 'Pilot', 2006);
1757
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1757, 'Honda', 'Ridgeline', 2006);
1758
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1758, 'Honda', 'S2000', 2006);
1759
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1759, 'HUMMER', 'H1', 2006);
1760
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1760, 'HUMMER', 'H2', 2006);
1761
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1761, 'HUMMER', 'H3', 2006);
1762
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1762, 'Hyundai', 'Accent', 2006);
1763
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1763, 'Hyundai', 'Azera', 2006);
1764
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1764, 'Hyundai', 'Elantra', 2006);
1765
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1765, 'Hyundai', 'Santa Fe', 2006);
1766
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1766, 'Hyundai', 'Sonata', 2006);
1767
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1767, 'Hyundai', 'Tiburon', 2006);
1768
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1768, 'Hyundai', 'Tucson', 2006);
1769
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1769, 'Infiniti', 'FX', 2006);
1770
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1770, 'Infiniti', 'G', 2006);
1771
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1771, 'Infiniti', 'M', 2006);
1772
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1772, 'Infiniti', 'Q', 2006);
1773
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1773, 'Infiniti', 'QX', 2006);
1774
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1774, 'Isuzu', 'Ascender', 2006);
1775
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1775, 'Isuzu', 'i-280 Extended Cab', 2006);
1776
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1776, 'Isuzu', 'i-350 Crew Cab', 2006);
1777
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1777, 'Jaguar', 'S-Type', 2006);
1778
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1778, 'Jaguar', 'XJ Series', 2006);
1779
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1779, 'Jaguar', 'XK Series', 2006);
1780
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1780, 'Jaguar', 'X-Type', 2006);
1781
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1781, 'Jeep', 'Commander', 2006);
1782
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1782, 'Jeep', 'Grand Cherokee', 2006);
1783
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1783, 'Jeep', 'Liberty', 2006);
1784
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1784, 'Jeep', 'Wrangler', 2006);
1785
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1785, 'Kia', 'Amanti', 2006);
1786
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1786, 'Kia', 'Optima', 2006);
1787
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1787, 'Kia', 'Optima (2006.5)', 2006);
1788
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1788, 'Kia', 'Rio', 2006);
1789
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1789, 'Kia', 'Sedona', 2006);
1790
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1790, 'Kia', 'Sorento', 2006);
1791
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1791, 'Kia', 'Spectra', 2006);
1792
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1792, 'Kia', 'Sportage', 2006);
1793
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1793, 'Land Rover', 'LR3', 2006);
1794
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1794, 'Land Rover', 'Range Rover', 2006);
1795
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1795, 'Land Rover', 'Range Rover Sport', 2006);
1796
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1796, 'Lexus', 'ES', 2006);
1797
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1797, 'Lexus', 'GS', 2006);
1798
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1798, 'Lexus', 'GX', 2006);
1799
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1799, 'Lexus', 'IS', 2006);
1800
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1800, 'Lexus', 'LS', 2006);
1801
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1801, 'Lexus', 'LX', 2006);
1802
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1802, 'Lexus', 'RX', 2006);
1803
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1803, 'Lexus', 'SC', 2006);
1804
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1804, 'Lincoln', 'LS', 2006);
1805
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1805, 'Lincoln', 'Mark LT', 2006);
1806
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1806, 'Lincoln', 'Navigator', 2006);
1807
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1807, 'Lincoln', 'Town Car', 2006);
1808
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1808, 'Lincoln', 'Zephyr', 2006);
1809
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1809, 'Lotus', 'Elise', 2006);
1810
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1810, 'Lotus', 'Exige', 2006);
1811
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1811, 'Maybach', '57', 2006);
1812
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1812, 'Maybach', '62', 2006);
1813
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1813, 'Mazda', 'B-Series Extended Cab', 2006);
1814
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1814, 'Mazda', 'B-Series Regular Cab', 2006);
1815
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1815, 'Mazda', 'MAZDA3', 2006);
1816
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1816, 'Mazda', 'MAZDA5', 2006);
1817
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1817, 'Mazda', 'MAZDA6', 2006);
1818
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1818, 'Mazda', 'Miata MX-5', 2006);
1819
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1819, 'Mazda', 'MPV', 2006);
1820
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1820, 'Mazda', 'RX-8', 2006);
1821
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1821, 'Mazda', 'Tribute', 2006);
1822
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1822, 'Mercedes-Benz', 'C-Class', 2006);
1823
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1823, 'Mercedes-Benz', 'CL-Class', 2006);
1824
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1824, 'Mercedes-Benz', 'CLK-Class', 2006);
1825
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1825, 'Mercedes-Benz', 'CLS-Class', 2006);
1826
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1826, 'Mercedes-Benz', 'E-Class', 2006);
1827
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1827, 'Mercedes-Benz', 'G-Class', 2006);
1828
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1828, 'Mercedes-Benz', 'M-Class', 2006);
1829
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1829, 'Mercedes-Benz', 'R-Class', 2006);
1830
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1830, 'Mercedes-Benz', 'S-Class', 2006);
1831
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1831, 'Mercedes-Benz', 'SL-Class', 2006);
1832
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1832, 'Mercedes-Benz', 'SLK-Class', 2006);
1833
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1833, 'Mercedes-Benz', 'SLR McLaren', 2006);
1834
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1834, 'Mercury', 'Grand Marquis', 2006);
1835
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1835, 'Mercury', 'Mariner', 2006);
1836
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1836, 'Mercury', 'Milan', 2006);
1837
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1837, 'Mercury', 'Montego', 2006);
1838
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1838, 'Mercury', 'Monterey', 2006);
1839
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1839, 'Mercury', 'Mountaineer', 2006);
1840
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1840, 'MINI', 'Cooper', 2006);
1841
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1841, 'Mitsubishi', 'Eclipse', 2006);
1842
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1842, 'Mitsubishi', 'Endeavor', 2006);
1843
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1843, 'Mitsubishi', 'Galant', 2006);
1844
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1844, 'Mitsubishi', 'Lancer', 2006);
1845
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1845, 'Mitsubishi', 'Montero', 2006);
1846
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1846, 'Mitsubishi', 'Outlander', 2006);
1847
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1847, 'Mitsubishi', 'Raider Double Cab', 2006);
1848
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1848, 'Mitsubishi', 'Raider Extended Cab', 2006);
1849
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1849, 'Nissan', '350Z', 2006);
1850
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1850, 'Nissan', 'Altima', 2006);
1851
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1851, 'Nissan', 'Armada', 2006);
1852
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1852, 'Nissan', 'Frontier Crew Cab', 2006);
1853
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1853, 'Nissan', 'Frontier King Cab', 2006);
1854
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1854, 'Nissan', 'Maxima', 2006);
1855
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1855, 'Nissan', 'Murano', 2006);
1856
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1856, 'Nissan', 'Pathfinder', 2006);
1857
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1857, 'Nissan', 'Quest', 2006);
1858
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1858, 'Nissan', 'Sentra', 2006);
1859
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1859, 'Nissan', 'Titan Crew Cab', 2006);
1860
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1860, 'Nissan', 'Titan King Cab', 2006);
1861
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1861, 'Nissan', 'Xterra', 2006);
1862
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1862, 'Panoz', 'Esperante', 2006);
1863
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1863, 'Pontiac', 'G6', 2006);
1864
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1864, 'Pontiac', 'Grand Prix', 2006);
1865
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1865, 'Pontiac', 'GTO', 2006);
1866
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1866, 'Pontiac', 'Montana SV6', 2006);
1867
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1867, 'Pontiac', 'Solstice', 2006);
1868
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1868, 'Pontiac', 'Torrent', 2006);
1869
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1869, 'Pontiac', 'Vibe', 2006);
1870
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1870, 'Porsche', '911', 2006);
1871
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1871, 'Porsche', 'Boxster', 2006);
1872
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1872, 'Porsche', 'Cayenne', 2006);
1873
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1873, 'Porsche', 'Cayman', 2006);
1874
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1874, 'Rolls-Royce', 'Phantom', 2006);
1875
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1875, 'Saab', '9-2X', 2006);
1876
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1876, 'Saab', '9-3', 2006);
1877
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1877, 'Saab', '9-5', 2006);
1878
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1878, 'Saab', '9-7X', 2006);
1879
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1879, 'Saturn', 'Ion', 2006);
1880
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1880, 'Saturn', 'Relay', 2006);
1881
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1881, 'Saturn', 'VUE', 2006);
1882
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1882, 'Scion', 'tC', 2006);
1883
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1883, 'Scion', 'xA', 2006);
1884
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1884, 'Scion', 'xB', 2006);
1885
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1885, 'Subaru', 'B9 Tribeca', 2006);
1886
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1886, 'Subaru', 'Baja', 2006);
1887
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1887, 'Subaru', 'Forester', 2006);
1888
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1888, 'Subaru', 'Impreza', 2006);
1889
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1889, 'Subaru', 'Legacy', 2006);
1890
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1890, 'Subaru', 'Outback', 2006);
1891
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1891, 'Suzuki', 'Aerio', 2006);
1892
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1892, 'Suzuki', 'Forenza', 2006);
1893
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1893, 'Suzuki', 'Grand Vitara', 2006);
1894
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1894, 'Suzuki', 'Reno', 2006);
1895
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1895, 'Suzuki', 'Verona', 2006);
1896
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1896, 'Suzuki', 'XL-7', 2006);
1897
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1897, 'Toyota', '4Runner', 2006);
1898
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1898, 'Toyota', 'Avalon', 2006);
1899
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1899, 'Toyota', 'Camry', 2006);
1900
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1900, 'Toyota', 'Corolla', 2006);
1901
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1901, 'Toyota', 'Highlander', 2006);
1902
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1902, 'Toyota', 'Land Cruiser', 2006);
1903
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1903, 'Toyota', 'Matrix', 2006);
1904
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1904, 'Toyota', 'Prius', 2006);
1905
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1905, 'Toyota', 'RAV4', 2006);
1906
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1906, 'Toyota', 'Sequoia', 2006);
1907
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1907, 'Toyota', 'Sienna', 2006);
1908
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1908, 'Toyota', 'Solara', 2006);
1909
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1909, 'Toyota', 'Tacoma Access Cab', 2006);
1910
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1910, 'Toyota', 'Tacoma Double Cab', 2006);
1911
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1911, 'Toyota', 'Tacoma Regular Cab', 2006);
1912
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1912, 'Toyota', 'Tundra Access Cab', 2006);
1913
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1913, 'Toyota', 'Tundra Double Cab', 2006);
1914
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1914, 'Toyota', 'Tundra Regular Cab', 2006);
1915
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1915, 'Volkswagen', 'Golf', 2006);
1916
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1916, 'Volkswagen', 'GTI', 2006);
1917
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1917, 'Volkswagen', 'Jetta', 2006);
1918
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1918, 'Volkswagen', 'New Beetle', 2006);
1919
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1919, 'Volkswagen', 'Passat', 2006);
1920
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1920, 'Volkswagen', 'Phaeton', 2006);
1921
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1921, 'Volkswagen', 'Rabbit', 2006);
1922
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1922, 'Volkswagen', 'Touareg', 2006);
1923
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1923, 'Volvo', 'C70', 2006);
1924
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1924, 'Volvo', 'S40', 2006);
1925
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1925, 'Volvo', 'S60', 2006);
1926
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1926, 'Volvo', 'S80', 2006);
1927
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1927, 'Volvo', 'V50', 2006);
1928
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1928, 'Volvo', 'V70', 2006);
1929
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1929, 'Volvo', 'XC70', 2006);
1930
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1930, 'Volvo', 'XC90', 2006);
1931
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1931, 'Acura', 'MDX', 2005);
1932
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1932, 'Acura', 'NSX', 2005);
1933
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1933, 'Acura', 'RL', 2005);
1934
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1934, 'Acura', 'RSX', 2005);
1935
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1935, 'Acura', 'TL', 2005);
1936
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1936, 'Acura', 'TSX', 2005);
1937
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1937, 'Aston Martin', 'DB9', 2005);
1938
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1938, 'Aston Martin', 'Vanquish S', 2005);
1939
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1939, 'Audi', 'A4', 2005);
1940
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1940, 'Audi', 'A4 (2005.5)', 2005);
1941
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1941, 'Audi', 'A6', 2005);
1942
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1942, 'Audi', 'A8', 2005);
1943
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1943, 'Audi', 'allroad', 2005);
1944
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1944, 'Audi', 'S4', 2005);
1945
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1945, 'Audi', 'S4 (2005.5)', 2005);
1946
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1946, 'Audi', 'TT', 2005);
1947
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1947, 'Bentley', 'Arnage', 2005);
1948
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1948, 'Bentley', 'Continental', 2005);
1949
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1949, 'BMW', '3 Series', 2005);
1950
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1950, 'BMW', '5 Series', 2005);
1951
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1951, 'BMW', '6 Series', 2005);
1952
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1952, 'BMW', '7 Series', 2005);
1953
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1953, 'BMW', 'M3', 2005);
1954
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1954, 'BMW', 'X3', 2005);
1955
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1955, 'BMW', 'X5', 2005);
1956
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1956, 'BMW', 'Z4', 2005);
1957
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1957, 'Buick', 'Century', 2005);
1958
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1958, 'Buick', 'LaCrosse', 2005);
1959
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1959, 'Buick', 'LeSabre', 2005);
1960
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1960, 'Buick', 'Park Avenue', 2005);
1961
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1961, 'Buick', 'Rainier', 2005);
1962
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1962, 'Buick', 'Rendezvous', 2005);
1963
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1963, 'Buick', 'Terraza', 2005);
1964
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1964, 'Cadillac', 'CTS', 2005);
1965
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1965, 'Cadillac', 'DeVille', 2005);
1966
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1966, 'Cadillac', 'Escalade', 2005);
1967
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1967, 'Cadillac', 'Escalade ESV', 2005);
1968
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1968, 'Cadillac', 'Escalade EXT', 2005);
1969
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1969, 'Cadillac', 'SRX', 2005);
1970
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1970, 'Cadillac', 'STS', 2005);
1971
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1971, 'Cadillac', 'XLR', 2005);
1972
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1972, 'Chevrolet', 'Astro Cargo', 2005);
1973
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1973, 'Chevrolet', 'Astro Passenger', 2005);
1974
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1974, 'Chevrolet', 'Avalanche 1500', 2005);
1975
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1975, 'Chevrolet', 'Avalanche 2500', 2005);
1976
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1976, 'Chevrolet', 'Aveo', 2005);
1977
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1977, 'Chevrolet', 'Blazer', 2005);
1978
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1978, 'Chevrolet', 'Cavalier', 2005);
1979
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1979, 'Chevrolet', 'Classic', 2005);
1980
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1980, 'Chevrolet', 'Cobalt', 2005);
1981
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1981, 'Chevrolet', 'Colorado Crew Cab', 2005);
1982
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1982, 'Chevrolet', 'Colorado Extended Cab', 2005);
1983
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1983, 'Chevrolet', 'Colorado Regular Cab', 2005);
1984
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1984, 'Chevrolet', 'Corvette', 2005);
1985
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1985, 'Chevrolet', 'Equinox', 2005);
1986
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1986, 'Chevrolet', 'Express 1500 Cargo', 2005);
1987
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1987, 'Chevrolet', 'Express 1500 Passenger', 2005);
1988
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1988, 'Chevrolet', 'Express 2500 Cargo', 2005);
1989
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1989, 'Chevrolet', 'Express 2500 Passenger', 2005);
1990
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1990, 'Chevrolet', 'Express 3500 Cargo', 2005);
1991
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1991, 'Chevrolet', 'Express 3500 Passenger', 2005);
1992
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1992, 'Chevrolet', 'Impala', 2005);
1993
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1993, 'Chevrolet', 'Malibu', 2005);
1994
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1994, 'Chevrolet', 'Monte Carlo', 2005);
1995
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1995, 'Chevrolet', 'Silverado 1500 Crew Cab', 2005);
1996
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1996, 'Chevrolet', 'Silverado 1500 Extended Cab', 2005);
1997
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1997, 'Chevrolet', 'Silverado 1500 HD Crew Cab', 2005);
1998
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1998, 'Chevrolet', 'Silverado 1500 Regular Cab', 2005);
1999
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1999, 'Chevrolet', 'Silverado 2500 HD Crew Cab', 2005);
2000
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2000, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2005);
2001
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2001, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2005);
2002
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2002, 'Chevrolet', 'Silverado 3500 Crew Cab', 2005);
2003
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2003, 'Chevrolet', 'Silverado 3500 Extended Cab', 2005);
2004
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2004, 'Chevrolet', 'Silverado 3500 Regular Cab', 2005);
2005
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2005, 'Chevrolet', 'SSR', 2005);
2006
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2006, 'Chevrolet', 'Suburban 1500', 2005);
2007
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2007, 'Chevrolet', 'Suburban 2500', 2005);
2008
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2008, 'Chevrolet', 'Tahoe', 2005);
2009
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2009, 'Chevrolet', 'TrailBlazer', 2005);
2010
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2010, 'Chevrolet', 'Uplander Cargo', 2005);
2011
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2011, 'Chevrolet', 'Uplander Passenger', 2005);
2012
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2012, 'Chevrolet', 'Venture Cargo', 2005);
2013
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2013, 'Chevrolet', 'Venture Passenger', 2005);
2014
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2014, 'Chrysler', '300', 2005);
2015
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2015, 'Chrysler', 'Crossfire', 2005);
2016
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2016, 'Chrysler', 'Pacifica', 2005);
2017
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2017, 'Chrysler', 'PT Cruiser', 2005);
2018
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2018, 'Chrysler', 'Sebring', 2005);
2019
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2019, 'Chrysler', 'Town & Country', 2005);
2020
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2020, 'Dodge', 'Caravan Cargo', 2005);
2021
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2021, 'Dodge', 'Caravan Passenger', 2005);
2022
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2022, 'Dodge', 'Dakota Club Cab', 2005);
2023
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2023, 'Dodge', 'Dakota Quad Cab', 2005);
2024
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2024, 'Dodge', 'Durango', 2005);
2025
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2025, 'Dodge', 'Grand Caravan Cargo', 2005);
2026
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2026, 'Dodge', 'Grand Caravan Passenger', 2005);
2027
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2027, 'Dodge', 'Magnum', 2005);
2028
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2028, 'Dodge', 'Neon', 2005);
2029
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2029, 'Dodge', 'Ram 1500 Quad Cab', 2005);
2030
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2030, 'Dodge', 'Ram 1500 Regular Cab', 2005);
2031
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2031, 'Dodge', 'Ram 2500 Quad Cab', 2005);
2032
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2032, 'Dodge', 'Ram 2500 Regular Cab', 2005);
2033
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2033, 'Dodge', 'Ram 3500 Quad Cab', 2005);
2034
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2034, 'Dodge', 'Ram 3500 Regular Cab', 2005);
2035
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2035, 'Dodge', 'Stratus', 2005);
2036
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2036, 'Dodge', 'Viper', 2005);
2037
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2037, 'Ford', 'Crown Victoria', 2005);
2038
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2038, 'Ford', 'E150 Super Duty Cargo', 2005);
2039
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2039, 'Ford', 'E150 Super Duty Passenger', 2005);
2040
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2040, 'Ford', 'E250 Super Duty Cargo', 2005);
2041
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2041, 'Ford', 'E350 Super Duty Cargo', 2005);
2042
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2042, 'Ford', 'E350 Super Duty Passenger', 2005);
2043
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2043, 'Ford', 'Escape', 2005);
2044
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2044, 'Ford', 'Excursion', 2005);
2045
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2045, 'Ford', 'Expedition', 2005);
2046
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2046, 'Ford', 'Explorer', 2005);
2047
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2047, 'Ford', 'Explorer Sport Trac', 2005);
2048
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2048, 'Ford', 'F150 Regular Cab', 2005);
2049
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2049, 'Ford', 'F150 Super Cab', 2005);
2050
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2050, 'Ford', 'F150 SuperCrew Cab', 2005);
2051
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2051, 'Ford', 'F250 Super Duty Crew Cab', 2005);
2052
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2052, 'Ford', 'F250 Super Duty Regular Cab', 2005);
2053
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2053, 'Ford', 'F250 Super Duty Super Cab', 2005);
2054
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2054, 'Ford', 'F350 Super Duty Crew Cab', 2005);
2055
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2055, 'Ford', 'F350 Super Duty Regular Cab', 2005);
2056
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2056, 'Ford', 'F350 Super Duty Super Cab', 2005);
2057
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2057, 'Ford', 'Five Hundred', 2005);
2058
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2058, 'Ford', 'Focus', 2005);
2059
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2059, 'Ford', 'Freestar Cargo', 2005);
2060
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2060, 'Ford', 'Freestar Passenger', 2005);
2061
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2061, 'Ford', 'Freestyle', 2005);
2062
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2062, 'Ford', 'GT', 2005);
2063
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2063, 'Ford', 'Mustang', 2005);
2064
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2064, 'Ford', 'Ranger Regular Cab', 2005);
2065
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2065, 'Ford', 'Ranger Super Cab', 2005);
2066
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2066, 'Ford', 'Taurus', 2005);
2067
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2067, 'Ford', 'Thunderbird', 2005);
2068
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2068, 'GMC', 'Canyon Crew Cab', 2005);
2069
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2069, 'GMC', 'Canyon Extended Cab', 2005);
2070
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2070, 'GMC', 'Canyon Regular Cab', 2005);
2071
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2071, 'GMC', 'Envoy', 2005);
2072
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2072, 'GMC', 'Envoy XL', 2005);
2073
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2073, 'GMC', 'Envoy XUV', 2005);
2074
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2074, 'GMC', 'Safari Cargo', 2005);
2075
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2075, 'GMC', 'Safari Passenger', 2005);
2076
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2076, 'GMC', 'Savana 1500 Cargo', 2005);
2077
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2077, 'GMC', 'Savana 1500 Passenger', 2005);
2078
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2078, 'GMC', 'Savana 2500 Cargo', 2005);
2079
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2079, 'GMC', 'Savana 2500 Passenger', 2005);
2080
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2080, 'GMC', 'Savana 3500 Cargo', 2005);
2081
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2081, 'GMC', 'Savana 3500 Passenger', 2005);
2082
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2082, 'GMC', 'Sierra 1500 Crew Cab', 2005);
2083
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2083, 'GMC', 'Sierra 1500 Extended Cab', 2005);
2084
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2084, 'GMC', 'Sierra 1500 HD Crew Cab', 2005);
2085
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2085, 'GMC', 'Sierra 1500 Regular Cab', 2005);
2086
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2086, 'GMC', 'Sierra 2500 HD Crew Cab', 2005);
2087
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2087, 'GMC', 'Sierra 2500 HD Extended Cab', 2005);
2088
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2088, 'GMC', 'Sierra 2500 HD Regular Cab', 2005);
2089
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2089, 'GMC', 'Sierra 3500 Crew Cab', 2005);
2090
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2090, 'GMC', 'Sierra 3500 Extended Cab', 2005);
2091
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2091, 'GMC', 'Sierra 3500 Regular Cab', 2005);
2092
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2092, 'GMC', 'Yukon', 2005);
2093
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2093, 'GMC', 'Yukon XL 1500', 2005);
2094
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2094, 'GMC', 'Yukon XL 2500', 2005);
2095
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2095, 'Honda', 'Accord', 2005);
2096
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2096, 'Honda', 'Civic', 2005);
2097
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2097, 'Honda', 'CR-V', 2005);
2098
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2098, 'Honda', 'Element', 2005);
2099
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2099, 'Honda', 'Insight', 2005);
2100
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2100, 'Honda', 'Odyssey', 2005);
2101
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2101, 'Honda', 'Pilot', 2005);
2102
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2102, 'Honda', 'S2000', 2005);
2103
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2103, 'HUMMER', 'H2', 2005);
2104
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2104, 'Hyundai', 'Accent', 2005);
2105
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2105, 'Hyundai', 'Elantra', 2005);
2106
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2106, 'Hyundai', 'Santa Fe', 2005);
2107
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2107, 'Hyundai', 'Sonata', 2005);
2108
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2108, 'Hyundai', 'Tiburon', 2005);
2109
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2109, 'Hyundai', 'Tucson', 2005);
2110
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2110, 'Hyundai', 'XG350', 2005);
2111
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2111, 'Infiniti', 'FX', 2005);
2112
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2112, 'Infiniti', 'G', 2005);
2113
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2113, 'Infiniti', 'Q', 2005);
2114
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2114, 'Infiniti', 'QX', 2005);
2115
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2115, 'Isuzu', 'Ascender', 2005);
2116
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2116, 'Jaguar', 'S-Type', 2005);
2117
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2117, 'Jaguar', 'XJ Series', 2005);
2118
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2118, 'Jaguar', 'XK Series', 2005);
2119
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2119, 'Jaguar', 'X-Type', 2005);
2120
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2120, 'Jeep', 'Grand Cherokee', 2005);
2121
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2121, 'Jeep', 'Liberty', 2005);
2122
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2122, 'Jeep', 'Wrangler', 2005);
2123
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2123, 'Kia', 'Amanti', 2005);
2124
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2124, 'Kia', 'Optima', 2005);
2125
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2125, 'Kia', 'Rio', 2005);
2126
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2126, 'Kia', 'Sedona', 2005);
2127
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2127, 'Kia', 'Sorento', 2005);
2128
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2128, 'Kia', 'Spectra', 2005);
2129
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2129, 'Kia', 'Sportage', 2005);
2130
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2130, 'Land Rover', 'Freelander', 2005);
2131
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2131, 'Land Rover', 'LR3', 2005);
2132
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2132, 'Land Rover', 'Range Rover', 2005);
2133
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2133, 'Lexus', 'ES', 2005);
2134
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2134, 'Lexus', 'GS', 2005);
2135
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2135, 'Lexus', 'GX', 2005);
2136
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2136, 'Lexus', 'IS', 2005);
2137
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2137, 'Lexus', 'LS', 2005);
2138
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2138, 'Lexus', 'LX', 2005);
2139
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2139, 'Lexus', 'RX', 2005);
2140
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2140, 'Lexus', 'SC', 2005);
2141
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2141, 'Lincoln', 'Aviator', 2005);
2142
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2142, 'Lincoln', 'LS', 2005);
2143
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2143, 'Lincoln', 'Navigator', 2005);
2144
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2144, 'Lincoln', 'Town Car', 2005);
2145
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2145, 'Lotus', 'Elise', 2005);
2146
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2146, 'Maybach', '57', 2005);
2147
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2147, 'Maybach', '62', 2005);
2148
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2148, 'Mazda', 'B-Series Extended Cab', 2005);
2149
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2149, 'Mazda', 'B-Series Regular Cab', 2005);
2150
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2150, 'Mazda', 'MAZDA3', 2005);
2151
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2151, 'Mazda', 'MAZDA6', 2005);
2152
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2152, 'Mazda', 'Miata MX-5', 2005);
2153
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2153, 'Mazda', 'MPV', 2005);
2154
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2154, 'Mazda', 'RX-8', 2005);
2155
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2155, 'Mazda', 'Tribute', 2005);
2156
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2156, 'Mercedes-Benz', 'C-Class', 2005);
2157
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2157, 'Mercedes-Benz', 'CL-Class', 2005);
2158
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2158, 'Mercedes-Benz', 'CLK-Class', 2005);
2159
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2159, 'Mercedes-Benz', 'E-Class', 2005);
2160
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2160, 'Mercedes-Benz', 'G-Class', 2005);
2161
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2161, 'Mercedes-Benz', 'M-Class', 2005);
2162
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2162, 'Mercedes-Benz', 'S-Class', 2005);
2163
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2163, 'Mercedes-Benz', 'SL-Class', 2005);
2164
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2164, 'Mercedes-Benz', 'SLK-Class', 2005);
2165
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2165, 'Mercedes-Benz', 'SLR McLaren', 2005);
2166
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2166, 'Mercury', 'Grand Marquis', 2005);
2167
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2167, 'Mercury', 'Mariner', 2005);
2168
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2168, 'Mercury', 'Montego', 2005);
2169
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2169, 'Mercury', 'Monterey', 2005);
2170
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2170, 'Mercury', 'Mountaineer', 2005);
2171
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2171, 'Mercury', 'Sable', 2005);
2172
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2172, 'MINI', 'Cooper', 2005);
2173
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2173, 'Mitsubishi', 'Eclipse', 2005);
2174
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2174, 'Mitsubishi', 'Endeavor', 2005);
2175
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2175, 'Mitsubishi', 'Galant', 2005);
2176
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2176, 'Mitsubishi', 'Lancer', 2005);
2177
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2177, 'Mitsubishi', 'Montero', 2005);
2178
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2178, 'Mitsubishi', 'Outlander', 2005);
2179
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2179, 'Nissan', '350Z', 2005);
2180
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2180, 'Nissan', 'Altima', 2005);
2181
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2181, 'Nissan', 'Armada', 2005);
2182
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2182, 'Nissan', 'Frontier Crew Cab', 2005);
2183
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2183, 'Nissan', 'Frontier King Cab', 2005);
2184
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2184, 'Nissan', 'Maxima', 2005);
2185
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2185, 'Nissan', 'Murano', 2005);
2186
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2186, 'Nissan', 'Pathfinder', 2005);
2187
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2187, 'Nissan', 'Quest', 2005);
2188
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2188, 'Nissan', 'Sentra', 2005);
2189
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2189, 'Nissan', 'Titan Crew Cab', 2005);
2190
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2190, 'Nissan', 'Titan King Cab', 2005);
2191
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2191, 'Nissan', 'Xterra', 2005);
2192
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2192, 'Panoz', 'Esperante', 2005);
2193
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2193, 'Pontiac', 'Aztek', 2005);
2194
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2194, 'Pontiac', 'Bonneville', 2005);
2195
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2195, 'Pontiac', 'G6', 2005);
2196
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2196, 'Pontiac', 'Grand Am', 2005);
2197
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2197, 'Pontiac', 'Grand Prix', 2005);
2198
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2198, 'Pontiac', 'GTO', 2005);
2199
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2199, 'Pontiac', 'Montana', 2005);
2200
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2200, 'Pontiac', 'Montana SV6', 2005);
2201
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2201, 'Pontiac', 'Sunfire', 2005);
2202
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2202, 'Pontiac', 'Vibe', 2005);
2203
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2203, 'Porsche', '911', 2005);
2204
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2204, 'Porsche', 'Boxster', 2005);
2205
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2205, 'Porsche', 'Carrera GT', 2005);
2206
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2206, 'Porsche', 'Cayenne', 2005);
2207
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2207, 'Rolls-Royce', 'Phantom', 2005);
2208
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2208, 'Saab', '9-2X', 2005);
2209
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2209, 'Saab', '9-3', 2005);
2210
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2210, 'Saab', '9-5', 2005);
2211
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2211, 'Saab', '9-7X', 2005);
2212
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2212, 'Saturn', 'Ion', 2005);
2213
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2213, 'Saturn', 'L-Series', 2005);
2214
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2214, 'Saturn', 'Relay', 2005);
2215
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2215, 'Saturn', 'VUE', 2005);
2216
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2216, 'Scion', 'tC', 2005);
2217
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2217, 'Scion', 'xA', 2005);
2218
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2218, 'Scion', 'xB', 2005);
2219
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2219, 'Subaru', 'Baja', 2005);
2220
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2220, 'Subaru', 'Forester', 2005);
2221
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2221, 'Subaru', 'Impreza', 2005);
2222
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2222, 'Subaru', 'Legacy', 2005);
2223
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2223, 'Subaru', 'Outback', 2005);
2224
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2224, 'Suzuki', 'Aerio', 2005);
2225
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2225, 'Suzuki', 'Forenza', 2005);
2226
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2226, 'Suzuki', 'Grand Vitara', 2005);
2227
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2227, 'Suzuki', 'Reno', 2005);
2228
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2228, 'Suzuki', 'Verona', 2005);
2229
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2229, 'Suzuki', 'XL-7', 2005);
2230
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2230, 'Toyota', '4Runner', 2005);
2231
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2231, 'Toyota', 'Avalon', 2005);
2232
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2232, 'Toyota', 'Camry', 2005);
2233
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2233, 'Toyota', 'Celica', 2005);
2234
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2234, 'Toyota', 'Corolla', 2005);
2235
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2235, 'Toyota', 'Echo', 2005);
2236
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2236, 'Toyota', 'Highlander', 2005);
2237
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2237, 'Toyota', 'Land Cruiser', 2005);
2238
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2238, 'Toyota', 'Matrix', 2005);
2239
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2239, 'Toyota', 'MR2', 2005);
2240
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2240, 'Toyota', 'Prius', 2005);
2241
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2241, 'Toyota', 'RAV4', 2005);
2242
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2242, 'Toyota', 'Sequoia', 2005);
2243
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2243, 'Toyota', 'Sienna', 2005);
2244
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2244, 'Toyota', 'Solara', 2005);
2245
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2245, 'Toyota', 'Tacoma Access Cab', 2005);
2246
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2246, 'Toyota', 'Tacoma Double Cab', 2005);
2247
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2247, 'Toyota', 'Tacoma Regular Cab', 2005);
2248
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2248, 'Toyota', 'Tundra Access Cab', 2005);
2249
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2249, 'Toyota', 'Tundra Double Cab', 2005);
2250
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2250, 'Toyota', 'Tundra Regular Cab', 2005);
2251
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2251, 'Volkswagen', 'Golf', 2005);
2252
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2252, 'Volkswagen', 'GTI', 2005);
2253
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2253, 'Volkswagen', 'Jetta', 2005);
2254
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2254, 'Volkswagen', 'Jetta (New)', 2005);
2255
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2255, 'Volkswagen', 'New Beetle', 2005);
2256
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2256, 'Volkswagen', 'Passat', 2005);
2257
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2257, 'Volkswagen', 'Phaeton', 2005);
2258
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2258, 'Volkswagen', 'Touareg', 2005);
2259
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2259, 'Volvo', 'S40', 2005);
2260
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2260, 'Volvo', 'S60', 2005);
2261
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2261, 'Volvo', 'S80', 2005);
2262
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2262, 'Volvo', 'V50', 2005);
2263
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2263, 'Volvo', 'V70', 2005);
2264
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2264, 'Volvo', 'XC70', 2005);
2265
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2265, 'Volvo', 'XC90', 2005);
2266
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2266, 'Acura', 'MDX', 2004);
2267
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2267, 'Acura', 'NSX', 2004);
2268
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2268, 'Acura', 'RL', 2004);
2269
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2269, 'Acura', 'RSX', 2004);
2270
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2270, 'Acura', 'TL', 2004);
2271
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2271, 'Acura', 'TSX', 2004);
2272
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2272, 'Audi', 'A4', 2004);
2273
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2273, 'Audi', 'A6', 2004);
2274
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2274, 'Audi', 'A8', 2004);
2275
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2275, 'Audi', 'allroad', 2004);
2276
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2276, 'Audi', 'S4', 2004);
2277
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2277, 'Audi', 'TT', 2004);
2278
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2278, 'BMW', '3 Series', 2004);
2279
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2279, 'BMW', '5 Series', 2004);
2280
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2280, 'BMW', '6 Series', 2004);
2281
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2281, 'BMW', '7 Series', 2004);
2282
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2282, 'BMW', 'M3', 2004);
2283
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2283, 'BMW', 'X3', 2004);
2284
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2284, 'BMW', 'X5', 2004);
2285
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2285, 'BMW', 'Z4', 2004);
2286
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2286, 'Buick', 'Century', 2004);
2287
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2287, 'Buick', 'LeSabre', 2004);
2288
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2288, 'Buick', 'Park Avenue', 2004);
2289
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2289, 'Buick', 'Rainier', 2004);
2290
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2290, 'Buick', 'Regal', 2004);
2291
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2291, 'Buick', 'Rendezvous', 2004);
2292
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2292, 'Cadillac', 'CTS', 2004);
2293
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2293, 'Cadillac', 'DeVille', 2004);
2294
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2294, 'Cadillac', 'Escalade', 2004);
2295
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2295, 'Cadillac', 'Escalade ESV', 2004);
2296
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2296, 'Cadillac', 'Escalade EXT', 2004);
2297
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2297, 'Cadillac', 'Seville', 2004);
2298
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2298, 'Cadillac', 'SRX', 2004);
2299
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2299, 'Cadillac', 'XLR', 2004);
2300
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2300, 'Chevrolet', 'Astro Cargo', 2004);
2301
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2301, 'Chevrolet', 'Astro Passenger', 2004);
2302
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2302, 'Chevrolet', 'Avalanche 1500', 2004);
2303
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2303, 'Chevrolet', 'Avalanche 2500', 2004);
2304
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2304, 'Chevrolet', 'Aveo', 2004);
2305
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2305, 'Chevrolet', 'Blazer', 2004);
2306
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2306, 'Chevrolet', 'Cavalier', 2004);
2307
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2307, 'Chevrolet', 'Classic', 2004);
2308
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2308, 'Chevrolet', 'Colorado Crew Cab', 2004);
2309
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2309, 'Chevrolet', 'Colorado Extended Cab', 2004);
2310
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2310, 'Chevrolet', 'Colorado Regular Cab', 2004);
2311
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2311, 'Chevrolet', 'Corvette', 2004);
2312
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2312, 'Chevrolet', 'Express 1500 Cargo', 2004);
2313
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2313, 'Chevrolet', 'Express 1500 Passenger', 2004);
2314
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2314, 'Chevrolet', 'Express 2500 Cargo', 2004);
2315
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2315, 'Chevrolet', 'Express 2500 Passenger', 2004);
2316
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2316, 'Chevrolet', 'Express 3500 Cargo', 2004);
2317
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2317, 'Chevrolet', 'Express 3500 Passenger', 2004);
2318
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2318, 'Chevrolet', 'Impala', 2004);
2319
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2319, 'Chevrolet', 'Malibu', 2004);
2320
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2320, 'Chevrolet', 'Monte Carlo', 2004);
2321
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2321, 'Chevrolet', 'S10 Crew Cab', 2004);
2322
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2322, 'Chevrolet', 'Silverado 1500 Crew Cab', 2004);
2323
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2323, 'Chevrolet', 'Silverado 1500 Extended Cab', 2004);
2324
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2324, 'Chevrolet', 'Silverado 1500 Regular Cab', 2004);
2325
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2325, 'Chevrolet', 'Silverado 2500 Crew Cab', 2004);
2326
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2326, 'Chevrolet', 'Silverado 2500 Extended Cab', 2004);
2327
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2327, 'Chevrolet', 'Silverado 2500 HD Crew Cab', 2004);
2328
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2328, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2004);
2329
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2329, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2004);
2330
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2330, 'Chevrolet', 'Silverado 2500 Regular Cab', 2004);
2331
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2331, 'Chevrolet', 'Silverado 3500 Crew Cab', 2004);
2332
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2332, 'Chevrolet', 'Silverado 3500 Extended Cab', 2004);
2333
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2333, 'Chevrolet', 'Silverado 3500 Regular Cab', 2004);
2334
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2334, 'Chevrolet', 'SSR', 2004);
2335
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2335, 'Chevrolet', 'Suburban 1500', 2004);
2336
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2336, 'Chevrolet', 'Suburban 2500', 2004);
2337
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2337, 'Chevrolet', 'Tahoe', 2004);
2338
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2338, 'Chevrolet', 'Tracker', 2004);
2339
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2339, 'Chevrolet', 'TrailBlazer', 2004);
2340
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2340, 'Chevrolet', 'Venture Cargo', 2004);
2341
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2341, 'Chevrolet', 'Venture Passenger', 2004);
2342
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2342, 'Chrysler', '300M', 2004);
2343
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2343, 'Chrysler', 'Concorde', 2004);
2344
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2344, 'Chrysler', 'Crossfire', 2004);
2345
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2345, 'Chrysler', 'Pacifica', 2004);
2346
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2346, 'Chrysler', 'PT Cruiser', 2004);
2347
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2347, 'Chrysler', 'Sebring', 2004);
2348
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2348, 'Chrysler', 'Town & Country', 2004);
2349
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2349, 'Dodge', 'Caravan Cargo', 2004);
2350
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2350, 'Dodge', 'Caravan Passenger', 2004);
2351
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2351, 'Dodge', 'Dakota Club Cab', 2004);
2352
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2352, 'Dodge', 'Dakota Quad Cab', 2004);
2353
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2353, 'Dodge', 'Dakota Regular Cab', 2004);
2354
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2354, 'Dodge', 'Durango', 2004);
2355
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2355, 'Dodge', 'Grand Caravan Cargo', 2004);
2356
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2356, 'Dodge', 'Grand Caravan Passenger', 2004);
2357
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2357, 'Dodge', 'Intrepid', 2004);
2358
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2358, 'Dodge', 'Neon', 2004);
2359
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2359, 'Dodge', 'Ram 1500 Quad Cab', 2004);
2360
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2360, 'Dodge', 'Ram 1500 Regular Cab', 2004);
2361
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2361, 'Dodge', 'Ram 2500 Quad Cab', 2004);
2362
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2362, 'Dodge', 'Ram 2500 Regular Cab', 2004);
2363
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2363, 'Dodge', 'Ram 3500 Quad Cab', 2004);
2364
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2364, 'Dodge', 'Ram 3500 Regular Cab', 2004);
2365
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2365, 'Dodge', 'Stratus', 2004);
2366
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2366, 'Dodge', 'Viper', 2004);
2367
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2367, 'Ford', 'Crown Victoria', 2004);
2368
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2368, 'Ford', 'E150 Passenger', 2004);
2369
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2369, 'Ford', 'E150 Super Duty Cargo', 2004);
2370
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2370, 'Ford', 'E250 Super Duty Cargo', 2004);
2371
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2371, 'Ford', 'E350 Super Duty Cargo', 2004);
2372
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2372, 'Ford', 'E350 Super Duty Passenger', 2004);
2373
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2373, 'Ford', 'Escape', 2004);
2374
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2374, 'Ford', 'Excursion', 2004);
2375
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2375, 'Ford', 'Expedition', 2004);
2376
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2376, 'Ford', 'Explorer', 2004);
2377
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2377, 'Ford', 'Explorer Sport Trac', 2004);
2378
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2378, 'Ford', 'F150 (Heritage) Regular Cab', 2004);
2379
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2379, 'Ford', 'F150 (Heritage) Super Cab', 2004);
2380
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2380, 'Ford', 'F150 Regular Cab', 2004);
2381
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2381, 'Ford', 'F150 Super Cab', 2004);
2382
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2382, 'Ford', 'F150 SuperCrew Cab', 2004);
2383
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2383, 'Ford', 'F250 Super Duty Crew Cab', 2004);
2384
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2384, 'Ford', 'F250 Super Duty Regular Cab', 2004);
2385
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2385, 'Ford', 'F250 Super Duty Super Cab', 2004);
2386
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2386, 'Ford', 'F350 Super Duty Crew Cab', 2004);
2387
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2387, 'Ford', 'F350 Super Duty Regular Cab', 2004);
2388
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2388, 'Ford', 'F350 Super Duty Super Cab', 2004);
2389
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2389, 'Ford', 'Focus', 2004);
2390
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2390, 'Ford', 'Freestar Cargo', 2004);
2391
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2391, 'Ford', 'Freestar Passenger', 2004);
2392
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2392, 'Ford', 'Mustang', 2004);
2393
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2393, 'Ford', 'Ranger Regular Cab', 2004);
2394
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2394, 'Ford', 'Ranger Super Cab', 2004);
2395
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2395, 'Ford', 'Taurus', 2004);
2396
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2396, 'Ford', 'Thunderbird', 2004);
2397
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2397, 'GMC', 'Canyon Crew Cab', 2004);
2398
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2398, 'GMC', 'Canyon Extended Cab', 2004);
2399
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2399, 'GMC', 'Canyon Regular Cab', 2004);
2400
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2400, 'GMC', 'Envoy', 2004);
2401
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2401, 'GMC', 'Envoy XL', 2004);
2402
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2402, 'GMC', 'Envoy XUV', 2004);
2403
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2403, 'GMC', 'Safari Cargo', 2004);
2404
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2404, 'GMC', 'Safari Passenger', 2004);
2405
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2405, 'GMC', 'Savana 1500 Cargo', 2004);
2406
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2406, 'GMC', 'Savana 1500 Passenger', 2004);
2407
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2407, 'GMC', 'Savana 2500 Cargo', 2004);
2408
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2408, 'GMC', 'Savana 2500 Passenger', 2004);
2409
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2409, 'GMC', 'Savana 3500 Cargo', 2004);
2410
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2410, 'GMC', 'Savana 3500 Passenger', 2004);
2411
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2411, 'GMC', 'Sierra 1500 Crew Cab', 2004);
2412
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2412, 'GMC', 'Sierra 1500 Extended Cab', 2004);
2413
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2413, 'GMC', 'Sierra 1500 Regular Cab', 2004);
2414
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2414, 'GMC', 'Sierra 2500 Crew Cab', 2004);
2415
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2415, 'GMC', 'Sierra 2500 Extended Cab', 2004);
2416
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2416, 'GMC', 'Sierra 2500 HD Crew Cab', 2004);
2417
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2417, 'GMC', 'Sierra 2500 HD Extended Cab', 2004);
2418
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2418, 'GMC', 'Sierra 2500 HD Regular Cab', 2004);
2419
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2419, 'GMC', 'Sierra 2500 Regular Cab', 2004);
2420
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2420, 'GMC', 'Sierra 3500 Crew Cab', 2004);
2421
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2421, 'GMC', 'Sierra 3500 Extended Cab', 2004);
2422
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2422, 'GMC', 'Sierra 3500 Regular Cab', 2004);
2423
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2423, 'GMC', 'Sonoma Crew Cab', 2004);
2424
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2424, 'GMC', 'Yukon', 2004);
2425
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2425, 'GMC', 'Yukon XL 1500', 2004);
2426
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2426, 'GMC', 'Yukon XL 2500', 2004);
2427
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2427, 'Honda', 'Accord', 2004);
2428
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2428, 'Honda', 'Civic', 2004);
2429
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2429, 'Honda', 'CR-V', 2004);
2430
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2430, 'Honda', 'Element', 2004);
2431
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2431, 'Honda', 'Insight', 2004);
2432
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2432, 'Honda', 'Odyssey', 2004);
2433
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2433, 'Honda', 'Pilot', 2004);
2434
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2434, 'Honda', 'S2000', 2004);
2435
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2435, 'HUMMER', 'H1', 2004);
2436
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2436, 'HUMMER', 'H2', 2004);
2437
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2437, 'Hyundai', 'Accent', 2004);
2438
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2438, 'Hyundai', 'Elantra', 2004);
2439
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2439, 'Hyundai', 'Santa Fe', 2004);
2440
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2440, 'Hyundai', 'Sonata', 2004);
2441
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2441, 'Hyundai', 'Tiburon', 2004);
2442
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2442, 'Hyundai', 'XG350', 2004);
2443
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2443, 'Infiniti', 'FX', 2004);
2444
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2444, 'Infiniti', 'G', 2004);
2445
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2445, 'Infiniti', 'I', 2004);
2446
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2446, 'Infiniti', 'M', 2004);
2447
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2447, 'Infiniti', 'Q', 2004);
2448
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2448, 'Infiniti', 'QX', 2004);
2449
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2449, 'Isuzu', 'Ascender', 2004);
2450
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2450, 'Isuzu', 'Axiom', 2004);
2451
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2451, 'Isuzu', 'Rodeo', 2004);
2452
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2452, 'Jaguar', 'S-Type', 2004);
2453
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2453, 'Jaguar', 'XJ Series', 2004);
2454
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2454, 'Jaguar', 'XK Series', 2004);
2455
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2455, 'Jaguar', 'X-Type', 2004);
2456
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2456, 'Jeep', 'Grand Cherokee', 2004);
2457
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2457, 'Jeep', 'Liberty', 2004);
2458
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2458, 'Jeep', 'Wrangler', 2004);
2459
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2459, 'Kia', 'Amanti', 2004);
2460
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2460, 'Kia', 'Optima', 2004);
2461
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2461, 'Kia', 'Rio', 2004);
2462
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2462, 'Kia', 'Sedona', 2004);
2463
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2463, 'Kia', 'Sorento', 2004);
2464
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2464, 'Kia', 'Spectra', 2004);
2465
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2465, 'Land Rover', 'Discovery', 2004);
2466
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2466, 'Land Rover', 'Freelander', 2004);
2467
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2467, 'Land Rover', 'Range Rover', 2004);
2468
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2468, 'Lexus', 'ES', 2004);
2469
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2469, 'Lexus', 'GS', 2004);
2470
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2470, 'Lexus', 'GX', 2004);
2471
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2471, 'Lexus', 'IS', 2004);
2472
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2472, 'Lexus', 'LS', 2004);
2473
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2473, 'Lexus', 'LX', 2004);
2474
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2474, 'Lexus', 'RX', 2004);
2475
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2475, 'Lexus', 'SC', 2004);
2476
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2476, 'Lincoln', 'Aviator', 2004);
2477
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2477, 'Lincoln', 'LS', 2004);
2478
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2478, 'Lincoln', 'Navigator', 2004);
2479
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2479, 'Lincoln', 'Town Car', 2004);
2480
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2480, 'Mazda', 'B-Series Cab Plus', 2004);
2481
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2481, 'Mazda', 'B-Series Regular Cab', 2004);
2482
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2482, 'Mazda', 'MAZDA3', 2004);
2483
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2483, 'Mazda', 'MAZDA6', 2004);
2484
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2484, 'Mazda', 'Miata MX-5', 2004);
2485
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2485, 'Mazda', 'MPV', 2004);
2486
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2486, 'Mazda', 'RX-8', 2004);
2487
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2487, 'Mazda', 'Tribute', 2004);
2488
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2488, 'Mercedes-Benz', 'C-Class', 2004);
2489
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2489, 'Mercedes-Benz', 'CL-Class', 2004);
2490
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2490, 'Mercedes-Benz', 'CLK-Class', 2004);
2491
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2491, 'Mercedes-Benz', 'E-Class', 2004);
2492
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2492, 'Mercedes-Benz', 'G-Class', 2004);
2493
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2493, 'Mercedes-Benz', 'M-Class', 2004);
2494
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2494, 'Mercedes-Benz', 'S-Class', 2004);
2495
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2495, 'Mercedes-Benz', 'SL-Class', 2004);
2496
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2496, 'Mercedes-Benz', 'SLK-Class', 2004);
2497
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2497, 'Mercury', 'Grand Marquis', 2004);
2498
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2498, 'Mercury', 'Marauder', 2004);
2499
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2499, 'Mercury', 'Monterey', 2004);
2500
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2500, 'Mercury', 'Mountaineer', 2004);
2501
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2501, 'Mercury', 'Sable', 2004);
2502
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2502, 'MINI', 'Cooper', 2004);
2503
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2503, 'Mitsubishi', 'Diamante', 2004);
2504
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2504, 'Mitsubishi', 'Eclipse', 2004);
2505
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2505, 'Mitsubishi', 'Endeavor', 2004);
2506
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2506, 'Mitsubishi', 'Galant', 2004);
2507
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2507, 'Mitsubishi', 'Lancer', 2004);
2508
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2508, 'Mitsubishi', 'Montero', 2004);
2509
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2509, 'Mitsubishi', 'Montero Sport', 2004);
2510
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2510, 'Mitsubishi', 'Outlander', 2004);
2511
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2511, 'Nissan', '350Z', 2004);
2512
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2512, 'Nissan', 'Altima', 2004);
2513
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2513, 'Nissan', 'Frontier Crew Cab', 2004);
2514
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2514, 'Nissan', 'Frontier King Cab', 2004);
2515
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2515, 'Nissan', 'Maxima', 2004);
2516
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2516, 'Nissan', 'Murano', 2004);
2517
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2517, 'Nissan', 'Pathfinder', 2004);
2518
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2518, 'Nissan', 'Pathfinder Armada', 2004);
2519
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2519, 'Nissan', 'Quest', 2004);
2520
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2520, 'Nissan', 'Sentra', 2004);
2521
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2521, 'Nissan', 'Titan Crew Cab', 2004);
2522
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2522, 'Nissan', 'Titan King Cab', 2004);
2523
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2523, 'Nissan', 'Xterra', 2004);
2524
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2524, 'Oldsmobile', 'Alero', 2004);
2525
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2525, 'Oldsmobile', 'Bravada', 2004);
2526
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2526, 'Oldsmobile', 'Silhouette', 2004);
2527
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2527, 'Pontiac', 'Aztek', 2004);
2528
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2528, 'Pontiac', 'Bonneville', 2004);
2529
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2529, 'Pontiac', 'Grand Am', 2004);
2530
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2530, 'Pontiac', 'Grand Prix', 2004);
2531
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2531, 'Pontiac', 'GTO', 2004);
2532
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2532, 'Pontiac', 'Montana', 2004);
2533
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2533, 'Pontiac', 'Sunfire', 2004);
2534
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2534, 'Pontiac', 'Vibe', 2004);
2535
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2535, 'Porsche', '911', 2004);
2536
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2536, 'Porsche', 'Boxster', 2004);
2537
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2537, 'Porsche', 'Carrera GT', 2004);
2538
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2538, 'Porsche', 'Cayenne', 2004);
2539
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2539, 'Saab', '9-3', 2004);
2540
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2540, 'Saab', '9-5', 2004);
2541
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2541, 'Saturn', 'Ion', 2004);
2542
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2542, 'Saturn', 'L-Series', 2004);
2543
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2543, 'Saturn', 'VUE', 2004);
2544
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2544, 'Scion', 'xA', 2004);
2545
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2545, 'Scion', 'xB', 2004);
2546
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2546, 'Subaru', 'Baja', 2004);
2547
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2547, 'Subaru', 'Forester', 2004);
2548
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2548, 'Subaru', 'Impreza', 2004);
2549
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2549, 'Subaru', 'Legacy', 2004);
2550
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2550, 'Subaru', 'Outback', 2004);
2551
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2551, 'Suzuki', 'Aerio', 2004);
2552
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2552, 'Suzuki', 'Forenza', 2004);
2553
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2553, 'Suzuki', 'Grand Vitara', 2004);
2554
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2554, 'Suzuki', 'Verona', 2004);
2555
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2555, 'Suzuki', 'Vitara', 2004);
2556
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2556, 'Suzuki', 'XL-7', 2004);
2557
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2557, 'Toyota', '4Runner', 2004);
2558
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2558, 'Toyota', 'Avalon', 2004);
2559
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2559, 'Toyota', 'Camry', 2004);
2560
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2560, 'Toyota', 'Celica', 2004);
2561
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2561, 'Toyota', 'Corolla', 2004);
2562
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2562, 'Toyota', 'Echo', 2004);
2563
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2563, 'Toyota', 'Highlander', 2004);
2564
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2564, 'Toyota', 'Land Cruiser', 2004);
2565
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2565, 'Toyota', 'Matrix', 2004);
2566
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2566, 'Toyota', 'MR2', 2004);
2567
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2567, 'Toyota', 'Prius', 2004);
2568
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2568, 'Toyota', 'RAV4', 2004);
2569
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2569, 'Toyota', 'Sequoia', 2004);
2570
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2570, 'Toyota', 'Sienna', 2004);
2571
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2571, 'Toyota', 'Solara', 2004);
2572
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2572, 'Toyota', 'Tacoma Double Cab', 2004);
2573
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2573, 'Toyota', 'Tacoma Regular Cab', 2004);
2574
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2574, 'Toyota', 'Tacoma Xtracab', 2004);
2575
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2575, 'Toyota', 'Tundra Access Cab', 2004);
2576
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2576, 'Toyota', 'Tundra Double Cab', 2004);
2577
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2577, 'Toyota', 'Tundra Regular Cab', 2004);
2578
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2578, 'Volkswagen', 'Golf', 2004);
2579
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2579, 'Volkswagen', 'GTI', 2004);
2580
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2580, 'Volkswagen', 'Jetta', 2004);
2581
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2581, 'Volkswagen', 'New Beetle', 2004);
2582
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2582, 'Volkswagen', 'Passat', 2004);
2583
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2583, 'Volkswagen', 'Phaeton', 2004);
2584
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2584, 'Volkswagen', 'R32', 2004);
2585
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2585, 'Volkswagen', 'Touareg', 2004);
2586
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2586, 'Volvo', 'C70', 2004);
2587
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2587, 'Volvo', 'S40', 2004);
2588
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2588, 'Volvo', 'S40 (New)', 2004);
2589
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2589, 'Volvo', 'S60', 2004);
2590
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2590, 'Volvo', 'S80', 2004);
2591
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2591, 'Volvo', 'V40', 2004);
2592
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2592, 'Volvo', 'V70', 2004);
2593
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2593, 'Volvo', 'XC70', 2004);
2594
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2594, 'Volvo', 'XC90', 2004);
2595
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2595, 'Acura', 'CL', 2003);
2596
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2596, 'Acura', 'MDX', 2003);
2597
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2597, 'Acura', 'NSX', 2003);
2598
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2598, 'Acura', 'RL', 2003);
2599
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2599, 'Acura', 'RSX', 2003);
2600
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2600, 'Acura', 'TL', 2003);
2601
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2601, 'Audi', 'A4', 2003);
2602
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2602, 'Audi', 'A6', 2003);
2603
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2603, 'Audi', 'A8', 2003);
2604
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2604, 'Audi', 'allroad', 2003);
2605
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2605, 'Audi', 'RS 6', 2003);
2606
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2606, 'Audi', 'S6', 2003);
2607
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2607, 'Audi', 'S8', 2003);
2608
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2608, 'Audi', 'TT', 2003);
2609
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2609, 'BMW', '3 Series', 2003);
2610
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2610, 'BMW', '5 Series', 2003);
2611
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2611, 'BMW', '7 Series', 2003);
2612
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2612, 'BMW', 'M3', 2003);
2613
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2613, 'BMW', 'M5', 2003);
2614
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2614, 'BMW', 'X5', 2003);
2615
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2615, 'BMW', 'Z4', 2003);
2616
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2616, 'BMW', 'Z8', 2003);
2617
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2617, 'Buick', 'Century', 2003);
2618
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2618, 'Buick', 'LeSabre', 2003);
2619
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2619, 'Buick', 'Park Avenue', 2003);
2620
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2620, 'Buick', 'Regal', 2003);
2621
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2621, 'Buick', 'Rendezvous', 2003);
2622
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2622, 'Cadillac', 'CTS', 2003);
2623
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2623, 'Cadillac', 'DeVille', 2003);
2624
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2624, 'Cadillac', 'Escalade', 2003);
2625
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2625, 'Cadillac', 'Escalade ESV', 2003);
2626
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2626, 'Cadillac', 'Escalade EXT', 2003);
2627
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2627, 'Cadillac', 'Seville', 2003);
2628
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2628, 'Chevrolet', 'Astro Cargo', 2003);
2629
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2629, 'Chevrolet', 'Astro Passenger', 2003);
2630
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2630, 'Chevrolet', 'Avalanche 1500', 2003);
2631
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2631, 'Chevrolet', 'Avalanche 2500', 2003);
2632
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2632, 'Chevrolet', 'Blazer', 2003);
2633
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2633, 'Chevrolet', 'Cavalier', 2003);
2634
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2634, 'Chevrolet', 'Corvette', 2003);
2635
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2635, 'Chevrolet', 'Express 1500 Cargo', 2003);
2636
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2636, 'Chevrolet', 'Express 1500 Passenger', 2003);
2637
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2637, 'Chevrolet', 'Express 2500 Cargo', 2003);
2638
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2638, 'Chevrolet', 'Express 2500 Passenger', 2003);
2639
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2639, 'Chevrolet', 'Express 3500 Cargo', 2003);
2640
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2640, 'Chevrolet', 'Express 3500 Passenger', 2003);
2641
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2641, 'Chevrolet', 'Impala', 2003);
2642
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2642, 'Chevrolet', 'Malibu', 2003);
2643
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2643, 'Chevrolet', 'Monte Carlo', 2003);
2644
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2644, 'Chevrolet', 'S10 Crew Cab', 2003);
2645
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2645, 'Chevrolet', 'S10 Extended Cab', 2003);
2646
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2646, 'Chevrolet', 'S10 Regular Cab', 2003);
2647
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2647, 'Chevrolet', 'Silverado 1500 Extended Cab', 2003);
2648
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2648, 'Chevrolet', 'Silverado 1500 HD Crew Cab', 2003);
2649
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2649, 'Chevrolet', 'Silverado 1500 Regular Cab', 2003);
2650
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2650, 'Chevrolet', 'Silverado 2500 Extended Cab', 2003);
2651
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2651, 'Chevrolet', 'Silverado 2500 HD Crew Cab', 2003);
2652
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2652, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2003);
2653
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2653, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2003);
2654
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2654, 'Chevrolet', 'Silverado 2500 Regular Cab', 2003);
2655
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2655, 'Chevrolet', 'Silverado 3500 Crew Cab', 2003);
2656
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2656, 'Chevrolet', 'Silverado 3500 Extended Cab', 2003);
2657
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2657, 'Chevrolet', 'Silverado 3500 Regular Cab', 2003);
2658
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2658, 'Chevrolet', 'SSR', 2003);
2659
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2659, 'Chevrolet', 'Suburban 1500', 2003);
2660
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2660, 'Chevrolet', 'Suburban 2500', 2003);
2661
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2661, 'Chevrolet', 'Tahoe', 2003);
2662
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2662, 'Chevrolet', 'Tracker', 2003);
2663
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2663, 'Chevrolet', 'TrailBlazer', 2003);
2664
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2664, 'Chevrolet', 'Venture Cargo', 2003);
2665
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2665, 'Chevrolet', 'Venture Passenger', 2003);
2666
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2666, 'Chrysler', '300M', 2003);
2667
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2667, 'Chrysler', 'Concorde', 2003);
2668
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2668, 'Chrysler', 'PT Cruiser', 2003);
2669
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2669, 'Chrysler', 'Sebring', 2003);
2670
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2670, 'Chrysler', 'Town & Country', 2003);
2671
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2671, 'Chrysler', 'Voyager', 2003);
2672
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2672, 'Dodge', 'Caravan Cargo', 2003);
2673
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2673, 'Dodge', 'Caravan Passenger', 2003);
2674
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2674, 'Dodge', 'Dakota Club Cab', 2003);
2675
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2675, 'Dodge', 'Dakota Quad Cab', 2003);
2676
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2676, 'Dodge', 'Dakota Regular Cab', 2003);
2677
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2677, 'Dodge', 'Durango', 2003);
2678
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2678, 'Dodge', 'Grand Caravan Cargo', 2003);
2679
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2679, 'Dodge', 'Grand Caravan Passenger', 2003);
2680
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2680, 'Dodge', 'Intrepid', 2003);
2681
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2681, 'Dodge', 'Neon', 2003);
2682
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2682, 'Dodge', 'Ram 1500 Quad Cab', 2003);
2683
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2683, 'Dodge', 'Ram 1500 Regular Cab', 2003);
2684
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2684, 'Dodge', 'Ram 2500 Quad Cab', 2003);
2685
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2685, 'Dodge', 'Ram 2500 Regular Cab', 2003);
2686
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2686, 'Dodge', 'Ram 3500 Quad Cab', 2003);
2687
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2687, 'Dodge', 'Ram 3500 Regular Cab', 2003);
2688
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2688, 'Dodge', 'Ram Van 1500', 2003);
2689
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2689, 'Dodge', 'Ram Van 2500', 2003);
2690
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2690, 'Dodge', 'Ram Van 3500', 2003);
2691
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2691, 'Dodge', 'Stratus', 2003);
2692
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2692, 'Dodge', 'Viper', 2003);
2693
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2693, 'Ford', 'Crown Victoria', 2003);
2694
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2694, 'Ford', 'E150 Passenger', 2003);
2695
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2695, 'Ford', 'E150 Super Duty Cargo', 2003);
2696
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2696, 'Ford', 'E250 Super Duty Cargo', 2003);
2697
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2697, 'Ford', 'E350 Super Duty Cargo', 2003);
2698
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2698, 'Ford', 'E350 Super Duty Passenger', 2003);
2699
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2699, 'Ford', 'Escape', 2003);
2700
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2700, 'Ford', 'Excursion', 2003);
2701
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2701, 'Ford', 'Expedition', 2003);
2702
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2702, 'Ford', 'Explorer', 2003);
2703
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2703, 'Ford', 'Explorer Sport', 2003);
2704
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2704, 'Ford', 'Explorer Sport Trac', 2003);
2705
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2705, 'Ford', 'F150 Regular Cab', 2003);
2706
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2706, 'Ford', 'F150 Super Cab', 2003);
2707
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2707, 'Ford', 'F150 SuperCrew Cab', 2003);
2708
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2708, 'Ford', 'F250 Super Duty Crew Cab', 2003);
2709
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2709, 'Ford', 'F250 Super Duty Regular Cab', 2003);
2710
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2710, 'Ford', 'F250 Super Duty Super Cab', 2003);
2711
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2711, 'Ford', 'F350 Super Duty Crew Cab', 2003);
2712
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2712, 'Ford', 'F350 Super Duty Regular Cab', 2003);
2713
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2713, 'Ford', 'F350 Super Duty Super Cab', 2003);
2714
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2714, 'Ford', 'Focus', 2003);
2715
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2715, 'Ford', 'Mustang', 2003);
2716
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2716, 'Ford', 'Ranger Regular Cab', 2003);
2717
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2717, 'Ford', 'Ranger Super Cab', 2003);
2718
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2718, 'Ford', 'Taurus', 2003);
2719
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2719, 'Ford', 'Thunderbird', 2003);
2720
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2720, 'Ford', 'Windstar Cargo', 2003);
2721
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2721, 'Ford', 'Windstar Passenger', 2003);
2722
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2722, 'Ford', 'ZX2', 2003);
2723
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2723, 'GMC', 'Envoy', 2003);
2724
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2724, 'GMC', 'Envoy XL', 2003);
2725
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2725, 'GMC', 'Safari Cargo', 2003);
2726
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2726, 'GMC', 'Safari Passenger', 2003);
2727
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2727, 'GMC', 'Savana 1500 Cargo', 2003);
2728
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2728, 'GMC', 'Savana 1500 Passenger', 2003);
2729
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2729, 'GMC', 'Savana 2500 Cargo', 2003);
2730
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2730, 'GMC', 'Savana 2500 Passenger', 2003);
2731
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2731, 'GMC', 'Savana 3500 Cargo', 2003);
2732
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2732, 'GMC', 'Savana 3500 Passenger', 2003);
2733
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2733, 'GMC', 'Sierra 1500 Extended Cab', 2003);
2734
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2734, 'GMC', 'Sierra 1500 HD Crew Cab', 2003);
2735
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2735, 'GMC', 'Sierra 1500 Regular Cab', 2003);
2736
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2736, 'GMC', 'Sierra 2500 Extended Cab', 2003);
2737
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2737, 'GMC', 'Sierra 2500 HD Crew Cab', 2003);
2738
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2738, 'GMC', 'Sierra 2500 HD Extended Cab', 2003);
2739
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2739, 'GMC', 'Sierra 2500 HD Regular Cab', 2003);
2740
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2740, 'GMC', 'Sierra 2500 Regular Cab', 2003);
2741
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2741, 'GMC', 'Sierra 3500 Crew Cab', 2003);
2742
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2742, 'GMC', 'Sierra 3500 Extended Cab', 2003);
2743
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2743, 'GMC', 'Sierra 3500 Regular Cab', 2003);
2744
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2744, 'GMC', 'Sonoma Crew Cab', 2003);
2745
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2745, 'GMC', 'Sonoma Extended Cab', 2003);
2746
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2746, 'GMC', 'Sonoma Regular Cab', 2003);
2747
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2747, 'GMC', 'Yukon', 2003);
2748
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2748, 'GMC', 'Yukon XL 1500', 2003);
2749
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2749, 'GMC', 'Yukon XL 2500', 2003);
2750
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2750, 'Honda', 'Accord', 2003);
2751
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2751, 'Honda', 'Civic', 2003);
2752
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2752, 'Honda', 'CR-V', 2003);
2753
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2753, 'Honda', 'Element', 2003);
2754
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2754, 'Honda', 'Insight', 2003);
2755
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2755, 'Honda', 'Odyssey', 2003);
2756
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2756, 'Honda', 'Pilot', 2003);
2757
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2757, 'Honda', 'S2000', 2003);
2758
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2758, 'HUMMER', 'H1', 2003);
2759
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2759, 'HUMMER', 'H2', 2003);
2760
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2760, 'Hyundai', 'Accent', 2003);
2761
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2761, 'Hyundai', 'Elantra', 2003);
2762
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2762, 'Hyundai', 'Santa Fe', 2003);
2763
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2763, 'Hyundai', 'Sonata', 2003);
2764
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2764, 'Hyundai', 'Tiburon', 2003);
2765
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2765, 'Hyundai', 'XG350', 2003);
2766
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2766, 'Infiniti', 'FX', 2003);
2767
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2767, 'Infiniti', 'G', 2003);
2768
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2768, 'Infiniti', 'I', 2003);
2769
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2769, 'Infiniti', 'M', 2003);
2770
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2770, 'Infiniti', 'Q', 2003);
2771
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2771, 'Infiniti', 'QX', 2003);
2772
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2772, 'Isuzu', 'Ascender', 2003);
2773
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2773, 'Isuzu', 'Axiom', 2003);
2774
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2774, 'Isuzu', 'Rodeo', 2003);
2775
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2775, 'Isuzu', 'Rodeo Sport', 2003);
2776
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2776, 'Jaguar', 'S-Type', 2003);
2777
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2777, 'Jaguar', 'XJ Series', 2003);
2778
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2778, 'Jaguar', 'XK Series', 2003);
2779
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2779, 'Jaguar', 'X-Type', 2003);
2780
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2780, 'Jeep', 'Grand Cherokee', 2003);
2781
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2781, 'Jeep', 'Liberty', 2003);
2782
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2782, 'Jeep', 'Wrangler', 2003);
2783
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2783, 'Kia', 'Optima', 2003);
2784
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2784, 'Kia', 'Rio', 2003);
2785
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2785, 'Kia', 'Sedona', 2003);
2786
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2786, 'Kia', 'Sorento', 2003);
2787
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2787, 'Kia', 'Spectra', 2003);
2788
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2788, 'Land Rover', 'Discovery', 2003);
2789
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2789, 'Land Rover', 'Freelander', 2003);
2790
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2790, 'Land Rover', 'Range Rover', 2003);
2791
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2791, 'Lexus', 'ES', 2003);
2792
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2792, 'Lexus', 'GS', 2003);
2793
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2793, 'Lexus', 'GX', 2003);
2794
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2794, 'Lexus', 'IS', 2003);
2795
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2795, 'Lexus', 'LS', 2003);
2796
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2796, 'Lexus', 'LX', 2003);
2797
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2797, 'Lexus', 'RX', 2003);
2798
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2798, 'Lexus', 'SC', 2003);
2799
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2799, 'Lincoln', 'Aviator', 2003);
2800
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2800, 'Lincoln', 'LS', 2003);
2801
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2801, 'Lincoln', 'Navigator', 2003);
2802
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2802, 'Lincoln', 'Town Car', 2003);
2803
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2803, 'Mazda', 'B-Series Cab Plus', 2003);
2804
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2804, 'Mazda', 'B-Series Regular Cab', 2003);
2805
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2805, 'Mazda', 'MAZDA6', 2003);
2806
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2806, 'Mazda', 'Miata MX-5', 2003);
2807
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2807, 'Mazda', 'MPV', 2003);
2808
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2808, 'Mazda', 'Protege', 2003);
2809
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2809, 'Mazda', 'Protege5', 2003);
2810
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2810, 'Mazda', 'Tribute', 2003);
2811
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2811, 'Mercedes-Benz', 'C-Class', 2003);
2812
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2812, 'Mercedes-Benz', 'CL-Class', 2003);
2813
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2813, 'Mercedes-Benz', 'CLK-Class', 2003);
2814
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2814, 'Mercedes-Benz', 'E-Class', 2003);
2815
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2815, 'Mercedes-Benz', 'G-Class', 2003);
2816
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2816, 'Mercedes-Benz', 'M-Class', 2003);
2817
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2817, 'Mercedes-Benz', 'S-Class', 2003);
2818
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2818, 'Mercedes-Benz', 'SL-Class', 2003);
2819
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2819, 'Mercedes-Benz', 'SLK-Class', 2003);
2820
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2820, 'Mercury', 'Grand Marquis', 2003);
2821
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2821, 'Mercury', 'Marauder', 2003);
2822
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2822, 'Mercury', 'Mountaineer', 2003);
2823
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2823, 'Mercury', 'Sable', 2003);
2824
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2824, 'MINI', 'Cooper', 2003);
2825
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2825, 'Mitsubishi', 'Diamante', 2003);
2826
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2826, 'Mitsubishi', 'Eclipse', 2003);
2827
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2827, 'Mitsubishi', 'Galant', 2003);
2828
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2828, 'Mitsubishi', 'Lancer', 2003);
2829
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2829, 'Mitsubishi', 'Montero', 2003);
2830
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2830, 'Mitsubishi', 'Montero Sport', 2003);
2831
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2831, 'Mitsubishi', 'Outlander', 2003);
2832
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2832, 'Nissan', '350Z', 2003);
2833
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2833, 'Nissan', 'Altima', 2003);
2834
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2834, 'Nissan', 'Frontier Crew Cab', 2003);
2835
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2835, 'Nissan', 'Frontier King Cab', 2003);
2836
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2836, 'Nissan', 'Maxima', 2003);
2837
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2837, 'Nissan', 'Murano', 2003);
2838
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2838, 'Nissan', 'Pathfinder', 2003);
2839
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2839, 'Nissan', 'Sentra', 2003);
2840
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2840, 'Nissan', 'Xterra', 2003);
2841
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2841, 'Oldsmobile', 'Alero', 2003);
2842
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2842, 'Oldsmobile', 'Aurora', 2003);
2843
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2843, 'Oldsmobile', 'Bravada', 2003);
2844
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2844, 'Oldsmobile', 'Silhouette', 2003);
2845
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2845, 'Pontiac', 'Aztek', 2003);
2846
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2846, 'Pontiac', 'Bonneville', 2003);
2847
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2847, 'Pontiac', 'Grand Am', 2003);
2848
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2848, 'Pontiac', 'Grand Prix', 2003);
2849
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2849, 'Pontiac', 'Montana', 2003);
2850
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2850, 'Pontiac', 'Sunfire', 2003);
2851
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2851, 'Pontiac', 'Vibe', 2003);
2852
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2852, 'Porsche', '911', 2003);
2853
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2853, 'Porsche', 'Boxster', 2003);
2854
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2854, 'Porsche', 'Cayenne', 2003);
2855
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2855, 'Saab', '9-3', 2003);
2856
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2856, 'Saab', '9-5', 2003);
2857
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2857, 'Saturn', 'Ion', 2003);
2858
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2858, 'Saturn', 'L-Series', 2003);
2859
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2859, 'Saturn', 'VUE', 2003);
2860
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2860, 'Subaru', 'Baja', 2003);
2861
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2861, 'Subaru', 'Forester', 2003);
2862
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2862, 'Subaru', 'Impreza', 2003);
2863
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2863, 'Subaru', 'Legacy', 2003);
2864
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2864, 'Subaru', 'Outback', 2003);
2865
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2865, 'Suzuki', 'Aerio', 2003);
2866
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2866, 'Suzuki', 'Grand Vitara', 2003);
2867
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2867, 'Suzuki', 'Vitara', 2003);
2868
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2868, 'Suzuki', 'XL-7', 2003);
2869
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2869, 'Toyota', '4Runner', 2003);
2870
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2870, 'Toyota', 'Avalon', 2003);
2871
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2871, 'Toyota', 'Camry', 2003);
2872
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2872, 'Toyota', 'Celica', 2003);
2873
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2873, 'Toyota', 'Corolla', 2003);
2874
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2874, 'Toyota', 'Echo', 2003);
2875
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2875, 'Toyota', 'Highlander', 2003);
2876
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2876, 'Toyota', 'Land Cruiser', 2003);
2877
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2877, 'Toyota', 'Matrix', 2003);
2878
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2878, 'Toyota', 'MR2', 2003);
2879
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2879, 'Toyota', 'Prius', 2003);
2880
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2880, 'Toyota', 'RAV4', 2003);
2881
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2881, 'Toyota', 'Sequoia', 2003);
2882
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2882, 'Toyota', 'Sienna', 2003);
2883
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2883, 'Toyota', 'Solara', 2003);
2884
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2884, 'Toyota', 'Tacoma Double Cab', 2003);
2885
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2885, 'Toyota', 'Tacoma Regular Cab', 2003);
2886
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2886, 'Toyota', 'Tacoma Xtracab', 2003);
2887
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2887, 'Toyota', 'Tundra Access Cab', 2003);
2888
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2888, 'Toyota', 'Tundra Regular Cab', 2003);
2889
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2889, 'Volkswagen', 'Eurovan', 2003);
2890
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2890, 'Volkswagen', 'Golf', 2003);
2891
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2891, 'Volkswagen', 'GTI', 2003);
2892
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2892, 'Volkswagen', 'Jetta', 2003);
2893
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2893, 'Volkswagen', 'New Beetle', 2003);
2894
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2894, 'Volkswagen', 'Passat', 2003);
2895
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2895, 'Volvo', 'C70', 2003);
2896
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2896, 'Volvo', 'S40', 2003);
2897
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2897, 'Volvo', 'S60', 2003);
2898
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2898, 'Volvo', 'S80', 2003);
2899
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2899, 'Volvo', 'V40', 2003);
2900
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2900, 'Volvo', 'V70', 2003);
2901
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2901, 'Volvo', 'XC70', 2003);
2902
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2902, 'Volvo', 'XC90', 2003);
2903
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2903, 'Acura', 'CL', 2002);
2904
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2904, 'Acura', 'MDX', 2002);
2905
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2905, 'Acura', 'NSX', 2002);
2906
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2906, 'Acura', 'RL', 2002);
2907
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2907, 'Acura', 'RSX', 2002);
2908
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2908, 'Acura', 'TL', 2002);
2909
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2909, 'Audi', 'A4', 2002);
2910
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2910, 'Audi', 'A6', 2002);
2911
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2911, 'Audi', 'A8', 2002);
2912
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2912, 'Audi', 'allroad', 2002);
2913
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2913, 'Audi', 'S4', 2002);
2914
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2914, 'Audi', 'S6', 2002);
2915
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2915, 'Audi', 'S8', 2002);
2916
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2916, 'Audi', 'TT', 2002);
2917
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2917, 'BMW', '3 Series', 2002);
2918
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2918, 'BMW', '5 Series', 2002);
2919
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2919, 'BMW', '7 Series', 2002);
2920
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2920, 'BMW', 'M', 2002);
2921
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2921, 'BMW', 'M3', 2002);
2922
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2922, 'BMW', 'M5', 2002);
2923
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2923, 'BMW', 'X5', 2002);
2924
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2924, 'BMW', 'Z3', 2002);
2925
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2925, 'BMW', 'Z8', 2002);
2926
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2926, 'Buick', 'Century', 2002);
2927
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2927, 'Buick', 'LeSabre', 2002);
2928
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2928, 'Buick', 'Park Avenue', 2002);
2929
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2929, 'Buick', 'Regal', 2002);
2930
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2930, 'Buick', 'Rendezvous', 2002);
2931
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2931, 'Cadillac', 'DeVille', 2002);
2932
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2932, 'Cadillac', 'Eldorado', 2002);
2933
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2933, 'Cadillac', 'Escalade', 2002);
2934
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2934, 'Cadillac', 'Escalade EXT', 2002);
2935
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2935, 'Cadillac', 'Seville', 2002);
2936
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2936, 'Chevrolet', 'Astro Cargo', 2002);
2937
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2937, 'Chevrolet', 'Astro Passenger', 2002);
2938
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2938, 'Chevrolet', 'Avalanche 1500', 2002);
2939
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2939, 'Chevrolet', 'Avalanche 2500', 2002);
2940
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2940, 'Chevrolet', 'Blazer', 2002);
2941
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2941, 'Chevrolet', 'Camaro', 2002);
2942
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2942, 'Chevrolet', 'Cavalier', 2002);
2943
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2943, 'Chevrolet', 'Corvette', 2002);
2944
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2944, 'Chevrolet', 'Express 1500 Cargo', 2002);
2945
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2945, 'Chevrolet', 'Express 1500 Passenger', 2002);
2946
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2946, 'Chevrolet', 'Express 2500 Cargo', 2002);
2947
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2947, 'Chevrolet', 'Express 2500 Passenger', 2002);
2948
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2948, 'Chevrolet', 'Express 3500 Cargo', 2002);
2949
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2949, 'Chevrolet', 'Express 3500 Passenger', 2002);
2950
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2950, 'Chevrolet', 'Impala', 2002);
2951
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2951, 'Chevrolet', 'Malibu', 2002);
2952
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2952, 'Chevrolet', 'Monte Carlo', 2002);
2953
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2953, 'Chevrolet', 'Prizm', 2002);
2954
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2954, 'Chevrolet', 'S10 Crew Cab', 2002);
2955
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2955, 'Chevrolet', 'S10 Extended Cab', 2002);
2956
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2956, 'Chevrolet', 'S10 Regular Cab', 2002);
2957
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2957, 'Chevrolet', 'Silverado 1500 Extended Cab', 2002);
2958
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2958, 'Chevrolet', 'Silverado 1500 HD Crew Cab', 2002);
2959
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2959, 'Chevrolet', 'Silverado 1500 Regular Cab', 2002);
2960
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2960, 'Chevrolet', 'Silverado 2500 Extended Cab', 2002);
2961
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2961, 'Chevrolet', 'Silverado 2500 HD Crew Cab', 2002);
2962
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2962, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2002);
2963
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2963, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2002);
2964
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2964, 'Chevrolet', 'Silverado 2500 Regular Cab', 2002);
2965
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2965, 'Chevrolet', 'Silverado 3500 Crew Cab', 2002);
2966
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2966, 'Chevrolet', 'Silverado 3500 Extended Cab', 2002);
2967
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2967, 'Chevrolet', 'Silverado 3500 Regular Cab', 2002);
2968
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2968, 'Chevrolet', 'Suburban 1500', 2002);
2969
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2969, 'Chevrolet', 'Suburban 2500', 2002);
2970
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2970, 'Chevrolet', 'Tahoe', 2002);
2971
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2971, 'Chevrolet', 'Tracker', 2002);
2972
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2972, 'Chevrolet', 'TrailBlazer', 2002);
2973
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2973, 'Chevrolet', 'Venture Cargo', 2002);
2974
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2974, 'Chevrolet', 'Venture Passenger', 2002);
2975
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2975, 'Chrysler', '300M', 2002);
2976
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2976, 'Chrysler', 'Concorde', 2002);
2977
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2977, 'Chrysler', 'Prowler', 2002);
2978
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2978, 'Chrysler', 'PT Cruiser', 2002);
2979
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2979, 'Chrysler', 'Sebring', 2002);
2980
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2980, 'Chrysler', 'Town & Country', 2002);
2981
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2981, 'Chrysler', 'Voyager', 2002);
2982
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2982, 'Daewoo', 'Lanos', 2002);
2983
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2983, 'Daewoo', 'Leganza', 2002);
2984
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2984, 'Daewoo', 'Nubira', 2002);
2985
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2985, 'Dodge', 'Caravan Passenger', 2002);
2986
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2986, 'Dodge', 'Dakota Club Cab', 2002);
2987
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2987, 'Dodge', 'Dakota Quad Cab', 2002);
2988
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2988, 'Dodge', 'Dakota Regular Cab', 2002);
2989
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2989, 'Dodge', 'Durango', 2002);
2990
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2990, 'Dodge', 'Grand Caravan Passenger', 2002);
2991
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2991, 'Dodge', 'Intrepid', 2002);
2992
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2992, 'Dodge', 'Neon', 2002);
2993
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2993, 'Dodge', 'Ram 1500 Quad Cab', 2002);
2994
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2994, 'Dodge', 'Ram 1500 Regular Cab', 2002);
2995
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2995, 'Dodge', 'Ram 2500 Quad Cab', 2002);
2996
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2996, 'Dodge', 'Ram 2500 Regular Cab', 2002);
2997
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2997, 'Dodge', 'Ram 3500 Quad Cab', 2002);
2998
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2998, 'Dodge', 'Ram 3500 Regular Cab', 2002);
2999
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2999, 'Dodge', 'Ram Van 1500', 2002);
3000
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3000, 'Dodge', 'Ram Van 2500', 2002);
3001
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3001, 'Dodge', 'Ram Van 3500', 2002);
3002
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3002, 'Dodge', 'Ram Wagon 1500', 2002);
3003
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3003, 'Dodge', 'Ram Wagon 2500', 2002);
3004
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3004, 'Dodge', 'Ram Wagon 3500', 2002);
3005
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3005, 'Dodge', 'Stratus', 2002);
3006
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3006, 'Dodge', 'Viper', 2002);
3007
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3007, 'Ford', 'Crown Victoria', 2002);
3008
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3008, 'Ford', 'Econoline E150 Cargo', 2002);
3009
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3009, 'Ford', 'Econoline E150 Passenger', 2002);
3010
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3010, 'Ford', 'Econoline E250 Cargo', 2002);
3011
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3011, 'Ford', 'Econoline E350 Super Duty Cargo', 2002);
3012
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3012, 'Ford', 'Econoline E350 Super Duty Passenger', 2002);
3013
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3013, 'Ford', 'Escape', 2002);
3014
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3014, 'Ford', 'Escort', 2002);
3015
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3015, 'Ford', 'Excursion', 2002);
3016
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3016, 'Ford', 'Expedition', 2002);
3017
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3017, 'Ford', 'Explorer', 2002);
3018
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3018, 'Ford', 'Explorer Sport', 2002);
3019
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3019, 'Ford', 'Explorer Sport Trac', 2002);
3020
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3020, 'Ford', 'F150 Regular Cab', 2002);
3021
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3021, 'Ford', 'F150 Super Cab', 2002);
3022
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3022, 'Ford', 'F150 SuperCrew Cab', 2002);
3023
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3023, 'Ford', 'F250 Super Duty Crew Cab', 2002);
3024
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3024, 'Ford', 'F250 Super Duty Regular Cab', 2002);
3025
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3025, 'Ford', 'F250 Super Duty Super Cab', 2002);
3026
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3026, 'Ford', 'F350 Super Duty Crew Cab', 2002);
3027
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3027, 'Ford', 'F350 Super Duty Regular Cab', 2002);
3028
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3028, 'Ford', 'F350 Super Duty Super Cab', 2002);
3029
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3029, 'Ford', 'Focus', 2002);
3030
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3030, 'Ford', 'Mustang', 2002);
3031
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3031, 'Ford', 'Ranger Regular Cab', 2002);
3032
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3032, 'Ford', 'Ranger Super Cab', 2002);
3033
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3033, 'Ford', 'Taurus', 2002);
3034
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3034, 'Ford', 'Thunderbird', 2002);
3035
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3035, 'Ford', 'Windstar Cargo', 2002);
3036
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3036, 'Ford', 'Windstar Passenger', 2002);
3037
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3037, 'Ford', 'ZX2', 2002);
3038
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3038, 'GMC', 'Envoy', 2002);
3039
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3039, 'GMC', 'Envoy XL', 2002);
3040
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3040, 'GMC', 'Safari Cargo', 2002);
3041
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3041, 'GMC', 'Safari Passenger', 2002);
3042
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3042, 'GMC', 'Savana 1500 Cargo', 2002);
3043
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3043, 'GMC', 'Savana 1500 Passenger', 2002);
3044
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3044, 'GMC', 'Savana 2500 Cargo', 2002);
3045
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3045, 'GMC', 'Savana 2500 Passenger', 2002);
3046
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3046, 'GMC', 'Savana 3500 Cargo', 2002);
3047
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3047, 'GMC', 'Savana 3500 Passenger', 2002);
3048
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3048, 'GMC', 'Sierra 1500 Extended Cab', 2002);
3049
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3049, 'GMC', 'Sierra 1500 HD Crew Cab', 2002);
3050
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3050, 'GMC', 'Sierra 1500 Regular Cab', 2002);
3051
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3051, 'GMC', 'Sierra 2500 Extended Cab', 2002);
3052
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3052, 'GMC', 'Sierra 2500 HD Crew Cab', 2002);
3053
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3053, 'GMC', 'Sierra 2500 HD Extended Cab', 2002);
3054
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3054, 'GMC', 'Sierra 2500 HD Regular Cab', 2002);
3055
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3055, 'GMC', 'Sierra 2500 Regular Cab', 2002);
3056
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3056, 'GMC', 'Sierra 3500 Crew Cab', 2002);
3057
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3057, 'GMC', 'Sierra 3500 Extended Cab', 2002);
3058
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3058, 'GMC', 'Sierra 3500 Regular Cab', 2002);
3059
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3059, 'GMC', 'Sonoma Crew Cab', 2002);
3060
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3060, 'GMC', 'Sonoma Extended Cab', 2002);
3061
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3061, 'GMC', 'Sonoma Regular Cab', 2002);
3062
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3062, 'GMC', 'Yukon', 2002);
3063
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3063, 'GMC', 'Yukon XL 1500', 2002);
3064
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3064, 'GMC', 'Yukon XL 2500', 2002);
3065
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3065, 'Honda', 'Accord', 2002);
3066
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3066, 'Honda', 'Civic', 2002);
3067
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3067, 'Honda', 'CR-V', 2002);
3068
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3068, 'Honda', 'Insight', 2002);
3069
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3069, 'Honda', 'Odyssey', 2002);
3070
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3070, 'Honda', 'Passport', 2002);
3071
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3071, 'Honda', 'S2000', 2002);
3072
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3072, 'HUMMER', 'H1', 2002);
3073
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3073, 'Hyundai', 'Accent', 2002);
3074
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3074, 'Hyundai', 'Elantra', 2002);
3075
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3075, 'Hyundai', 'Santa Fe', 2002);
3076
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3076, 'Hyundai', 'Sonata', 2002);
3077
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3077, 'Hyundai', 'XG350', 2002);
3078
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3078, 'Infiniti', 'G', 2002);
3079
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3079, 'Infiniti', 'I', 2002);
3080
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3080, 'Infiniti', 'Q', 2002);
3081
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3081, 'Infiniti', 'QX', 2002);
3082
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3082, 'Isuzu', 'Axiom', 2002);
3083
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3083, 'Isuzu', 'Rodeo', 2002);
3084
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3084, 'Isuzu', 'Rodeo Sport', 2002);
3085
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3085, 'Isuzu', 'Trooper', 2002);
3086
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3086, 'Jaguar', 'S-Type', 2002);
3087
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3087, 'Jaguar', 'XJ Series', 2002);
3088
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3088, 'Jaguar', 'XK Series', 2002);
3089
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3089, 'Jaguar', 'X-Type', 2002);
3090
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3090, 'Jeep', 'Grand Cherokee', 2002);
3091
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3091, 'Jeep', 'Liberty', 2002);
3092
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3092, 'Jeep', 'Wrangler', 2002);
3093
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3093, 'Kia', 'Optima', 2002);
3094
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3094, 'Kia', 'Rio', 2002);
3095
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3095, 'Kia', 'Sedona', 2002);
3096
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3096, 'Kia', 'Spectra', 2002);
3097
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3097, 'Kia', 'Sportage', 2002);
3098
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3098, 'Land Rover', 'Discovery Series II', 2002);
3099
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3099, 'Land Rover', 'Freelander', 2002);
3100
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3100, 'Land Rover', 'Range Rover', 2002);
3101
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3101, 'Lexus', 'ES', 2002);
3102
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3102, 'Lexus', 'GS', 2002);
3103
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3103, 'Lexus', 'IS', 2002);
3104
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3104, 'Lexus', 'LS', 2002);
3105
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3105, 'Lexus', 'LX', 2002);
3106
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3106, 'Lexus', 'RX', 2002);
3107
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3107, 'Lexus', 'SC', 2002);
3108
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3108, 'Lincoln', 'Blackwood', 2002);
3109
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3109, 'Lincoln', 'Continental', 2002);
3110
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3110, 'Lincoln', 'LS', 2002);
3111
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3111, 'Lincoln', 'Navigator', 2002);
3112
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3112, 'Lincoln', 'Town Car', 2002);
3113
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3113, 'Mazda', '626', 2002);
3114
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3114, 'Mazda', 'B-Series Cab Plus', 2002);
3115
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3115, 'Mazda', 'B-Series Regular Cab', 2002);
3116
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3116, 'Mazda', 'Miata MX-5', 2002);
3117
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3117, 'Mazda', 'Millenia', 2002);
3118
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3118, 'Mazda', 'MPV', 2002);
3119
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3119, 'Mazda', 'Protege', 2002);
3120
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3120, 'Mazda', 'Protege5', 2002);
3121
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3121, 'Mazda', 'Tribute', 2002);
3122
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3122, 'Mercedes-Benz', 'C-Class', 2002);
3123
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3123, 'Mercedes-Benz', 'CL-Class', 2002);
3124
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3124, 'Mercedes-Benz', 'CLK-Class', 2002);
3125
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3125, 'Mercedes-Benz', 'E-Class', 2002);
3126
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3126, 'Mercedes-Benz', 'G-Class', 2002);
3127
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3127, 'Mercedes-Benz', 'M-Class', 2002);
3128
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3128, 'Mercedes-Benz', 'S-Class', 2002);
3129
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3129, 'Mercedes-Benz', 'SL-Class', 2002);
3130
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3130, 'Mercedes-Benz', 'SLK-Class', 2002);
3131
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3131, 'Mercury', 'Cougar', 2002);
3132
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3132, 'Mercury', 'Grand Marquis', 2002);
3133
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3133, 'Mercury', 'Mountaineer', 2002);
3134
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3134, 'Mercury', 'Sable', 2002);
3135
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3135, 'Mercury', 'Villager', 2002);
3136
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3136, 'MINI', 'Cooper', 2002);
3137
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3137, 'Mitsubishi', 'Diamante', 2002);
3138
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3138, 'Mitsubishi', 'Eclipse', 2002);
3139
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3139, 'Mitsubishi', 'Galant', 2002);
3140
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3140, 'Mitsubishi', 'Lancer', 2002);
3141
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3141, 'Mitsubishi', 'Mirage', 2002);
3142
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3142, 'Mitsubishi', 'Montero', 2002);
3143
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3143, 'Mitsubishi', 'Montero Sport', 2002);
3144
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3144, 'Nissan', 'Altima', 2002);
3145
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3145, 'Nissan', 'Frontier Crew Cab', 2002);
3146
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3146, 'Nissan', 'Frontier King Cab', 2002);
3147
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3147, 'Nissan', 'Maxima', 2002);
3148
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3148, 'Nissan', 'Pathfinder', 2002);
3149
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3149, 'Nissan', 'Quest', 2002);
3150
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3150, 'Nissan', 'Sentra', 2002);
3151
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3151, 'Nissan', 'Xterra', 2002);
3152
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3152, 'Oldsmobile', 'Alero', 2002);
3153
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3153, 'Oldsmobile', 'Aurora', 2002);
3154
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3154, 'Oldsmobile', 'Bravada', 2002);
3155
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3155, 'Oldsmobile', 'Intrigue', 2002);
3156
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3156, 'Oldsmobile', 'Silhouette', 2002);
3157
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3157, 'Pontiac', 'Aztek', 2002);
3158
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3158, 'Pontiac', 'Bonneville', 2002);
3159
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3159, 'Pontiac', 'Firebird', 2002);
3160
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3160, 'Pontiac', 'Grand Am', 2002);
3161
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3161, 'Pontiac', 'Grand Prix', 2002);
3162
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3162, 'Pontiac', 'Montana', 2002);
3163
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3163, 'Pontiac', 'Sunfire', 2002);
3164
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3164, 'Porsche', '911', 2002);
3165
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3165, 'Porsche', 'Boxster', 2002);
3166
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3166, 'Saab', '9-3', 2002);
3167
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3167, 'Saab', '9-5', 2002);
3168
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3168, 'Saturn', 'L-Series', 2002);
3169
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3169, 'Saturn', 'S-Series', 2002);
3170
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3170, 'Saturn', 'VUE', 2002);
3171
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3171, 'Subaru', 'Forester', 2002);
3172
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3172, 'Subaru', 'Impreza', 2002);
3173
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3173, 'Subaru', 'Legacy', 2002);
3174
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3174, 'Subaru', 'Outback', 2002);
3175
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3175, 'Suzuki', 'Aerio', 2002);
3176
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3176, 'Suzuki', 'Esteem', 2002);
3177
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3177, 'Suzuki', 'Grand Vitara', 2002);
3178
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3178, 'Suzuki', 'Vitara', 2002);
3179
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3179, 'Suzuki', 'XL-7', 2002);
3180
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3180, 'Toyota', '4Runner', 2002);
3181
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3181, 'Toyota', 'Avalon', 2002);
3182
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3182, 'Toyota', 'Camry', 2002);
3183
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3183, 'Toyota', 'Celica', 2002);
3184
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3184, 'Toyota', 'Corolla', 2002);
3185
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3185, 'Toyota', 'Echo', 2002);
3186
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3186, 'Toyota', 'Highlander', 2002);
3187
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3187, 'Toyota', 'Land Cruiser', 2002);
3188
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3188, 'Toyota', 'MR2', 2002);
3189
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3189, 'Toyota', 'Prius', 2002);
3190
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3190, 'Toyota', 'RAV4', 2002);
3191
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3191, 'Toyota', 'Sequoia', 2002);
3192
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3192, 'Toyota', 'Sienna', 2002);
3193
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3193, 'Toyota', 'Solara', 2002);
3194
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3194, 'Toyota', 'Tacoma Double Cab', 2002);
3195
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3195, 'Toyota', 'Tacoma Regular Cab', 2002);
3196
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3196, 'Toyota', 'Tacoma Xtracab', 2002);
3197
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3197, 'Toyota', 'Tundra Access Cab', 2002);
3198
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3198, 'Toyota', 'Tundra Regular Cab', 2002);
3199
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3199, 'Volkswagen', 'Cabrio', 2002);
3200
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3200, 'Volkswagen', 'Eurovan', 2002);
3201
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3201, 'Volkswagen', 'Golf', 2002);
3202
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3202, 'Volkswagen', 'GTI', 2002);
3203
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3203, 'Volkswagen', 'Jetta', 2002);
3204
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3204, 'Volkswagen', 'New Beetle', 2002);
3205
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3205, 'Volkswagen', 'Passat', 2002);
3206
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3206, 'Volvo', 'C70', 2002);
3207
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3207, 'Volvo', 'S40', 2002);
3208
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3208, 'Volvo', 'S60', 2002);
3209
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3209, 'Volvo', 'S80', 2002);
3210
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3210, 'Volvo', 'V40', 2002);
3211
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3211, 'Volvo', 'V70', 2002);
3212
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3212, 'Acura', 'CL', 2001);
3213
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3213, 'Acura', 'Integra', 2001);
3214
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3214, 'Acura', 'MDX', 2001);
3215
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3215, 'Acura', 'NSX', 2001);
3216
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3216, 'Acura', 'RL', 2001);
3217
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3217, 'Acura', 'TL', 2001);
3218
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3218, 'Audi', 'A4', 2001);
3219
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3219, 'Audi', 'A6', 2001);
3220
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3220, 'Audi', 'A8', 2001);
3221
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3221, 'Audi', 'allroad', 2001);
3222
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3222, 'Audi', 'S4', 2001);
3223
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3223, 'Audi', 'S8', 2001);
3224
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3224, 'Audi', 'TT', 2001);
3225
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3225, 'BMW', '3 Series', 2001);
3226
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3226, 'BMW', '5 Series', 2001);
3227
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3227, 'BMW', '7 Series', 2001);
3228
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3228, 'BMW', 'M', 2001);
3229
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3229, 'BMW', 'M3', 2001);
3230
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3230, 'BMW', 'M5', 2001);
3231
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3231, 'BMW', 'X5', 2001);
3232
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3232, 'BMW', 'Z3', 2001);
3233
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3233, 'BMW', 'Z8', 2001);
3234
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3234, 'Buick', 'Century', 2001);
3235
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3235, 'Buick', 'LeSabre', 2001);
3236
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3236, 'Buick', 'Park Avenue', 2001);
3237
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3237, 'Buick', 'Regal', 2001);
3238
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3238, 'Cadillac', 'Catera', 2001);
3239
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3239, 'Cadillac', 'DeVille', 2001);
3240
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3240, 'Cadillac', 'Eldorado', 2001);
3241
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3241, 'Cadillac', 'Seville', 2001);
3242
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3242, 'Chevrolet', 'Astro Cargo', 2001);
3243
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3243, 'Chevrolet', 'Astro Passenger', 2001);
3244
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3244, 'Chevrolet', 'Blazer', 2001);
3245
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3245, 'Chevrolet', 'Camaro', 2001);
3246
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3246, 'Chevrolet', 'Cavalier', 2001);
3247
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3247, 'Chevrolet', 'Corvette', 2001);
3248
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3248, 'Chevrolet', 'Express 1500 Cargo', 2001);
3249
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3249, 'Chevrolet', 'Express 1500 Passenger', 2001);
3250
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3250, 'Chevrolet', 'Express 2500 Cargo', 2001);
3251
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3251, 'Chevrolet', 'Express 2500 Passenger', 2001);
3252
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3252, 'Chevrolet', 'Express 3500 Cargo', 2001);
3253
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3253, 'Chevrolet', 'Express 3500 Passenger', 2001);
3254
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3254, 'Chevrolet', 'Impala', 2001);
3255
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3255, 'Chevrolet', 'Lumina', 2001);
3256
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3256, 'Chevrolet', 'Malibu', 2001);
3257
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3257, 'Chevrolet', 'Metro', 2001);
3258
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3258, 'Chevrolet', 'Monte Carlo', 2001);
3259
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3259, 'Chevrolet', 'Prizm', 2001);
3260
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3260, 'Chevrolet', 'S10 Crew Cab', 2001);
3261
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3261, 'Chevrolet', 'S10 Extended Cab', 2001);
3262
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3262, 'Chevrolet', 'S10 Regular Cab', 2001);
3263
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3263, 'Chevrolet', 'Silverado 1500 Extended Cab', 2001);
3264
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3264, 'Chevrolet', 'Silverado 1500 HD Crew Cab', 2001);
3265
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3265, 'Chevrolet', 'Silverado 1500 Regular Cab', 2001);
3266
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3266, 'Chevrolet', 'Silverado 2500 Extended Cab', 2001);
3267
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3267, 'Chevrolet', 'Silverado 2500 HD Crew Cab', 2001);
3268
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3268, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2001);
3269
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3269, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2001);
3270
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3270, 'Chevrolet', 'Silverado 2500 Regular Cab', 2001);
3271
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3271, 'Chevrolet', 'Silverado 3500 Crew Cab', 2001);
3272
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3272, 'Chevrolet', 'Silverado 3500 Extended Cab', 2001);
3273
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3273, 'Chevrolet', 'Silverado 3500 Regular Cab', 2001);
3274
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3274, 'Chevrolet', 'Suburban 1500', 2001);
3275
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3275, 'Chevrolet', 'Suburban 2500', 2001);
3276
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3276, 'Chevrolet', 'Tahoe', 2001);
3277
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3277, 'Chevrolet', 'Tracker', 2001);
3278
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3278, 'Chevrolet', 'Venture Passenger', 2001);
3279
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3279, 'Chrysler', '300M', 2001);
3280
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3280, 'Chrysler', 'Concorde', 2001);
3281
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3281, 'Chrysler', 'LHS', 2001);
3282
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3282, 'Chrysler', 'Prowler', 2001);
3283
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3283, 'Chrysler', 'PT Cruiser', 2001);
3284
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3284, 'Chrysler', 'Sebring', 2001);
3285
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3285, 'Chrysler', 'Town & Country', 2001);
3286
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3286, 'Chrysler', 'Voyager', 2001);
3287
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3287, 'Daewoo', 'Lanos', 2001);
3288
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3288, 'Daewoo', 'Leganza', 2001);
3289
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3289, 'Daewoo', 'Nubira', 2001);
3290
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3290, 'Dodge', 'Caravan Passenger', 2001);
3291
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3291, 'Dodge', 'Dakota Club Cab', 2001);
3292
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3292, 'Dodge', 'Dakota Quad Cab', 2001);
3293
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3293, 'Dodge', 'Dakota Regular Cab', 2001);
3294
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3294, 'Dodge', 'Durango', 2001);
3295
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3295, 'Dodge', 'Grand Caravan Passenger', 2001);
3296
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3296, 'Dodge', 'Intrepid', 2001);
3297
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3297, 'Dodge', 'Neon', 2001);
3298
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3298, 'Dodge', 'Ram 1500 Club Cab', 2001);
3299
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3299, 'Dodge', 'Ram 1500 Quad Cab', 2001);
3300
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3300, 'Dodge', 'Ram 1500 Regular Cab', 2001);
3301
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3301, 'Dodge', 'Ram 2500 Quad Cab', 2001);
3302
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3302, 'Dodge', 'Ram 2500 Regular Cab', 2001);
3303
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3303, 'Dodge', 'Ram 3500 Quad Cab', 2001);
3304
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3304, 'Dodge', 'Ram 3500 Regular Cab', 2001);
3305
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3305, 'Dodge', 'Ram Van 1500', 2001);
3306
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3306, 'Dodge', 'Ram Van 2500', 2001);
3307
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3307, 'Dodge', 'Ram Van 3500', 2001);
3308
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3308, 'Dodge', 'Ram Wagon 1500', 2001);
3309
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3309, 'Dodge', 'Ram Wagon 2500', 2001);
3310
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3310, 'Dodge', 'Ram Wagon 3500', 2001);
3311
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3311, 'Dodge', 'Stratus', 2001);
3312
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3312, 'Dodge', 'Viper', 2001);
3313
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3313, 'Ford', 'Crown Victoria', 2001);
3314
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3314, 'Ford', 'Econoline E150 Cargo', 2001);
3315
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3315, 'Ford', 'Econoline E150 Passenger', 2001);
3316
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3316, 'Ford', 'Econoline E250 Cargo', 2001);
3317
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3317, 'Ford', 'Econoline E350 Super Duty Cargo', 2001);
3318
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3318, 'Ford', 'Econoline E350 Super Duty Passenger', 2001);
3319
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3319, 'Ford', 'Escape', 2001);
3320
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3320, 'Ford', 'Escort', 2001);
3321
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3321, 'Ford', 'Excursion', 2001);
3322
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3322, 'Ford', 'Expedition', 2001);
3323
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3323, 'Ford', 'Explorer', 2001);
3324
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3324, 'Ford', 'Explorer Sport', 2001);
3325
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3325, 'Ford', 'Explorer Sport Trac', 2001);
3326
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3326, 'Ford', 'F150 Regular Cab', 2001);
3327
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3327, 'Ford', 'F150 Super Cab', 2001);
3328
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3328, 'Ford', 'F150 SuperCrew Cab', 2001);
3329
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3329, 'Ford', 'F250 Super Duty Crew Cab', 2001);
3330
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3330, 'Ford', 'F250 Super Duty Regular Cab', 2001);
3331
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3331, 'Ford', 'F250 Super Duty Super Cab', 2001);
3332
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3332, 'Ford', 'F350 Super Duty Crew Cab', 2001);
3333
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3333, 'Ford', 'F350 Super Duty Regular Cab', 2001);
3334
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3334, 'Ford', 'F350 Super Duty Super Cab', 2001);
3335
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3335, 'Ford', 'Focus', 2001);
3336
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3336, 'Ford', 'Mustang', 2001);
3337
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3337, 'Ford', 'Ranger Regular Cab', 2001);
3338
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3338, 'Ford', 'Ranger Super Cab', 2001);
3339
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3339, 'Ford', 'Taurus', 2001);
3340
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3340, 'Ford', 'Windstar Cargo', 2001);
3341
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3341, 'Ford', 'Windstar Passenger', 2001);
3342
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3342, 'Ford', 'ZX2', 2001);
3343
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3343, 'GMC', 'Jimmy', 2001);
3344
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3344, 'GMC', 'Safari Cargo', 2001);
3345
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3345, 'GMC', 'Safari Passenger', 2001);
3346
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3346, 'GMC', 'Savana 1500 Cargo', 2001);
3347
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3347, 'GMC', 'Savana 1500 Passenger', 2001);
3348
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3348, 'GMC', 'Savana 2500 Cargo', 2001);
3349
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3349, 'GMC', 'Savana 2500 Passenger', 2001);
3350
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3350, 'GMC', 'Savana 3500 Cargo', 2001);
3351
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3351, 'GMC', 'Savana 3500 Passenger', 2001);
3352
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3352, 'GMC', 'Sierra 1500 Extended Cab', 2001);
3353
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3353, 'GMC', 'Sierra 1500 HD Crew Cab', 2001);
3354
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3354, 'GMC', 'Sierra 1500 Regular Cab', 2001);
3355
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3355, 'GMC', 'Sierra 2500 Extended Cab', 2001);
3356
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3356, 'GMC', 'Sierra 2500 HD Crew Cab', 2001);
3357
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3357, 'GMC', 'Sierra 2500 HD Extended Cab', 2001);
3358
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3358, 'GMC', 'Sierra 2500 HD Regular Cab', 2001);
3359
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3359, 'GMC', 'Sierra 2500 Regular Cab', 2001);
3360
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3360, 'GMC', 'Sierra 3500 Crew Cab', 2001);
3361
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3361, 'GMC', 'Sierra 3500 Extended Cab', 2001);
3362
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3362, 'GMC', 'Sierra 3500 Regular Cab', 2001);
3363
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3363, 'GMC', 'Sonoma Crew Cab', 2001);
3364
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3364, 'GMC', 'Sonoma Extended Cab', 2001);
3365
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3365, 'GMC', 'Sonoma Regular Cab', 2001);
3366
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3366, 'GMC', 'Yukon', 2001);
3367
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3367, 'GMC', 'Yukon XL 1500', 2001);
3368
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3368, 'GMC', 'Yukon XL 2500', 2001);
3369
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3369, 'Honda', 'Accord', 2001);
3370
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3370, 'Honda', 'Civic', 2001);
3371
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3371, 'Honda', 'CR-V', 2001);
3372
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3372, 'Honda', 'Insight', 2001);
3373
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3373, 'Honda', 'Odyssey', 2001);
3374
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3374, 'Honda', 'Passport', 2001);
3375
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3375, 'Honda', 'Prelude', 2001);
3376
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3376, 'Honda', 'S2000', 2001);
3377
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3377, 'HUMMER', 'H1', 2001);
3378
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3378, 'Hyundai', 'Accent', 2001);
3379
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3379, 'Hyundai', 'Elantra', 2001);
3380
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3380, 'Hyundai', 'Santa Fe', 2001);
3381
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3381, 'Hyundai', 'Sonata', 2001);
3382
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3382, 'Hyundai', 'Tiburon', 2001);
3383
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3383, 'Hyundai', 'XG300', 2001);
3384
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3384, 'Infiniti', 'G', 2001);
3385
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3385, 'Infiniti', 'I', 2001);
3386
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3386, 'Infiniti', 'Q', 2001);
3387
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3387, 'Infiniti', 'QX', 2001);
3388
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3388, 'Isuzu', 'Rodeo', 2001);
3389
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3389, 'Isuzu', 'Rodeo Sport', 2001);
3390
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3390, 'Isuzu', 'Trooper', 2001);
3391
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3391, 'Isuzu', 'VehiCROSS', 2001);
3392
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3392, 'Jaguar', 'S-Type', 2001);
3393
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3393, 'Jaguar', 'XJ Series', 2001);
3394
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3394, 'Jaguar', 'XK Series', 2001);
3395
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3395, 'Jeep', 'Cherokee', 2001);
3396
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3396, 'Jeep', 'Grand Cherokee', 2001);
3397
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3397, 'Jeep', 'Wrangler', 2001);
3398
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3398, 'Kia', 'Optima', 2001);
3399
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3399, 'Kia', 'Rio', 2001);
3400
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3400, 'Kia', 'Sephia', 2001);
3401
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3401, 'Kia', 'Spectra', 2001);
3402
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3402, 'Kia', 'Sportage', 2001);
3403
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3403, 'Land Rover', 'Discovery Series II', 2001);
3404
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3404, 'Land Rover', 'Range Rover', 2001);
3405
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3405, 'Lexus', 'ES', 2001);
3406
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3406, 'Lexus', 'GS', 2001);
3407
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3407, 'Lexus', 'IS', 2001);
3408
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3408, 'Lexus', 'LS', 2001);
3409
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3409, 'Lexus', 'LX', 2001);
3410
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3410, 'Lexus', 'RX', 2001);
3411
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3411, 'Lincoln', 'Continental', 2001);
3412
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3412, 'Lincoln', 'LS', 2001);
3413
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3413, 'Lincoln', 'Navigator', 2001);
3414
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3414, 'Lincoln', 'Town Car', 2001);
3415
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3415, 'Mazda', '626', 2001);
3416
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3416, 'Mazda', 'B-Series Cab Plus', 2001);
3417
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3417, 'Mazda', 'B-Series Regular Cab', 2001);
3418
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3418, 'Mazda', 'Miata MX-5', 2001);
3419
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3419, 'Mazda', 'Millenia', 2001);
3420
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3420, 'Mazda', 'MPV', 2001);
3421
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3421, 'Mazda', 'Protege', 2001);
3422
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3422, 'Mazda', 'Tribute', 2001);
3423
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3423, 'Mercedes-Benz', 'C-Class', 2001);
3424
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3424, 'Mercedes-Benz', 'CL-Class', 2001);
3425
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3425, 'Mercedes-Benz', 'CLK-Class', 2001);
3426
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3426, 'Mercedes-Benz', 'E-Class', 2001);
3427
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3427, 'Mercedes-Benz', 'M-Class', 2001);
3428
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3428, 'Mercedes-Benz', 'S-Class', 2001);
3429
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3429, 'Mercedes-Benz', 'SL-Class', 2001);
3430
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3430, 'Mercedes-Benz', 'SLK-Class', 2001);
3431
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3431, 'Mercury', 'Cougar', 2001);
3432
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3432, 'Mercury', 'Grand Marquis', 2001);
3433
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3433, 'Mercury', 'Mountaineer', 2001);
3434
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3434, 'Mercury', 'Sable', 2001);
3435
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3435, 'Mercury', 'Villager', 2001);
3436
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3436, 'Mitsubishi', 'Diamante', 2001);
3437
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3437, 'Mitsubishi', 'Eclipse', 2001);
3438
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3438, 'Mitsubishi', 'Galant', 2001);
3439
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3439, 'Mitsubishi', 'Mirage', 2001);
3440
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3440, 'Mitsubishi', 'Montero', 2001);
3441
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3441, 'Mitsubishi', 'Montero Sport', 2001);
3442
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3442, 'Nissan', 'Altima', 2001);
3443
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3443, 'Nissan', 'Frontier Crew Cab', 2001);
3444
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3444, 'Nissan', 'Frontier King Cab', 2001);
3445
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3445, 'Nissan', 'Frontier Regular Cab', 2001);
3446
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3446, 'Nissan', 'Maxima', 2001);
3447
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3447, 'Nissan', 'Pathfinder', 2001);
3448
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3448, 'Nissan', 'Quest', 2001);
3449
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3449, 'Nissan', 'Sentra', 2001);
3450
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3450, 'Nissan', 'Xterra', 2001);
3451
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3451, 'Oldsmobile', 'Alero', 2001);
3452
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3452, 'Oldsmobile', 'Aurora', 2001);
3453
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3453, 'Oldsmobile', 'Bravada', 2001);
3454
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3454, 'Oldsmobile', 'Intrigue', 2001);
3455
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3455, 'Oldsmobile', 'Silhouette', 2001);
3456
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3456, 'Plymouth', 'Neon', 2001);
3457
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3457, 'Pontiac', 'Aztek', 2001);
3458
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3458, 'Pontiac', 'Bonneville', 2001);
3459
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3459, 'Pontiac', 'Firebird', 2001);
3460
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3460, 'Pontiac', 'Grand Am', 2001);
3461
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3461, 'Pontiac', 'Grand Prix', 2001);
3462
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3462, 'Pontiac', 'Montana', 2001);
3463
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3463, 'Pontiac', 'Sunfire', 2001);
3464
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3464, 'Porsche', '911', 2001);
3465
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3465, 'Porsche', 'Boxster', 2001);
3466
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3466, 'Saab', '9-3', 2001);
3467
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3467, 'Saab', '9-5', 2001);
3468
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3468, 'Saturn', 'L-Series', 2001);
3469
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3469, 'Saturn', 'S-Series', 2001);
3470
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3470, 'Subaru', 'Forester', 2001);
3471
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3471, 'Subaru', 'Impreza', 2001);
3472
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3472, 'Subaru', 'Legacy', 2001);
3473
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3473, 'Subaru', 'Outback', 2001);
3474
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3474, 'Suzuki', 'Esteem', 2001);
3475
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3475, 'Suzuki', 'Grand Vitara', 2001);
3476
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3476, 'Suzuki', 'Swift', 2001);
3477
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3477, 'Suzuki', 'Vitara', 2001);
3478
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3478, 'Suzuki', 'XL-7', 2001);
3479
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3479, 'Toyota', '4Runner', 2001);
3480
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3480, 'Toyota', 'Avalon', 2001);
3481
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3481, 'Toyota', 'Camry', 2001);
3482
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3482, 'Toyota', 'Celica', 2001);
3483
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3483, 'Toyota', 'Corolla', 2001);
3484
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3484, 'Toyota', 'Echo', 2001);
3485
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3485, 'Toyota', 'Highlander', 2001);
3486
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3486, 'Toyota', 'Land Cruiser', 2001);
3487
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3487, 'Toyota', 'MR2', 2001);
3488
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3488, 'Toyota', 'Prius', 2001);
3489
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3489, 'Toyota', 'RAV4', 2001);
3490
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3490, 'Toyota', 'Sequoia', 2001);
3491
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3491, 'Toyota', 'Sienna', 2001);
3492
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3492, 'Toyota', 'Solara', 2001);
3493
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3493, 'Toyota', 'Tacoma Double Cab', 2001);
3494
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3494, 'Toyota', 'Tacoma Regular Cab', 2001);
3495
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3495, 'Toyota', 'Tacoma Xtracab', 2001);
3496
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3496, 'Toyota', 'Tundra Access Cab', 2001);
3497
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3497, 'Toyota', 'Tundra Regular Cab', 2001);
3498
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3498, 'Volkswagen', 'Cabrio', 2001);
3499
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3499, 'Volkswagen', 'Eurovan', 2001);
3500
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3500, 'Volkswagen', 'Golf', 2001);
3501
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3501, 'Volkswagen', 'GTI', 2001);
3502
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3502, 'Volkswagen', 'Jetta', 2001);
3503
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3503, 'Volkswagen', 'New Beetle', 2001);
3504
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3504, 'Volkswagen', 'Passat', 2001);
3505
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3505, 'Volkswagen', 'Passat (New)', 2001);
3506
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3506, 'Volvo', 'C70', 2001);
3507
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3507, 'Volvo', 'S40', 2001);
3508
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3508, 'Volvo', 'S60', 2001);
3509
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3509, 'Volvo', 'S80', 2001);
3510
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3510, 'Volvo', 'V40', 2001);
3511
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3511, 'Volvo', 'V70', 2001);
3512
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3512, 'Acura', 'Integra', 2000);
3513
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3513, 'Acura', 'NSX', 2000);
3514
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3514, 'Acura', 'RL', 2000);
3515
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3515, 'Acura', 'TL', 2000);
3516
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3516, 'Audi', 'A4', 2000);
3517
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3517, 'Audi', 'A6', 2000);
3518
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3518, 'Audi', 'A8', 2000);
3519
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3519, 'Audi', 'S4', 2000);
3520
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3520, 'Audi', 'TT', 2000);
3521
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3521, 'BMW', '3 Series', 2000);
3522
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3522, 'BMW', '5 Series', 2000);
3523
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3523, 'BMW', '7 Series', 2000);
3524
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3524, 'BMW', 'M', 2000);
3525
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3525, 'BMW', 'M5', 2000);
3526
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3526, 'BMW', 'X5', 2000);
3527
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3527, 'BMW', 'Z3', 2000);
3528
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3528, 'BMW', 'Z8', 2000);
3529
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3529, 'Buick', 'Century', 2000);
3530
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3530, 'Buick', 'LeSabre', 2000);
3531
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3531, 'Buick', 'Park Avenue', 2000);
3532
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3532, 'Buick', 'Regal', 2000);
3533
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3533, 'Cadillac', 'Catera', 2000);
3534
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3534, 'Cadillac', 'DeVille', 2000);
3535
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3535, 'Cadillac', 'Eldorado', 2000);
3536
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3536, 'Cadillac', 'Escalade', 2000);
3537
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3537, 'Cadillac', 'Seville', 2000);
3538
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3538, 'Chevrolet', '2500 Crew Cab', 2000);
3539
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3539, 'Chevrolet', '2500 HD Extended Cab', 2000);
3540
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3540, 'Chevrolet', '2500 HD Regular Cab', 2000);
3541
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3541, 'Chevrolet', '3500 Crew Cab', 2000);
3542
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3542, 'Chevrolet', '3500 Extended Cab', 2000);
3543
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3543, 'Chevrolet', '3500 Regular Cab', 2000);
3544
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3544, 'Chevrolet', 'Astro Cargo', 2000);
3545
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3545, 'Chevrolet', 'Astro Passenger', 2000);
3546
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3546, 'Chevrolet', 'Blazer', 2000);
3547
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3547, 'Chevrolet', 'Camaro', 2000);
3548
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3548, 'Chevrolet', 'Cavalier', 2000);
3549
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3549, 'Chevrolet', 'Corvette', 2000);
3550
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3550, 'Chevrolet', 'Express 1500 Cargo', 2000);
3551
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3551, 'Chevrolet', 'Express 1500 Passenger', 2000);
3552
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3552, 'Chevrolet', 'Express 2500 Cargo', 2000);
3553
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3553, 'Chevrolet', 'Express 2500 Passenger', 2000);
3554
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3554, 'Chevrolet', 'Express 3500 Cargo', 2000);
3555
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3555, 'Chevrolet', 'Express 3500 Passenger', 2000);
3556
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3556, 'Chevrolet', 'Impala', 2000);
3557
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3557, 'Chevrolet', 'Lumina', 2000);
3558
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3558, 'Chevrolet', 'Malibu', 2000);
3559
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3559, 'Chevrolet', 'Metro', 2000);
3560
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3560, 'Chevrolet', 'Monte Carlo', 2000);
3561
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3561, 'Chevrolet', 'Prizm', 2000);
3562
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3562, 'Chevrolet', 'S10 Extended Cab', 2000);
3563
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3563, 'Chevrolet', 'S10 Regular Cab', 2000);
3564
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3564, 'Chevrolet', 'Silverado 1500 Extended Cab', 2000);
3565
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3565, 'Chevrolet', 'Silverado 1500 Regular Cab', 2000);
3566
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3566, 'Chevrolet', 'Silverado 2500 Extended Cab', 2000);
3567
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3567, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2000);
3568
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3568, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2000);
3569
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3569, 'Chevrolet', 'Silverado 2500 Regular Cab', 2000);
3570
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3570, 'Chevrolet', 'Suburban 1500', 2000);
3571
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3571, 'Chevrolet', 'Suburban 2500', 2000);
3572
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3572, 'Chevrolet', 'Tahoe', 2000);
3573
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3573, 'Chevrolet', 'Tahoe (New)', 2000);
3574
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3574, 'Chevrolet', 'Tracker', 2000);
3575
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3575, 'Chevrolet', 'Venture Cargo', 2000);
3576
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3576, 'Chevrolet', 'Venture Passenger', 2000);
3577
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3577, 'Chrysler', '300M', 2000);
3578
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3578, 'Chrysler', 'Cirrus', 2000);
3579
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3579, 'Chrysler', 'Concorde', 2000);
3580
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3580, 'Chrysler', 'Grand Voyager', 2000);
3581
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3581, 'Chrysler', 'LHS', 2000);
3582
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3582, 'Chrysler', 'Sebring', 2000);
3583
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3583, 'Chrysler', 'Town & Country', 2000);
3584
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3584, 'Chrysler', 'Voyager', 2000);
3585
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3585, 'Daewoo', 'Lanos', 2000);
3586
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3586, 'Daewoo', 'Leganza', 2000);
3587
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3587, 'Daewoo', 'Nubira', 2000);
3588
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3588, 'Dodge', 'Avenger', 2000);
3589
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3589, 'Dodge', 'Caravan Passenger', 2000);
3590
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3590, 'Dodge', 'Dakota Club Cab', 2000);
3591
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3591, 'Dodge', 'Dakota Quad Cab', 2000);
3592
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3592, 'Dodge', 'Dakota Regular Cab', 2000);
3593
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3593, 'Dodge', 'Durango', 2000);
3594
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3594, 'Dodge', 'Grand Caravan Passenger', 2000);
3595
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3595, 'Dodge', 'Intrepid', 2000);
3596
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3596, 'Dodge', 'Neon', 2000);
3597
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3597, 'Dodge', 'Ram 1500 Club Cab', 2000);
3598
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3598, 'Dodge', 'Ram 1500 Quad Cab', 2000);
3599
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3599, 'Dodge', 'Ram 1500 Regular Cab', 2000);
3600
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3600, 'Dodge', 'Ram 2500 Quad Cab', 2000);
3601
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3601, 'Dodge', 'Ram 2500 Regular Cab', 2000);
3602
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3602, 'Dodge', 'Ram 3500 Quad Cab', 2000);
3603
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3603, 'Dodge', 'Ram 3500 Regular Cab', 2000);
3604
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3604, 'Dodge', 'Ram Van 1500', 2000);
3605
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3605, 'Dodge', 'Ram Van 2500', 2000);
3606
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3606, 'Dodge', 'Ram Van 3500', 2000);
3607
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3607, 'Dodge', 'Ram Wagon 1500', 2000);
3608
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3608, 'Dodge', 'Ram Wagon 2500', 2000);
3609
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3609, 'Dodge', 'Ram Wagon 3500', 2000);
3610
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3610, 'Dodge', 'Stratus', 2000);
3611
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3611, 'Dodge', 'Viper', 2000);
3612
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3612, 'Ford', 'Contour', 2000);
3613
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3613, 'Ford', 'Crown Victoria', 2000);
3614
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3614, 'Ford', 'Econoline E150 Cargo', 2000);
3615
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3615, 'Ford', 'Econoline E150 Passenger', 2000);
3616
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3616, 'Ford', 'Econoline E250 Cargo', 2000);
3617
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3617, 'Ford', 'Econoline E350 Super Duty Cargo', 2000);
3618
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3618, 'Ford', 'Econoline E350 Super Duty Passenger', 2000);
3619
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3619, 'Ford', 'Escort', 2000);
3620
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3620, 'Ford', 'Excursion', 2000);
3621
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3621, 'Ford', 'Expedition', 2000);
3622
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3622, 'Ford', 'Explorer', 2000);
3623
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3623, 'Ford', 'Explorer Sport', 2000);
3624
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3624, 'Ford', 'F150 Regular Cab', 2000);
3625
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3625, 'Ford', 'F150 Super Cab', 2000);
3626
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3626, 'Ford', 'F250 Super Duty Crew Cab', 2000);
3627
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3627, 'Ford', 'F250 Super Duty Regular Cab', 2000);
3628
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3628, 'Ford', 'F250 Super Duty Super Cab', 2000);
3629
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3629, 'Ford', 'F350 Super Duty Crew Cab', 2000);
3630
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3630, 'Ford', 'F350 Super Duty Regular Cab', 2000);
3631
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3631, 'Ford', 'F350 Super Duty Super Cab', 2000);
3632
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3632, 'Ford', 'Focus', 2000);
3633
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3633, 'Ford', 'Mustang', 2000);
3634
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3634, 'Ford', 'Ranger Regular Cab', 2000);
3635
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3635, 'Ford', 'Ranger Super Cab', 2000);
3636
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3636, 'Ford', 'Taurus', 2000);
3637
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3637, 'Ford', 'Windstar Cargo', 2000);
3638
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3638, 'Ford', 'Windstar Passenger', 2000);
3639
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3639, 'GMC', 'Envoy', 2000);
3640
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3640, 'GMC', 'Jimmy', 2000);
3641
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3641, 'GMC', 'Safari Cargo', 2000);
3642
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3642, 'GMC', 'Safari Passenger', 2000);
3643
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3643, 'GMC', 'Savana 1500 Cargo', 2000);
3644
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3644, 'GMC', 'Savana 1500 Passenger', 2000);
3645
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3645, 'GMC', 'Savana 2500 Cargo', 2000);
3646
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3646, 'GMC', 'Savana 2500 Passenger', 2000);
3647
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3647, 'GMC', 'Savana 3500 Cargo', 2000);
3648
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3648, 'GMC', 'Savana 3500 Passenger', 2000);
3649
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3649, 'GMC', 'Sierra (Classic) 2500 Crew Cab', 2000);
3650
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3650, 'GMC', 'Sierra (Classic) 2500 HD Extended Cab', 2000);
3651
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3651, 'GMC', 'Sierra (Classic) 2500 HD Regular Cab', 2000);
3652
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3652, 'GMC', 'Sierra (Classic) 3500 Crew Cab', 2000);
3653
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3653, 'GMC', 'Sierra (Classic) 3500 Extended Cab', 2000);
3654
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3654, 'GMC', 'Sierra (Classic) 3500 Regular Cab', 2000);
3655
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3655, 'GMC', 'Sierra 1500 Extended Cab', 2000);
3656
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3656, 'GMC', 'Sierra 1500 Regular Cab', 2000);
3657
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3657, 'GMC', 'Sierra 2500 Extended Cab', 2000);
3658
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3658, 'GMC', 'Sierra 2500 HD Extended Cab', 2000);
3659
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3659, 'GMC', 'Sierra 2500 HD Regular Cab', 2000);
3660
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3660, 'GMC', 'Sierra 2500 Regular Cab', 2000);
3661
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3661, 'GMC', 'Sonoma Extended Cab', 2000);
3662
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3662, 'GMC', 'Sonoma Regular Cab', 2000);
3663
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3663, 'GMC', 'Yukon', 2000);
3664
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3664, 'GMC', 'Yukon Denali', 2000);
3665
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3665, 'GMC', 'Yukon XL 1500', 2000);
3666
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3666, 'GMC', 'Yukon XL 2500', 2000);
3667
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3667, 'Honda', 'Accord', 2000);
3668
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3668, 'Honda', 'Civic', 2000);
3669
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3669, 'Honda', 'CR-V', 2000);
3670
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3670, 'Honda', 'Insight', 2000);
3671
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3671, 'Honda', 'Odyssey', 2000);
3672
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3672, 'Honda', 'Passport', 2000);
3673
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3673, 'Honda', 'Prelude', 2000);
3674
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3674, 'Honda', 'S2000', 2000);
3675
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3675, 'HUMMER', 'H1', 2000);
3676
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3676, 'Hyundai', 'Accent', 2000);
3677
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3677, 'Hyundai', 'Elantra', 2000);
3678
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3678, 'Hyundai', 'Sonata', 2000);
3679
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3679, 'Hyundai', 'Tiburon', 2000);
3680
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3680, 'Infiniti', 'G', 2000);
3681
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3681, 'Infiniti', 'I', 2000);
3682
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3682, 'Infiniti', 'Q', 2000);
3683
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3683, 'Infiniti', 'QX', 2000);
3684
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3684, 'Isuzu', 'Amigo', 2000);
3685
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3685, 'Isuzu', 'Hombre Regular Cab', 2000);
3686
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3686, 'Isuzu', 'Hombre Spacecab', 2000);
3687
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3687, 'Isuzu', 'Rodeo', 2000);
3688
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3688, 'Isuzu', 'Trooper', 2000);
3689
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3689, 'Isuzu', 'VehiCROSS', 2000);
3690
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3690, 'Jaguar', 'S-Type', 2000);
3691
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3691, 'Jaguar', 'XJ Series', 2000);
3692
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3692, 'Jaguar', 'XK Series', 2000);
3693
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3693, 'Jeep', 'Cherokee', 2000);
3694
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3694, 'Jeep', 'Grand Cherokee', 2000);
3695
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3695, 'Jeep', 'Wrangler', 2000);
3696
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3696, 'Kia', 'Sephia', 2000);
3697
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3697, 'Kia', 'Spectra', 2000);
3698
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3698, 'Kia', 'Sportage', 2000);
3699
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3699, 'Land Rover', 'Discovery Series II', 2000);
3700
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3700, 'Land Rover', 'Range Rover', 2000);
3701
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3701, 'Lexus', 'ES', 2000);
3702
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3702, 'Lexus', 'GS', 2000);
3703
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3703, 'Lexus', 'LS', 2000);
3704
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3704, 'Lexus', 'LX', 2000);
3705
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3705, 'Lexus', 'RX', 2000);
3706
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3706, 'Lexus', 'SC', 2000);
3707
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3707, 'Lincoln', 'Continental', 2000);
3708
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3708, 'Lincoln', 'LS', 2000);
3709
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3709, 'Lincoln', 'Navigator', 2000);
3710
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3710, 'Lincoln', 'Town Car', 2000);
3711
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3711, 'Mazda', '626', 2000);
3712
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3712, 'Mazda', 'B-Series Cab Plus', 2000);
3713
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3713, 'Mazda', 'B-Series Regular Cab', 2000);
3714
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3714, 'Mazda', 'Miata MX-5', 2000);
3715
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3715, 'Mazda', 'Millenia', 2000);
3716
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3716, 'Mazda', 'MPV', 2000);
3717
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3717, 'Mazda', 'Protege', 2000);
3718
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3718, 'Mercedes-Benz', 'C-Class', 2000);
3719
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3719, 'Mercedes-Benz', 'CL-Class', 2000);
3720
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3720, 'Mercedes-Benz', 'CLK-Class', 2000);
3721
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3721, 'Mercedes-Benz', 'E-Class', 2000);
3722
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3722, 'Mercedes-Benz', 'M-Class', 2000);
3723
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3723, 'Mercedes-Benz', 'S-Class', 2000);
3724
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3724, 'Mercedes-Benz', 'SL-Class', 2000);
3725
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3725, 'Mercedes-Benz', 'SLK-Class', 2000);
3726
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3726, 'Mercury', 'Cougar', 2000);
3727
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3727, 'Mercury', 'Grand Marquis', 2000);
3728
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3728, 'Mercury', 'Mountaineer', 2000);
3729
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3729, 'Mercury', 'Mystique', 2000);
3730
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3730, 'Mercury', 'Sable', 2000);
3731
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3731, 'Mercury', 'Villager', 2000);
3732
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3732, 'Mitsubishi', 'Diamante', 2000);
3733
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3733, 'Mitsubishi', 'Eclipse', 2000);
3734
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3734, 'Mitsubishi', 'Galant', 2000);
3735
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3735, 'Mitsubishi', 'Mirage', 2000);
3736
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3736, 'Mitsubishi', 'Montero', 2000);
3737
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3737, 'Mitsubishi', 'Montero Sport', 2000);
3738
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3738, 'Nissan', 'Altima', 2000);
3739
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3739, 'Nissan', 'Frontier Crew Cab', 2000);
3740
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3740, 'Nissan', 'Frontier King Cab', 2000);
3741
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3741, 'Nissan', 'Frontier Regular Cab', 2000);
3742
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3742, 'Nissan', 'Maxima', 2000);
3743
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3743, 'Nissan', 'Pathfinder', 2000);
3744
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3744, 'Nissan', 'Quest', 2000);
3745
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3745, 'Nissan', 'Sentra', 2000);
3746
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3746, 'Nissan', 'Xterra', 2000);
3747
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3747, 'Oldsmobile', 'Alero', 2000);
3748
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3748, 'Oldsmobile', 'Bravada', 2000);
3749
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3749, 'Oldsmobile', 'Intrigue', 2000);
3750
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3750, 'Oldsmobile', 'Silhouette', 2000);
3751
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3751, 'Plymouth', 'Breeze', 2000);
3752
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3752, 'Plymouth', 'Grand Voyager', 2000);
3753
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3753, 'Plymouth', 'Neon', 2000);
3754
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3754, 'Plymouth', 'Prowler', 2000);
3755
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3755, 'Plymouth', 'Voyager', 2000);
3756
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3756, 'Pontiac', 'Bonneville', 2000);
3757
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3757, 'Pontiac', 'Firebird', 2000);
3758
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3758, 'Pontiac', 'Grand Am', 2000);
3759
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3759, 'Pontiac', 'Grand Prix', 2000);
3760
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3760, 'Pontiac', 'Montana', 2000);
3761
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3761, 'Pontiac', 'Sunfire', 2000);
3762
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3762, 'Porsche', '911', 2000);
3763
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3763, 'Porsche', 'Boxster', 2000);
3764
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3764, 'Saab', '9-3', 2000);
3765
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3765, 'Saab', '9-5', 2000);
3766
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3766, 'Saturn', 'L-Series', 2000);
3767
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3767, 'Saturn', 'S-Series', 2000);
3768
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3768, 'Subaru', 'Forester', 2000);
3769
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3769, 'Subaru', 'Impreza', 2000);
3770
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3770, 'Subaru', 'Legacy', 2000);
3771
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3771, 'Subaru', 'Outback', 2000);
3772
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3772, 'Suzuki', 'Esteem', 2000);
3773
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3773, 'Suzuki', 'Grand Vitara', 2000);
3774
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3774, 'Suzuki', 'Swift', 2000);
3775
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3775, 'Suzuki', 'Vitara', 2000);
3776
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3776, 'Toyota', '4Runner', 2000);
3777
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3777, 'Toyota', 'Avalon', 2000);
3778
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3778, 'Toyota', 'Camry', 2000);
3779
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3779, 'Toyota', 'Celica', 2000);
3780
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3780, 'Toyota', 'Corolla', 2000);
3781
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3781, 'Toyota', 'Echo', 2000);
3782
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3782, 'Toyota', 'Land Cruiser', 2000);
3783
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3783, 'Toyota', 'MR2', 2000);
3784
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3784, 'Toyota', 'RAV4', 2000);
3785
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3785, 'Toyota', 'Sienna', 2000);
3786
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3786, 'Toyota', 'Solara', 2000);
3787
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3787, 'Toyota', 'Tacoma Regular Cab', 2000);
3788
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3788, 'Toyota', 'Tacoma Xtracab', 2000);
3789
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3789, 'Toyota', 'Tundra Access Cab', 2000);
3790
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3790, 'Toyota', 'Tundra Regular Cab', 2000);
3791
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3791, 'Volkswagen', 'Cabrio', 2000);
3792
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3792, 'Volkswagen', 'Eurovan', 2000);
3793
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3793, 'Volkswagen', 'Golf', 2000);
3794
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3794, 'Volkswagen', 'GTI', 2000);
3795
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3795, 'Volkswagen', 'Jetta', 2000);
3796
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3796, 'Volkswagen', 'New Beetle', 2000);
3797
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3797, 'Volkswagen', 'Passat', 2000);
3798
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3798, 'Volvo', 'C70', 2000);
3799
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3799, 'Volvo', 'S40', 2000);
3800
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3800, 'Volvo', 'S70', 2000);
3801
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3801, 'Volvo', 'S80', 2000);
3802
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3802, 'Volvo', 'V40', 2000);
3803
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3803, 'Volvo', 'V70', 2000);
3804
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3804, 'Acura', 'CL', 1999);
3805
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3805, 'Acura', 'Integra', 1999);
3806
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3806, 'Acura', 'NSX', 1999);
3807
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3807, 'Acura', 'RL', 1999);
3808
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3808, 'Acura', 'SLX', 1999);
3809
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3809, 'Acura', 'TL', 1999);
3810
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3810, 'Audi', 'A4', 1999);
3811
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3811, 'Audi', 'A6', 1999);
3812
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3812, 'Audi', 'A8', 1999);
3813
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3813, 'BMW', '3 Series', 1999);
3814
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3814, 'BMW', '5 Series', 1999);
3815
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3815, 'BMW', '7 Series', 1999);
3816
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3816, 'BMW', 'M3', 1999);
3817
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3817, 'BMW', 'Z3', 1999);
3818
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3818, 'Buick', 'Century', 1999);
3819
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3819, 'Buick', 'LeSabre', 1999);
3820
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3820, 'Buick', 'Park Avenue', 1999);
3821
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3821, 'Buick', 'Regal', 1999);
3822
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3822, 'Buick', 'Riviera', 1999);
3823
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3823, 'Cadillac', 'Catera', 1999);
3824
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3824, 'Cadillac', 'DeVille', 1999);
3825
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3825, 'Cadillac', 'Eldorado', 1999);
3826
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3826, 'Cadillac', 'Escalade', 1999);
3827
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3827, 'Cadillac', 'Seville', 1999);
3828
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3828, 'Chevrolet', '1500 Extended Cab', 1999);
3829
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3829, 'Chevrolet', '2500 Crew Cab', 1999);
3830
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3830, 'Chevrolet', '2500 HD Extended Cab', 1999);
3831
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3831, 'Chevrolet', '2500 HD Regular Cab', 1999);
3832
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3832, 'Chevrolet', '3500 Crew Cab', 1999);
3833
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3833, 'Chevrolet', '3500 Extended Cab', 1999);
3834
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3834, 'Chevrolet', '3500 Regular Cab', 1999);
3835
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3835, 'Chevrolet', 'Astro Cargo', 1999);
3836
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3836, 'Chevrolet', 'Astro Passenger', 1999);
3837
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3837, 'Chevrolet', 'Blazer', 1999);
3838
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3838, 'Chevrolet', 'Camaro', 1999);
3839
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3839, 'Chevrolet', 'Cavalier', 1999);
3840
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3840, 'Chevrolet', 'Corvette', 1999);
3841
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3841, 'Chevrolet', 'Express 1500 Cargo', 1999);
3842
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3842, 'Chevrolet', 'Express 1500 Passenger', 1999);
3843
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3843, 'Chevrolet', 'Express 2500 Cargo', 1999);
3844
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3844, 'Chevrolet', 'Express 2500 Passenger', 1999);
3845
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3845, 'Chevrolet', 'Express 3500 Cargo', 1999);
3846
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3846, 'Chevrolet', 'Express 3500 Passenger', 1999);
3847
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3847, 'Chevrolet', 'Lumina', 1999);
3848
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3848, 'Chevrolet', 'Malibu', 1999);
3849
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3849, 'Chevrolet', 'Metro', 1999);
3850
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3850, 'Chevrolet', 'Monte Carlo', 1999);
3851
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3851, 'Chevrolet', 'Prizm', 1999);
3852
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3852, 'Chevrolet', 'S10 Extended Cab', 1999);
3853
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3853, 'Chevrolet', 'S10 Regular Cab', 1999);
3854
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3854, 'Chevrolet', 'Silverado 1500 Extended Cab', 1999);
3855
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3855, 'Chevrolet', 'Silverado 1500 Regular Cab', 1999);
3856
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3856, 'Chevrolet', 'Silverado 2500 Extended Cab', 1999);
3857
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3857, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 1999);
3858
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3858, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 1999);
3859
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3859, 'Chevrolet', 'Silverado 2500 Regular Cab', 1999);
3860
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3860, 'Chevrolet', 'Suburban 1500', 1999);
3861
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3861, 'Chevrolet', 'Suburban 2500', 1999);
3862
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3862, 'Chevrolet', 'Tahoe', 1999);
3863
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3863, 'Chevrolet', 'Tracker', 1999);
3864
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3864, 'Chevrolet', 'Venture Cargo', 1999);
3865
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3865, 'Chevrolet', 'Venture Passenger', 1999);
3866
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3866, 'Chrysler', '300', 1999);
3867
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3867, 'Chrysler', 'Cirrus', 1999);
3868
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3868, 'Chrysler', 'Concorde', 1999);
3869
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3869, 'Chrysler', 'LHS', 1999);
3870
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3870, 'Chrysler', 'Sebring', 1999);
3871
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3871, 'Chrysler', 'Town & Country', 1999);
3872
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3872, 'Daewoo', 'Lanos', 1999);
3873
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3873, 'Daewoo', 'Leganza', 1999);
3874
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3874, 'Daewoo', 'Nubira', 1999);
3875
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3875, 'Dodge', 'Avenger', 1999);
3876
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3876, 'Dodge', 'Caravan Passenger', 1999);
3877
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3877, 'Dodge', 'Dakota Club Cab', 1999);
3878
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3878, 'Dodge', 'Dakota Regular Cab', 1999);
3879
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3879, 'Dodge', 'Durango', 1999);
3880
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3880, 'Dodge', 'Grand Caravan Passenger', 1999);
3881
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3881, 'Dodge', 'Intrepid', 1999);
3882
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3882, 'Dodge', 'Neon', 1999);
3883
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3883, 'Dodge', 'Ram 1500 Club Cab', 1999);
3884
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3884, 'Dodge', 'Ram 1500 Quad Cab', 1999);
3885
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3885, 'Dodge', 'Ram 1500 Regular Cab', 1999);
3886
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3886, 'Dodge', 'Ram 2500 Club Cab', 1999);
3887
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3887, 'Dodge', 'Ram 2500 Quad Cab', 1999);
3888
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3888, 'Dodge', 'Ram 2500 Regular Cab', 1999);
3889
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3889, 'Dodge', 'Ram 3500 Quad Cab', 1999);
3890
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3890, 'Dodge', 'Ram 3500 Regular Cab', 1999);
3891
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3891, 'Dodge', 'Ram Van 1500', 1999);
3892
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3892, 'Dodge', 'Ram Van 2500', 1999);
3893
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3893, 'Dodge', 'Ram Van 3500', 1999);
3894
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3894, 'Dodge', 'Ram Wagon 1500', 1999);
3895
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3895, 'Dodge', 'Ram Wagon 2500', 1999);
3896
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3896, 'Dodge', 'Ram Wagon 3500', 1999);
3897
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3897, 'Dodge', 'Stratus', 1999);
3898
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3898, 'Dodge', 'Viper', 1999);
3899
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3899, 'Ford', 'Contour', 1999);
3900
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3900, 'Ford', 'Crown Victoria', 1999);
3901
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3901, 'Ford', 'Econoline E150 Cargo', 1999);
3902
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3902, 'Ford', 'Econoline E150 Passenger', 1999);
3903
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3903, 'Ford', 'Econoline E250 Cargo', 1999);
3904
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3904, 'Ford', 'Econoline E350 Cargo', 1999);
3905
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3905, 'Ford', 'Econoline E350 Super Duty Cargo', 1999);
3906
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3906, 'Ford', 'Econoline E350 Super Duty Passenger', 1999);
3907
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3907, 'Ford', 'Escort', 1999);
3908
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3908, 'Ford', 'Expedition', 1999);
3909
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3909, 'Ford', 'Explorer', 1999);
3910
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3910, 'Ford', 'F150 Regular Cab', 1999);
3911
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3911, 'Ford', 'F150 Super Cab', 1999);
3912
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3912, 'Ford', 'F250 Regular Cab', 1999);
3913
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3913, 'Ford', 'F250 Super Cab', 1999);
3914
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3914, 'Ford', 'F250 Super Duty Crew Cab', 1999);
3915
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3915, 'Ford', 'F250 Super Duty Regular Cab', 1999);
3916
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3916, 'Ford', 'F250 Super Duty Super Cab', 1999);
3917
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3917, 'Ford', 'F350 Super Duty Crew Cab', 1999);
3918
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3918, 'Ford', 'F350 Super Duty Regular Cab', 1999);
3919
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3919, 'Ford', 'F350 Super Duty Super Cab', 1999);
3920
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3920, 'Ford', 'Mustang', 1999);
3921
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3921, 'Ford', 'Ranger Regular Cab', 1999);
3922
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3922, 'Ford', 'Ranger Super Cab', 1999);
3923
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3923, 'Ford', 'Taurus', 1999);
3924
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3924, 'Ford', 'Windstar Cargo', 1999);
3925
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3925, 'Ford', 'Windstar Passenger', 1999);
3926
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3926, 'GMC', '1500 Club Coupe', 1999);
3927
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3927, 'GMC', '2500 Crew Cab', 1999);
3928
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3928, 'GMC', '2500 HD Extended Cab', 1999);
3929
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3929, 'GMC', '2500 HD Regular Cab', 1999);
3930
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3930, 'GMC', '3500 Crew Cab', 1999);
3931
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3931, 'GMC', '3500 Extended Cab', 1999);
3932
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3932, 'GMC', '3500 Regular Cab', 1999);
3933
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3933, 'GMC', 'Envoy', 1999);
3934
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3934, 'GMC', 'Jimmy', 1999);
3935
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3935, 'GMC', 'Safari Cargo', 1999);
3936
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3936, 'GMC', 'Safari Passenger', 1999);
3937
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3937, 'GMC', 'Savana 1500 Cargo', 1999);
3938
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3938, 'GMC', 'Savana 1500 Passenger', 1999);
3939
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3939, 'GMC', 'Savana 2500 Cargo', 1999);
3940
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3940, 'GMC', 'Savana 2500 Passenger', 1999);
3941
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3941, 'GMC', 'Savana 3500 Cargo', 1999);
3942
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3942, 'GMC', 'Savana 3500 Passenger', 1999);
3943
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3943, 'GMC', 'Sierra 1500 Extended Cab', 1999);
3944
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3944, 'GMC', 'Sierra 1500 Regular Cab', 1999);
3945
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3945, 'GMC', 'Sierra 2500 Extended Cab', 1999);
3946
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3946, 'GMC', 'Sierra 2500 HD Extended Cab', 1999);
3947
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3947, 'GMC', 'Sierra 2500 HD Regular Cab', 1999);
3948
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3948, 'GMC', 'Sierra 2500 Regular Cab', 1999);
3949
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3949, 'GMC', 'Sonoma Extended Cab', 1999);
3950
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3950, 'GMC', 'Sonoma Regular Cab', 1999);
3951
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3951, 'GMC', 'Suburban 1500', 1999);
3952
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3952, 'GMC', 'Suburban 2500', 1999);
3953
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3953, 'GMC', 'Yukon', 1999);
3954
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3954, 'Honda', 'Accord', 1999);
3955
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3955, 'Honda', 'Civic', 1999);
3956
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3956, 'Honda', 'CR-V', 1999);
3957
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3957, 'Honda', 'Odyssey', 1999);
3958
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3958, 'Honda', 'Passport', 1999);
3959
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3959, 'Honda', 'Prelude', 1999);
3960
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3960, 'HUMMER', 'H1', 1999);
3961
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3961, 'Hyundai', 'Accent', 1999);
3962
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3962, 'Hyundai', 'Elantra', 1999);
3963
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3963, 'Hyundai', 'Sonata', 1999);
3964
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3964, 'Hyundai', 'Tiburon', 1999);
3965
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3965, 'Infiniti', 'G', 1999);
3966
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3966, 'Infiniti', 'I', 1999);
3967
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3967, 'Infiniti', 'Q', 1999);
3968
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3968, 'Infiniti', 'QX', 1999);
3969
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3969, 'Isuzu', 'Amigo', 1999);
3970
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3970, 'Isuzu', 'Hombre Regular Cab', 1999);
3971
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3971, 'Isuzu', 'Hombre Spacecab', 1999);
3972
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3972, 'Isuzu', 'Oasis', 1999);
3973
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3973, 'Isuzu', 'Rodeo', 1999);
3974
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3974, 'Isuzu', 'Trooper', 1999);
3975
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3975, 'Isuzu', 'VehiCROSS', 1999);
3976
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3976, 'Jaguar', 'XJ Series', 1999);
3977
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3977, 'Jaguar', 'XK Series', 1999);
3978
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3978, 'Jeep', 'Cherokee', 1999);
3979
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3979, 'Jeep', 'Grand Cherokee', 1999);
3980
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3980, 'Jeep', 'Wrangler', 1999);
3981
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3981, 'Kia', 'Sephia', 1999);
3982
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3982, 'Kia', 'Sportage', 1999);
3983
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3983, 'Land Rover', 'Discovery', 1999);
3984
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3984, 'Land Rover', 'Discovery Series II', 1999);
3985
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3985, 'Land Rover', 'Range Rover', 1999);
3986
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3986, 'Lexus', 'ES', 1999);
3987
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3987, 'Lexus', 'GS', 1999);
3988
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3988, 'Lexus', 'LS', 1999);
3989
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3989, 'Lexus', 'LX', 1999);
3990
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3990, 'Lexus', 'RX', 1999);
3991
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3991, 'Lexus', 'SC', 1999);
3992
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3992, 'Lincoln', 'Continental', 1999);
3993
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3993, 'Lincoln', 'Navigator', 1999);
3994
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3994, 'Lincoln', 'Town Car', 1999);
3995
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3995, 'Mazda', '626', 1999);
3996
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3996, 'Mazda', 'B-Series Cab Plus', 1999);
3997
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3997, 'Mazda', 'B-Series Regular Cab', 1999);
3998
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3998, 'Mazda', 'Miata MX-5', 1999);
3999
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3999, 'Mazda', 'Millenia', 1999);
4000
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4000, 'Mazda', 'Protege', 1999);
4001
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4001, 'Mercedes-Benz', 'C-Class', 1999);
4002
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4002, 'Mercedes-Benz', 'CL-Class', 1999);
4003
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4003, 'Mercedes-Benz', 'CLK-Class', 1999);
4004
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4004, 'Mercedes-Benz', 'E-Class', 1999);
4005
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4005, 'Mercedes-Benz', 'M-Class', 1999);
4006
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4006, 'Mercedes-Benz', 'S-Class', 1999);
4007
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4007, 'Mercedes-Benz', 'SL-Class', 1999);
4008
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4008, 'Mercedes-Benz', 'SLK-Class', 1999);
4009
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4009, 'Mercury', 'Cougar', 1999);
4010
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4010, 'Mercury', 'Grand Marquis', 1999);
4011
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4011, 'Mercury', 'Mountaineer', 1999);
4012
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4012, 'Mercury', 'Mystique', 1999);
4013
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4013, 'Mercury', 'Sable', 1999);
4014
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4014, 'Mercury', 'Tracer', 1999);
4015
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4015, 'Mercury', 'Villager', 1999);
4016
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4016, 'Mitsubishi', '3000GT', 1999);
4017
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4017, 'Mitsubishi', 'Diamante', 1999);
4018
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4018, 'Mitsubishi', 'Eclipse', 1999);
4019
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4019, 'Mitsubishi', 'Galant', 1999);
4020
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4020, 'Mitsubishi', 'Mirage', 1999);
4021
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4021, 'Mitsubishi', 'Montero', 1999);
4022
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4022, 'Mitsubishi', 'Montero Sport', 1999);
4023
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4023, 'Nissan', 'Altima', 1999);
4024
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4024, 'Nissan', 'Frontier King Cab', 1999);
4025
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4025, 'Nissan', 'Frontier Regular Cab', 1999);
4026
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4026, 'Nissan', 'Maxima', 1999);
4027
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4027, 'Nissan', 'Pathfinder', 1999);
4028
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4028, 'Nissan', 'Quest', 1999);
4029
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4029, 'Nissan', 'Sentra', 1999);
4030
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4030, 'Oldsmobile', '88', 1999);
4031
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4031, 'Oldsmobile', 'Alero', 1999);
4032
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4032, 'Oldsmobile', 'Aurora', 1999);
4033
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4033, 'Oldsmobile', 'Bravada', 1999);
4034
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4034, 'Oldsmobile', 'Cutlass', 1999);
4035
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4035, 'Oldsmobile', 'Intrigue', 1999);
4036
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4036, 'Oldsmobile', 'LSS', 1999);
4037
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4037, 'Oldsmobile', 'Silhouette', 1999);
4038
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4038, 'Plymouth', 'Breeze', 1999);
4039
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4039, 'Plymouth', 'Grand Voyager', 1999);
4040
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4040, 'Plymouth', 'Neon', 1999);
4041
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4041, 'Plymouth', 'Prowler', 1999);
4042
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4042, 'Plymouth', 'Voyager', 1999);
4043
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4043, 'Pontiac', 'Bonneville', 1999);
4044
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4044, 'Pontiac', 'Firebird', 1999);
4045
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4045, 'Pontiac', 'Grand Am', 1999);
4046
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4046, 'Pontiac', 'Grand Prix', 1999);
4047
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4047, 'Pontiac', 'Montana', 1999);
4048
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4048, 'Pontiac', 'Sunfire', 1999);
4049
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4049, 'Porsche', '911', 1999);
4050
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4050, 'Porsche', 'Boxster', 1999);
4051
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4051, 'Saab', '9-3', 1999);
4052
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4052, 'Saab', '9-5', 1999);
4053
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4053, 'Saturn', 'S-Series', 1999);
4054
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4054, 'Subaru', 'Forester', 1999);
4055
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4055, 'Subaru', 'Impreza', 1999);
4056
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4056, 'Subaru', 'Legacy', 1999);
4057
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4057, 'Suzuki', 'Esteem', 1999);
4058
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4058, 'Suzuki', 'Grand Vitara', 1999);
4059
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4059, 'Suzuki', 'Swift', 1999);
4060
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4060, 'Suzuki', 'Vitara', 1999);
4061
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4061, 'Toyota', '4Runner', 1999);
4062
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4062, 'Toyota', 'Avalon', 1999);
4063
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4063, 'Toyota', 'Camry', 1999);
4064
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4064, 'Toyota', 'Celica', 1999);
4065
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4065, 'Toyota', 'Corolla', 1999);
4066
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4066, 'Toyota', 'Land Cruiser', 1999);
4067
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4067, 'Toyota', 'RAV4', 1999);
4068
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4068, 'Toyota', 'Sienna', 1999);
4069
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4069, 'Toyota', 'Solara', 1999);
4070
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4070, 'Toyota', 'Tacoma Regular Cab', 1999);
4071
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4071, 'Toyota', 'Tacoma Xtracab', 1999);
4072
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4072, 'Volkswagen', 'Cabrio', 1999);
4073
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4073, 'Volkswagen', 'Cabrio (New)', 1999);
4074
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4074, 'Volkswagen', 'Eurovan', 1999);
4075
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4075, 'Volkswagen', 'Golf', 1999);
4076
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4076, 'Volkswagen', 'Golf (New)', 1999);
4077
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4077, 'Volkswagen', 'GTI (New)', 1999);
4078
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4078, 'Volkswagen', 'Jetta', 1999);
4079
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4079, 'Volkswagen', 'Jetta (New)', 1999);
4080
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4080, 'Volkswagen', 'New Beetle', 1999);
4081
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4081, 'Volkswagen', 'Passat', 1999);
4082
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4082, 'Volvo', 'C70', 1999);
4083
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4083, 'Volvo', 'S70', 1999);
4084
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4084, 'Volvo', 'S80', 1999);
4085
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4085, 'Volvo', 'V70', 1999);
4086
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4086, 'Acura', 'CL', 1998);
4087
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4087, 'Acura', 'Integra', 1998);
4088
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4088, 'Acura', 'NSX', 1998);
4089
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4089, 'Acura', 'RL', 1998);
4090
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4090, 'Acura', 'SLX', 1998);
4091
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4091, 'Acura', 'TL', 1998);
4092
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4092, 'Audi', 'A4', 1998);
4093
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4093, 'Audi', 'A6', 1998);
4094
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4094, 'Audi', 'A8', 1998);
4095
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4095, 'Audi', 'Cabriolet', 1998);
4096
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4096, 'BMW', '3 Series', 1998);
4097
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4097, 'BMW', '5 Series', 1998);
4098
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4098, 'BMW', '7 Series', 1998);
4099
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4099, 'BMW', 'M3', 1998);
4100
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4100, 'BMW', 'Z3', 1998);
4101
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4101, 'Buick', 'Century', 1998);
4102
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4102, 'Buick', 'LeSabre', 1998);
4103
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4103, 'Buick', 'Park Avenue', 1998);
4104
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4104, 'Buick', 'Regal', 1998);
4105
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4105, 'Buick', 'Riviera', 1998);
4106
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4106, 'Buick', 'Skylark', 1998);
4107
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4107, 'Cadillac', 'Catera', 1998);
4108
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4108, 'Cadillac', 'DeVille', 1998);
4109
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4109, 'Cadillac', 'Eldorado', 1998);
4110
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4110, 'Cadillac', 'Seville', 1998);
4111
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4111, 'Chevrolet', '1500 Extended Cab', 1998);
4112
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4112, 'Chevrolet', '1500 Regular Cab', 1998);
4113
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4113, 'Chevrolet', '2500 Extended Cab', 1998);
4114
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4114, 'Chevrolet', '2500 HD Extended Cab', 1998);
4115
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4115, 'Chevrolet', '2500 Regular Cab', 1998);
4116
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4116, 'Chevrolet', '3500 Crew Cab', 1998);
4117
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4117, 'Chevrolet', '3500 Extended Cab', 1998);
4118
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4118, 'Chevrolet', '3500 Regular Cab', 1998);
4119
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4119, 'Chevrolet', 'Astro Cargo', 1998);
4120
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4120, 'Chevrolet', 'Astro Passenger', 1998);
4121
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4121, 'Chevrolet', 'Blazer', 1998);
4122
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4122, 'Chevrolet', 'Camaro', 1998);
4123
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4123, 'Chevrolet', 'Cavalier', 1998);
4124
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4124, 'Chevrolet', 'Corvette', 1998);
4125
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4125, 'Chevrolet', 'Express 1500 Passenger', 1998);
4126
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4126, 'Chevrolet', 'Express 2500 Passenger', 1998);
4127
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4127, 'Chevrolet', 'Express 3500 Passenger', 1998);
4128
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4128, 'Chevrolet', 'G-Series 1500', 1998);
4129
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4129, 'Chevrolet', 'G-Series 2500', 1998);
4130
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4130, 'Chevrolet', 'G-Series 3500', 1998);
4131
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4131, 'Chevrolet', 'Lumina', 1998);
4132
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4132, 'Chevrolet', 'Malibu', 1998);
4133
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4133, 'Chevrolet', 'Metro', 1998);
4134
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4134, 'Chevrolet', 'Monte Carlo', 1998);
4135
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4135, 'Chevrolet', 'Prizm', 1998);
4136
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4136, 'Chevrolet', 'S10 Extended Cab', 1998);
4137
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4137, 'Chevrolet', 'S10 Regular Cab', 1998);
4138
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4138, 'Chevrolet', 'Suburban 1500', 1998);
4139
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4139, 'Chevrolet', 'Suburban 2500', 1998);
4140
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4140, 'Chevrolet', 'Tahoe', 1998);
4141
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4141, 'Chevrolet', 'Tracker', 1998);
4142
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4142, 'Chevrolet', 'Venture Cargo', 1998);
4143
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4143, 'Chevrolet', 'Venture Passenger', 1998);
4144
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4144, 'Chrysler', 'Cirrus', 1998);
4145
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4145, 'Chrysler', 'Concorde', 1998);
4146
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4146, 'Chrysler', 'Sebring', 1998);
4147
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4147, 'Chrysler', 'Town & Country', 1998);
4148
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4148, 'Dodge', 'Avenger', 1998);
4149
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4149, 'Dodge', 'Caravan Passenger', 1998);
4150
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4150, 'Dodge', 'Dakota Club Cab', 1998);
4151
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4151, 'Dodge', 'Dakota Regular Cab', 1998);
4152
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4152, 'Dodge', 'Durango', 1998);
4153
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4153, 'Dodge', 'Grand Caravan Passenger', 1998);
4154
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4154, 'Dodge', 'Intrepid', 1998);
4155
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4155, 'Dodge', 'Neon', 1998);
4156
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4156, 'Dodge', 'Ram 1500 Club Cab', 1998);
4157
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4157, 'Dodge', 'Ram 1500 Quad Cab', 1998);
4158
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4158, 'Dodge', 'Ram 1500 Regular Cab', 1998);
4159
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4159, 'Dodge', 'Ram 2500 Club Cab', 1998);
4160
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4160, 'Dodge', 'Ram 2500 Quad Cab', 1998);
4161
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4161, 'Dodge', 'Ram 2500 Regular Cab', 1998);
4162
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4162, 'Dodge', 'Ram 3500 Quad Cab', 1998);
4163
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4163, 'Dodge', 'Ram 3500 Regular Cab', 1998);
4164
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4164, 'Dodge', 'Ram Van 1500', 1998);
4165
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4165, 'Dodge', 'Ram Van 2500', 1998);
4166
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4166, 'Dodge', 'Ram Van 3500', 1998);
4167
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4167, 'Dodge', 'Ram Wagon 1500', 1998);
4168
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4168, 'Dodge', 'Ram Wagon 2500', 1998);
4169
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4169, 'Dodge', 'Ram Wagon 3500', 1998);
4170
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4170, 'Dodge', 'Stratus', 1998);
4171
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4171, 'Dodge', 'Viper', 1998);
4172
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4172, 'Eagle', 'Talon', 1998);
4173
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4173, 'Ford', 'Club Wagon', 1998);
4174
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4174, 'Ford', 'Contour', 1998);
4175
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4175, 'Ford', 'Crown Victoria', 1998);
4176
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4176, 'Ford', 'Econoline E150 Cargo', 1998);
4177
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4177, 'Ford', 'Econoline E250 Cargo', 1998);
4178
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4178, 'Ford', 'Econoline E350 Cargo', 1998);
4179
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4179, 'Ford', 'Escort', 1998);
4180
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4180, 'Ford', 'Expedition', 1998);
4181
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4181, 'Ford', 'Explorer', 1998);
4182
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4182, 'Ford', 'F150 Regular Cab', 1998);
4183
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4183, 'Ford', 'F150 Super Cab', 1998);
4184
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4184, 'Ford', 'F250 Regular Cab', 1998);
4185
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4185, 'Ford', 'F250 Super Cab', 1998);
4186
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4186, 'Ford', 'Mustang', 1998);
4187
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4187, 'Ford', 'Ranger Regular Cab', 1998);
4188
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4188, 'Ford', 'Ranger Super Cab', 1998);
4189
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4189, 'Ford', 'Taurus', 1998);
4190
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4190, 'Ford', 'Windstar Cargo', 1998);
4191
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4191, 'Ford', 'Windstar Passenger', 1998);
4192
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4192, 'GMC', '1500 Club Coupe', 1998);
4193
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4193, 'GMC', '1500 Regular Cab', 1998);
4194
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4194, 'GMC', '2500 Club Coupe', 1998);
4195
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4195, 'GMC', '2500 HD Club Coupe', 1998);
4196
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4196, 'GMC', '2500 Regular Cab', 1998);
4197
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4197, 'GMC', '3500 Club Coupe', 1998);
4198
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4198, 'GMC', '3500 Crew Cab', 1998);
4199
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4199, 'GMC', '3500 Regular Cab', 1998);
4200
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4200, 'GMC', 'Envoy', 1998);
4201
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4201, 'GMC', 'Jimmy', 1998);
4202
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4202, 'GMC', 'Safari Cargo', 1998);
4203
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4203, 'GMC', 'Safari Passenger', 1998);
4204
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4204, 'GMC', 'Savana 1500 Cargo', 1998);
4205
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4205, 'GMC', 'Savana 1500 Passenger', 1998);
4206
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4206, 'GMC', 'Savana 2500 Cargo', 1998);
4207
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4207, 'GMC', 'Savana 2500 Passenger', 1998);
4208
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4208, 'GMC', 'Savana 3500 Cargo', 1998);
4209
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4209, 'GMC', 'Savana 3500 Passenger', 1998);
4210
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4210, 'GMC', 'Sonoma Club Coupe Cab', 1998);
4211
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4211, 'GMC', 'Sonoma Regular Cab', 1998);
4212
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4212, 'GMC', 'Suburban 1500', 1998);
4213
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4213, 'GMC', 'Suburban 2500', 1998);
4214
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4214, 'GMC', 'Yukon', 1998);
4215
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4215, 'Honda', 'Accord', 1998);
4216
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4216, 'Honda', 'Civic', 1998);
4217
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4217, 'Honda', 'CR-V', 1998);
4218
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4218, 'Honda', 'Odyssey', 1998);
4219
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4219, 'Honda', 'Passport', 1998);
4220
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4220, 'Honda', 'Prelude', 1998);
4221
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4221, 'HUMMER', 'H1', 1998);
4222
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4222, 'Hyundai', 'Accent', 1998);
4223
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4223, 'Hyundai', 'Elantra', 1998);
4224
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4224, 'Hyundai', 'Sonata', 1998);
4225
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4225, 'Hyundai', 'Tiburon', 1998);
4226
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4226, 'Infiniti', 'I', 1998);
4227
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4227, 'Infiniti', 'Q', 1998);
4228
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4228, 'Infiniti', 'QX', 1998);
4229
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4229, 'Isuzu', 'Amigo', 1998);
4230
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4230, 'Isuzu', 'Hombre Regular Cab', 1998);
4231
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4231, 'Isuzu', 'Hombre Spacecab', 1998);
4232
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4232, 'Isuzu', 'Oasis', 1998);
4233
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4233, 'Isuzu', 'Rodeo', 1998);
4234
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4234, 'Isuzu', 'Trooper', 1998);
4235
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4235, 'Jaguar', 'XJ Series', 1998);
4236
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4236, 'Jaguar', 'XK Series', 1998);
4237
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4237, 'Jeep', 'Cherokee', 1998);
4238
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4238, 'Jeep', 'Grand Cherokee', 1998);
4239
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4239, 'Jeep', 'Wrangler', 1998);
4240
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4240, 'Kia', 'Sephia', 1998);
4241
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4241, 'Kia', 'Sportage', 1998);
4242
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4242, 'Land Rover', 'Discovery', 1998);
4243
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4243, 'Land Rover', 'Range Rover', 1998);
4244
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4244, 'Lexus', 'ES', 1998);
4245
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4245, 'Lexus', 'GS', 1998);
4246
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4246, 'Lexus', 'LS', 1998);
4247
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4247, 'Lexus', 'LX', 1998);
4248
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4248, 'Lexus', 'SC', 1998);
4249
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4249, 'Lincoln', 'Continental', 1998);
4250
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4250, 'Lincoln', 'Mark VIII', 1998);
4251
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4251, 'Lincoln', 'Navigator', 1998);
4252
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4252, 'Lincoln', 'Town Car', 1998);
4253
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4253, 'Mazda', '626', 1998);
4254
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4254, 'Mazda', 'B-Series Cab Plus', 1998);
4255
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4255, 'Mazda', 'B-Series Regular Cab', 1998);
4256
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4256, 'Mazda', 'Millenia', 1998);
4257
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4257, 'Mazda', 'MPV', 1998);
4258
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4258, 'Mazda', 'Protege', 1998);
4259
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4259, 'Mercedes-Benz', 'C-Class', 1998);
4260
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4260, 'Mercedes-Benz', 'CL-Class', 1998);
4261
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4261, 'Mercedes-Benz', 'CLK-Class', 1998);
4262
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4262, 'Mercedes-Benz', 'E-Class', 1998);
4263
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4263, 'Mercedes-Benz', 'M-Class', 1998);
4264
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4264, 'Mercedes-Benz', 'S-Class', 1998);
4265
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4265, 'Mercedes-Benz', 'SL-Class', 1998);
4266
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4266, 'Mercedes-Benz', 'SLK-Class', 1998);
4267
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4267, 'Mercury', 'Grand Marquis', 1998);
4268
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4268, 'Mercury', 'Mountaineer', 1998);
4269
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4269, 'Mercury', 'Mystique', 1998);
4270
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4270, 'Mercury', 'Sable', 1998);
4271
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4271, 'Mercury', 'Tracer', 1998);
4272
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4272, 'Mercury', 'Villager', 1998);
4273
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4273, 'Mitsubishi', '3000GT', 1998);
4274
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4274, 'Mitsubishi', 'Diamante', 1998);
4275
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4275, 'Mitsubishi', 'Eclipse', 1998);
4276
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4276, 'Mitsubishi', 'Galant', 1998);
4277
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4277, 'Mitsubishi', 'Mirage', 1998);
4278
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4278, 'Mitsubishi', 'Montero', 1998);
4279
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4279, 'Mitsubishi', 'Montero Sport', 1998);
4280
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4280, 'Nissan', '200SX', 1998);
4281
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4281, 'Nissan', '240SX', 1998);
4282
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4282, 'Nissan', 'Altima', 1998);
4283
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4283, 'Nissan', 'Frontier King Cab', 1998);
4284
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4284, 'Nissan', 'Frontier Regular Cab', 1998);
4285
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4285, 'Nissan', 'Maxima', 1998);
4286
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4286, 'Nissan', 'Pathfinder', 1998);
4287
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4287, 'Nissan', 'Quest', 1998);
4288
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4288, 'Nissan', 'Sentra', 1998);
4289
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4289, 'Oldsmobile', '88', 1998);
4290
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4290, 'Oldsmobile', 'Achieva', 1998);
4291
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4291, 'Oldsmobile', 'Aurora', 1998);
4292
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4292, 'Oldsmobile', 'Bravada', 1998);
4293
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4293, 'Oldsmobile', 'Cutlass', 1998);
4294
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4294, 'Oldsmobile', 'Intrigue', 1998);
4295
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4295, 'Oldsmobile', 'LSS', 1998);
4296
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4296, 'Oldsmobile', 'Regency', 1998);
4297
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4297, 'Oldsmobile', 'Silhouette', 1998);
4298
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4298, 'Plymouth', 'Breeze', 1998);
4299
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4299, 'Plymouth', 'Grand Voyager', 1998);
4300
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4300, 'Plymouth', 'Neon', 1998);
4301
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4301, 'Plymouth', 'Voyager', 1998);
4302
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4302, 'Pontiac', 'Bonneville', 1998);
4303
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4303, 'Pontiac', 'Firebird', 1998);
4304
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4304, 'Pontiac', 'Grand Am', 1998);
4305
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4305, 'Pontiac', 'Grand Prix', 1998);
4306
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4306, 'Pontiac', 'Sunfire', 1998);
4307
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4307, 'Pontiac', 'Trans Sport', 1998);
4308
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4308, 'Porsche', '911', 1998);
4309
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4309, 'Porsche', 'Boxster', 1998);
4310
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4310, 'Saab', '900', 1998);
4311
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4311, 'Saab', '9000', 1998);
4312
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4312, 'Saturn', 'S-Series', 1998);
4313
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4313, 'Subaru', 'Forester', 1998);
4314
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4314, 'Subaru', 'Impreza', 1998);
4315
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4315, 'Subaru', 'Legacy', 1998);
4316
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4316, 'Suzuki', 'Esteem', 1998);
4317
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4317, 'Suzuki', 'Sidekick', 1998);
4318
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4318, 'Suzuki', 'Swift', 1998);
4319
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4319, 'Suzuki', 'X-90', 1998);
4320
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4320, 'Toyota', '4Runner', 1998);
4321
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4321, 'Toyota', 'Avalon', 1998);
4322
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4322, 'Toyota', 'Camry', 1998);
4323
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4323, 'Toyota', 'Celica', 1998);
4324
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4324, 'Toyota', 'Corolla', 1998);
4325
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4325, 'Toyota', 'Land Cruiser', 1998);
4326
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4326, 'Toyota', 'RAV4', 1998);
4327
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4327, 'Toyota', 'Sienna', 1998);
4328
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4328, 'Toyota', 'Supra', 1998);
4329
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4329, 'Toyota', 'T100 Regular Cab', 1998);
4330
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4330, 'Toyota', 'T100 Xtracab', 1998);
4331
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4331, 'Toyota', 'Tacoma Regular Cab', 1998);
4332
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4332, 'Toyota', 'Tacoma Xtracab', 1998);
4333
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4333, 'Toyota', 'Tercel', 1998);
4334
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4334, 'Volkswagen', 'Cabrio', 1998);
4335
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4335, 'Volkswagen', 'Golf', 1998);
4336
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4336, 'Volkswagen', 'Jetta', 1998);
4337
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4337, 'Volkswagen', 'New Beetle', 1998);
4338
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4338, 'Volkswagen', 'Passat', 1998);
4339
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4339, 'Volvo', 'C70', 1998);
4340
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4340, 'Volvo', 'S70', 1998);
4341
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4341, 'Volvo', 'S90', 1998);
4342
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4342, 'Volvo', 'V70', 1998);
4343
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4343, 'Volvo', 'V90', 1998);
4344
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4344, 'Acura', 'CL', 1997);
4345
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4345, 'Acura', 'Integra', 1997);
4346
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4346, 'Acura', 'NSX', 1997);
4347
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4347, 'Acura', 'RL', 1997);
4348
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4348, 'Acura', 'SLX', 1997);
4349
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4349, 'Acura', 'TL', 1997);
4350
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4350, 'Audi', 'A4', 1997);
4351
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4351, 'Audi', 'A6', 1997);
4352
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4352, 'Audi', 'A8', 1997);
4353
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4353, 'Audi', 'Cabriolet', 1997);
4354
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4354, 'BMW', '3 Series', 1997);
4355
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4355, 'BMW', '5 Series', 1997);
4356
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4356, 'BMW', '7 Series', 1997);
4357
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4357, 'BMW', '8 Series', 1997);
4358
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4358, 'BMW', 'M3', 1997);
4359
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4359, 'BMW', 'Z3', 1997);
4360
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4360, 'Buick', 'Century', 1997);
4361
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4361, 'Buick', 'LeSabre', 1997);
4362
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4362, 'Buick', 'Park Avenue', 1997);
4363
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4363, 'Buick', 'Regal', 1997);
4364
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4364, 'Buick', 'Riviera', 1997);
4365
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4365, 'Buick', 'Skylark', 1997);
4366
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4366, 'Cadillac', 'Catera', 1997);
4367
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4367, 'Cadillac', 'DeVille', 1997);
4368
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4368, 'Cadillac', 'Eldorado', 1997);
4369
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4369, 'Cadillac', 'Seville', 1997);
4370
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4370, 'Chevrolet', '1500 Extended Cab', 1997);
4371
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4371, 'Chevrolet', '1500 Regular Cab', 1997);
4372
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4372, 'Chevrolet', '2500 Extended Cab', 1997);
4373
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4373, 'Chevrolet', '2500 HD Extended Cab', 1997);
4374
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4374, 'Chevrolet', '2500 Regular Cab', 1997);
4375
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4375, 'Chevrolet', '3500 Crew Cab', 1997);
4376
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4376, 'Chevrolet', '3500 Extended Cab', 1997);
4377
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4377, 'Chevrolet', '3500 Regular Cab', 1997);
4378
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4378, 'Chevrolet', 'Astro Cargo', 1997);
4379
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4379, 'Chevrolet', 'Astro Passenger', 1997);
4380
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4380, 'Chevrolet', 'Blazer', 1997);
4381
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4381, 'Chevrolet', 'Camaro', 1997);
4382
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4382, 'Chevrolet', 'Cavalier', 1997);
4383
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4383, 'Chevrolet', 'Corvette', 1997);
4384
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4384, 'Chevrolet', 'Express 1500 Passenger', 1997);
4385
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4385, 'Chevrolet', 'Express 2500 Passenger', 1997);
4386
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4386, 'Chevrolet', 'Express 3500 Passenger', 1997);
4387
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4387, 'Chevrolet', 'G-Series 1500', 1997);
4388
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4388, 'Chevrolet', 'G-Series 2500', 1997);
4389
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4389, 'Chevrolet', 'G-Series 3500', 1997);
4390
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4390, 'Chevrolet', 'Lumina', 1997);
4391
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4391, 'Chevrolet', 'Malibu', 1997);
4392
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4392, 'Chevrolet', 'Monte Carlo', 1997);
4393
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4393, 'Chevrolet', 'S10 Extended Cab', 1997);
4394
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4394, 'Chevrolet', 'S10 Regular Cab', 1997);
4395
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4395, 'Chevrolet', 'Suburban 1500', 1997);
4396
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4396, 'Chevrolet', 'Suburban 2500', 1997);
4397
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4397, 'Chevrolet', 'Tahoe', 1997);
4398
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4398, 'Chevrolet', 'Venture Passenger', 1997);
4399
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4399, 'Chrysler', 'Cirrus', 1997);
4400
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4400, 'Chrysler', 'Concorde', 1997);
4401
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4401, 'Chrysler', 'LHS', 1997);
4402
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4402, 'Chrysler', 'Sebring', 1997);
4403
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4403, 'Chrysler', 'Town & Country', 1997);
4404
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4404, 'Dodge', 'Avenger', 1997);
4405
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4405, 'Dodge', 'Caravan Passenger', 1997);
4406
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4406, 'Dodge', 'Dakota Club Cab', 1997);
4407
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4407, 'Dodge', 'Dakota Regular Cab', 1997);
4408
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4408, 'Dodge', 'Grand Caravan Passenger', 1997);
4409
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4409, 'Dodge', 'Intrepid', 1997);
4410
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4410, 'Dodge', 'Neon', 1997);
4411
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4411, 'Dodge', 'Ram 1500 Club Cab', 1997);
4412
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4412, 'Dodge', 'Ram 1500 Regular Cab', 1997);
4413
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4413, 'Dodge', 'Ram 2500 Club Cab', 1997);
4414
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4414, 'Dodge', 'Ram 2500 Regular Cab', 1997);
4415
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4415, 'Dodge', 'Ram 3500 Club Cab', 1997);
4416
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4416, 'Dodge', 'Ram 3500 Regular Cab', 1997);
4417
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4417, 'Dodge', 'Ram Van 1500', 1997);
4418
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4418, 'Dodge', 'Ram Van 2500', 1997);
4419
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4419, 'Dodge', 'Ram Van 3500', 1997);
4420
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4420, 'Dodge', 'Ram Wagon 1500', 1997);
4421
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4421, 'Dodge', 'Ram Wagon 2500', 1997);
4422
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4422, 'Dodge', 'Ram Wagon 3500', 1997);
4423
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4423, 'Dodge', 'Stratus', 1997);
4424
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4424, 'Dodge', 'Viper', 1997);
4425
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4425, 'Eagle', 'Talon', 1997);
4426
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4426, 'Eagle', 'Vision', 1997);
4427
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4427, 'Ford', 'Aerostar Cargo', 1997);
4428
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4428, 'Ford', 'Aerostar Passenger', 1997);
4429
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4429, 'Ford', 'Aspire', 1997);
4430
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4430, 'Ford', 'Club Wagon', 1997);
4431
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4431, 'Ford', 'Contour', 1997);
4432
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4432, 'Ford', 'Crown Victoria', 1997);
4433
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4433, 'Ford', 'Econoline E150 Cargo', 1997);
4434
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4434, 'Ford', 'Econoline E250 Cargo', 1997);
4435
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4435, 'Ford', 'Econoline E350 Cargo', 1997);
4436
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4436, 'Ford', 'Escort', 1997);
4437
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4437, 'Ford', 'Expedition', 1997);
4438
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4438, 'Ford', 'Explorer', 1997);
4439
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4439, 'Ford', 'F150 Regular Cab', 1997);
4440
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4440, 'Ford', 'F150 Super Cab', 1997);
4441
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4441, 'Ford', 'F250 Crew Cab', 1997);
4442
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4442, 'Ford', 'F250 Regular Cab', 1997);
4443
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4443, 'Ford', 'F250 Super Cab', 1997);
4444
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4444, 'Ford', 'F350 Crew Cab', 1997);
4445
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4445, 'Ford', 'F350 Regular Cab', 1997);
4446
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4446, 'Ford', 'F350 Super Cab', 1997);
4447
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4447, 'Ford', 'Mustang', 1997);
4448
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4448, 'Ford', 'Probe', 1997);
4449
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4449, 'Ford', 'Ranger Regular Cab', 1997);
4450
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4450, 'Ford', 'Ranger Super Cab', 1997);
4451
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4451, 'Ford', 'Taurus', 1997);
4452
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4452, 'Ford', 'Thunderbird', 1997);
4453
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4453, 'Ford', 'Windstar Cargo', 1997);
4454
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4454, 'Ford', 'Windstar Passenger', 1997);
4455
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4455, 'Geo', 'Metro', 1997);
4456
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4456, 'Geo', 'Prizm', 1997);
4457
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4457, 'Geo', 'Tracker', 1997);
4458
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4458, 'GMC', '1500 Club Coupe', 1997);
4459
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4459, 'GMC', '1500 Regular Cab', 1997);
4460
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4460, 'GMC', '2500 Club Coupe', 1997);
4461
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4461, 'GMC', '2500 HD Club Coupe', 1997);
4462
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4462, 'GMC', '2500 Regular Cab', 1997);
4463
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4463, 'GMC', '3500 Club Coupe', 1997);
4464
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4464, 'GMC', '3500 Crew Cab', 1997);
4465
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4465, 'GMC', '3500 Regular Cab', 1997);
4466
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4466, 'GMC', 'Jimmy', 1997);
4467
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4467, 'GMC', 'Safari Cargo', 1997);
4468
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4468, 'GMC', 'Safari Passenger', 1997);
4469
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4469, 'GMC', 'Savana 1500 Cargo', 1997);
4470
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4470, 'GMC', 'Savana 1500 Passenger', 1997);
4471
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4471, 'GMC', 'Savana 2500 Cargo', 1997);
4472
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4472, 'GMC', 'Savana 2500 Passenger', 1997);
4473
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4473, 'GMC', 'Savana 3500 Cargo', 1997);
4474
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4474, 'GMC', 'Savana 3500 Passenger', 1997);
4475
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4475, 'GMC', 'Sonoma Club Coupe Cab', 1997);
4476
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4476, 'GMC', 'Sonoma Regular Cab', 1997);
4477
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4477, 'GMC', 'Suburban 1500', 1997);
4478
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4478, 'GMC', 'Suburban 2500', 1997);
4479
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4479, 'GMC', 'Yukon', 1997);
4480
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4480, 'Honda', 'Accord', 1997);
4481
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4481, 'Honda', 'Civic', 1997);
4482
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4482, 'Honda', 'CR-V', 1997);
4483
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4483, 'Honda', 'del Sol', 1997);
4484
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4484, 'Honda', 'Odyssey', 1997);
4485
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4485, 'Honda', 'Passport', 1997);
4486
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4486, 'Honda', 'Prelude', 1997);
4487
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4487, 'HUMMER', 'H1', 1997);
4488
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4488, 'Hyundai', 'Accent', 1997);
4489
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4489, 'Hyundai', 'Elantra', 1997);
4490
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4490, 'Hyundai', 'Sonata', 1997);
4491
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4491, 'Hyundai', 'Tiburon', 1997);
4492
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4492, 'Infiniti', 'I', 1997);
4493
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4493, 'Infiniti', 'J', 1997);
4494
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4494, 'Infiniti', 'Q', 1997);
4495
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4495, 'Infiniti', 'QX', 1997);
4496
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4496, 'Isuzu', 'Hombre Regular Cab', 1997);
4497
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4497, 'Isuzu', 'Hombre Spacecab', 1997);
4498
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4498, 'Isuzu', 'Oasis', 1997);
4499
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4499, 'Isuzu', 'Rodeo', 1997);
4500
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4500, 'Isuzu', 'Trooper', 1997);
4501
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4501, 'Jaguar', 'XJ Series', 1997);
4502
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4502, 'Jaguar', 'XK Series', 1997);
4503
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4503, 'Jeep', 'Cherokee', 1997);
4504
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4504, 'Jeep', 'Grand Cherokee', 1997);
4505
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4505, 'Jeep', 'Wrangler', 1997);
4506
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4506, 'Kia', 'Sephia', 1997);
4507
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4507, 'Kia', 'Sportage', 1997);
4508
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4508, 'Land Rover', 'Defender 90', 1997);
4509
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4509, 'Land Rover', 'Discovery', 1997);
4510
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4510, 'Land Rover', 'Range Rover', 1997);
4511
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4511, 'Lexus', 'ES', 1997);
4512
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4512, 'Lexus', 'GS', 1997);
4513
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4513, 'Lexus', 'LS', 1997);
4514
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4514, 'Lexus', 'LX', 1997);
4515
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4515, 'Lexus', 'SC', 1997);
4516
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4516, 'Lincoln', 'Continental', 1997);
4517
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4517, 'Lincoln', 'Mark VIII', 1997);
4518
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4518, 'Lincoln', 'Town Car', 1997);
4519
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4519, 'Mazda', '626', 1997);
4520
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4520, 'Mazda', 'B-Series Cab Plus', 1997);
4521
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4521, 'Mazda', 'B-Series Regular Cab', 1997);
4522
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4522, 'Mazda', 'Miata MX-5', 1997);
4523
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4523, 'Mazda', 'Millenia', 1997);
4524
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4524, 'Mazda', 'MPV', 1997);
4525
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4525, 'Mazda', 'MX-6', 1997);
4526
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4526, 'Mazda', 'Protege', 1997);
4527
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4527, 'Mercedes-Benz', 'C-Class', 1997);
4528
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4528, 'Mercedes-Benz', 'E-Class', 1997);
4529
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4529, 'Mercedes-Benz', 'S-Class', 1997);
4530
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4530, 'Mercedes-Benz', 'SL-Class', 1997);
4531
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4531, 'Mercury', 'Cougar', 1997);
4532
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4532, 'Mercury', 'Grand Marquis', 1997);
4533
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4533, 'Mercury', 'Mountaineer', 1997);
4534
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4534, 'Mercury', 'Mystique', 1997);
4535
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4535, 'Mercury', 'Sable', 1997);
4536
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4536, 'Mercury', 'Tracer', 1997);
4537
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4537, 'Mercury', 'Villager', 1997);
4538
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4538, 'Mitsubishi', '3000GT', 1997);
4539
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4539, 'Mitsubishi', 'Diamante', 1997);
4540
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4540, 'Mitsubishi', 'Eclipse', 1997);
4541
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4541, 'Mitsubishi', 'Galant', 1997);
4542
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4542, 'Mitsubishi', 'Mirage', 1997);
4543
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4543, 'Mitsubishi', 'Montero', 1997);
4544
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4544, 'Mitsubishi', 'Montero Sport', 1997);
4545
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4545, 'Nissan', '200SX', 1997);
4546
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4546, 'Nissan', '240SX', 1997);
4547
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4547, 'Nissan', 'Altima', 1997);
4548
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4548, 'Nissan', 'King Cab', 1997);
4549
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4549, 'Nissan', 'Maxima', 1997);
4550
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4550, 'Nissan', 'Pathfinder', 1997);
4551
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4551, 'Nissan', 'Quest', 1997);
4552
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4552, 'Nissan', 'Regular Cab', 1997);
4553
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4553, 'Nissan', 'Sentra', 1997);
4554
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4554, 'Oldsmobile', '88', 1997);
4555
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4555, 'Oldsmobile', 'Achieva', 1997);
4556
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4556, 'Oldsmobile', 'Aurora', 1997);
4557
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4557, 'Oldsmobile', 'Bravada', 1997);
4558
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4558, 'Oldsmobile', 'Cutlass', 1997);
4559
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4559, 'Oldsmobile', 'Cutlass Supreme', 1997);
4560
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4560, 'Oldsmobile', 'LSS', 1997);
4561
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4561, 'Oldsmobile', 'Regency', 1997);
4562
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4562, 'Oldsmobile', 'Silhouette', 1997);
4563
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4563, 'Plymouth', 'Breeze', 1997);
4564
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4564, 'Plymouth', 'Grand Voyager', 1997);
4565
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4565, 'Plymouth', 'Neon', 1997);
4566
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4566, 'Plymouth', 'Prowler', 1997);
4567
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4567, 'Plymouth', 'Voyager', 1997);
4568
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4568, 'Pontiac', 'Bonneville', 1997);
4569
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4569, 'Pontiac', 'Firebird', 1997);
4570
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4570, 'Pontiac', 'Grand Am', 1997);
4571
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4571, 'Pontiac', 'Grand Prix', 1997);
4572
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4572, 'Pontiac', 'Sunfire', 1997);
4573
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4573, 'Pontiac', 'Trans Sport', 1997);
4574
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4574, 'Porsche', '911', 1997);
4575
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4575, 'Porsche', 'Boxster', 1997);
4576
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4576, 'Saab', '900', 1997);
4577
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4577, 'Saab', '9000', 1997);
4578
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4578, 'Saturn', 'S-Series', 1997);
4579
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4579, 'Subaru', 'Impreza', 1997);
4580
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4580, 'Subaru', 'Legacy', 1997);
4581
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4581, 'Subaru', 'SVX', 1997);
4582
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4582, 'Suzuki', 'Esteem', 1997);
4583
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4583, 'Suzuki', 'Sidekick', 1997);
4584
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4584, 'Suzuki', 'Swift', 1997);
4585
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4585, 'Suzuki', 'X-90', 1997);
4586
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4586, 'Toyota', '4Runner', 1997);
4587
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4587, 'Toyota', 'Avalon', 1997);
4588
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4588, 'Toyota', 'Camry', 1997);
4589
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4589, 'Toyota', 'Celica', 1997);
4590
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4590, 'Toyota', 'Corolla', 1997);
4591
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4591, 'Toyota', 'Land Cruiser', 1997);
4592
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4592, 'Toyota', 'Paseo', 1997);
4593
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4593, 'Toyota', 'Previa', 1997);
4594
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4594, 'Toyota', 'RAV4', 1997);
4595
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4595, 'Toyota', 'Supra', 1997);
4596
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4596, 'Toyota', 'T100 Regular Cab', 1997);
4597
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4597, 'Toyota', 'T100 Xtracab', 1997);
4598
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4598, 'Toyota', 'Tacoma Regular Cab', 1997);
4599
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4599, 'Toyota', 'Tacoma Xtracab', 1997);
4600
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4600, 'Toyota', 'Tercel', 1997);
4601
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4601, 'Volkswagen', 'Cabrio', 1997);
4602
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4602, 'Volkswagen', 'Golf', 1997);
4603
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4603, 'Volkswagen', 'Jetta', 1997);
4604
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4604, 'Volkswagen', 'Passat', 1997);
4605
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4605, 'Volvo', '850', 1997);
4606
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4606, 'Volvo', '960', 1997);
4607
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4607, 'Volvo', 'S90', 1997);
4608
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4608, 'Volvo', 'V90', 1997);
4609
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4609, 'Acura', 'Integra', 1996);
4610
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4610, 'Acura', 'NSX', 1996);
4611
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4611, 'Acura', 'RL', 1996);
4612
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4612, 'Acura', 'SLX', 1996);
4613
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4613, 'Acura', 'TL', 1996);
4614
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4614, 'Audi', 'A4', 1996);
4615
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4615, 'Audi', 'A6', 1996);
4616
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4616, 'Audi', 'Cabriolet', 1996);
4617
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4617, 'BMW', '3 Series', 1996);
4618
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4618, 'BMW', '7 Series', 1996);
4619
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4619, 'BMW', '8 Series', 1996);
4620
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4620, 'BMW', 'M3', 1996);
4621
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4621, 'BMW', 'Z3', 1996);
4622
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4622, 'Buick', 'Century', 1996);
4623
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4623, 'Buick', 'LeSabre', 1996);
4624
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4624, 'Buick', 'Park Avenue', 1996);
4625
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4625, 'Buick', 'Regal', 1996);
4626
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4626, 'Buick', 'Riviera', 1996);
4627
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4627, 'Buick', 'Roadmaster', 1996);
4628
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4628, 'Buick', 'Skylark', 1996);
4629
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4629, 'Cadillac', 'DeVille', 1996);
4630
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4630, 'Cadillac', 'Eldorado', 1996);
4631
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4631, 'Cadillac', 'Fleetwood', 1996);
4632
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4632, 'Cadillac', 'Seville', 1996);
4633
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4633, 'Chevrolet', '1500 Extended Cab', 1996);
4634
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4634, 'Chevrolet', '1500 Regular Cab', 1996);
4635
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4635, 'Chevrolet', '2500 Extended Cab', 1996);
4636
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4636, 'Chevrolet', '2500 HD Extended Cab', 1996);
4637
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4637, 'Chevrolet', '2500 Regular Cab', 1996);
4638
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4638, 'Chevrolet', '3500 Crew Cab', 1996);
4639
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4639, 'Chevrolet', '3500 Extended Cab', 1996);
4640
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4640, 'Chevrolet', '3500 Regular Cab', 1996);
4641
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4641, 'Chevrolet', 'Astro Cargo', 1996);
4642
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4642, 'Chevrolet', 'Astro Passenger', 1996);
4643
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4643, 'Chevrolet', 'Beretta', 1996);
4644
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4644, 'Chevrolet', 'Blazer', 1996);
4645
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4645, 'Chevrolet', 'Camaro', 1996);
4646
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4646, 'Chevrolet', 'Caprice Classic', 1996);
4647
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4647, 'Chevrolet', 'Cavalier', 1996);
4648
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4648, 'Chevrolet', 'Corsica', 1996);
4649
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4649, 'Chevrolet', 'Corvette', 1996);
4650
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4650, 'Chevrolet', 'Express 1500 Passenger', 1996);
4651
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4651, 'Chevrolet', 'Express 2500 Passenger', 1996);
4652
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4652, 'Chevrolet', 'Express 3500 Passenger', 1996);
4653
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4653, 'Chevrolet', 'G-Series 1500', 1996);
4654
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4654, 'Chevrolet', 'G-Series 2500', 1996);
4655
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4655, 'Chevrolet', 'G-Series G30', 1996);
4656
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4656, 'Chevrolet', 'Impala', 1996);
4657
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4657, 'Chevrolet', 'Lumina', 1996);
4658
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4658, 'Chevrolet', 'Lumina Cargo', 1996);
4659
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4659, 'Chevrolet', 'Lumina Passenger', 1996);
4660
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4660, 'Chevrolet', 'Monte Carlo', 1996);
4661
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4661, 'Chevrolet', 'S10 Extended Cab', 1996);
4662
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4662, 'Chevrolet', 'S10 Regular Cab', 1996);
4663
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4663, 'Chevrolet', 'Sportvan G30', 1996);
4664
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4664, 'Chevrolet', 'Suburban 1500', 1996);
4665
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4665, 'Chevrolet', 'Suburban 2500', 1996);
4666
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4666, 'Chevrolet', 'Tahoe', 1996);
4667
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4667, 'Chrysler', 'Cirrus', 1996);
4668
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4668, 'Chrysler', 'Concorde', 1996);
4669
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4669, 'Chrysler', 'LHS', 1996);
4670
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4670, 'Chrysler', 'New Yorker', 1996);
4671
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4671, 'Chrysler', 'Sebring', 1996);
4672
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4672, 'Chrysler', 'Town & Country', 1996);
4673
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4673, 'Dodge', 'Avenger', 1996);
4674
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4674, 'Dodge', 'Caravan Passenger', 1996);
4675
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4675, 'Dodge', 'Dakota Club Cab', 1996);
4676
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4676, 'Dodge', 'Dakota Regular Cab', 1996);
4677
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4677, 'Dodge', 'Grand Caravan Passenger', 1996);
4678
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4678, 'Dodge', 'Intrepid', 1996);
4679
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4679, 'Dodge', 'Neon', 1996);
4680
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4680, 'Dodge', 'Ram 1500 Club Cab', 1996);
4681
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4681, 'Dodge', 'Ram 1500 Regular Cab', 1996);
4682
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4682, 'Dodge', 'Ram 2500 Club Cab', 1996);
4683
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4683, 'Dodge', 'Ram 2500 Regular Cab', 1996);
4684
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4684, 'Dodge', 'Ram 3500 Club Cab', 1996);
4685
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4685, 'Dodge', 'Ram 3500 Regular Cab', 1996);
4686
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4686, 'Dodge', 'Ram Van 1500', 1996);
4687
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4687, 'Dodge', 'Ram Van 2500', 1996);
4688
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4688, 'Dodge', 'Ram Van 3500', 1996);
4689
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4689, 'Dodge', 'Ram Wagon 1500', 1996);
4690
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4690, 'Dodge', 'Ram Wagon 2500', 1996);
4691
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4691, 'Dodge', 'Ram Wagon 3500', 1996);
4692
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4692, 'Dodge', 'Stealth', 1996);
4693
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4693, 'Dodge', 'Stratus', 1996);
4694
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4694, 'Dodge', 'Viper', 1996);
4695
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4695, 'Eagle', 'Summit', 1996);
4696
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4696, 'Eagle', 'Talon', 1996);
4697
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4697, 'Eagle', 'Vision', 1996);
4698
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4698, 'Ford', 'Aerostar Cargo', 1996);
4699
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4699, 'Ford', 'Aerostar Passenger', 1996);
4700
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4700, 'Ford', 'Aspire', 1996);
4701
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4701, 'Ford', 'Bronco', 1996);
4702
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4702, 'Ford', 'Club Wagon', 1996);
4703
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4703, 'Ford', 'Contour', 1996);
4704
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4704, 'Ford', 'Crown Victoria', 1996);
4705
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4705, 'Ford', 'Econoline E150 Cargo', 1996);
4706
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4706, 'Ford', 'Econoline E250 Cargo', 1996);
4707
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4707, 'Ford', 'Econoline E350 Cargo', 1996);
4708
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4708, 'Ford', 'Escort', 1996);
4709
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4709, 'Ford', 'Explorer', 1996);
4710
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4710, 'Ford', 'F150 Regular Cab', 1996);
4711
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4711, 'Ford', 'F150 Super Cab', 1996);
4712
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4712, 'Ford', 'F250 Crew Cab', 1996);
4713
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4713, 'Ford', 'F250 Regular Cab', 1996);
4714
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4714, 'Ford', 'F250 Super Cab', 1996);
4715
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4715, 'Ford', 'F350 Crew Cab', 1996);
4716
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4716, 'Ford', 'F350 Regular Cab', 1996);
4717
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4717, 'Ford', 'F350 Super Cab', 1996);
4718
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4718, 'Ford', 'Mustang', 1996);
4719
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4719, 'Ford', 'Probe', 1996);
4720
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4720, 'Ford', 'Ranger Regular Cab', 1996);
4721
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4721, 'Ford', 'Ranger Super Cab', 1996);
4722
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4722, 'Ford', 'Taurus', 1996);
4723
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4723, 'Ford', 'Thunderbird', 1996);
4724
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4724, 'Ford', 'Windstar Cargo', 1996);
4725
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4725, 'Ford', 'Windstar Passenger', 1996);
4726
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4726, 'Geo', 'Metro', 1996);
4727
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4727, 'Geo', 'Prizm', 1996);
4728
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4728, 'Geo', 'Tracker', 1996);
4729
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4729, 'GMC', '1500 Club Coupe', 1996);
4730
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4730, 'GMC', '1500 Regular Cab', 1996);
4731
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4731, 'GMC', '2500 Club Coupe', 1996);
4732
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4732, 'GMC', '2500 Regular Cab', 1996);
4733
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4733, 'GMC', '3500 Club Coupe', 1996);
4734
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4734, 'GMC', '3500 Crew Cab', 1996);
4735
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4735, 'GMC', '3500 Regular Cab', 1996);
4736
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4736, 'GMC', 'Jimmy', 1996);
4737
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4737, 'GMC', 'Rally Wagon G3500', 1996);
4738
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4738, 'GMC', 'Safari Cargo', 1996);
4739
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4739, 'GMC', 'Safari Passenger', 1996);
4740
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4740, 'GMC', 'Savana 1500 Cargo', 1996);
4741
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4741, 'GMC', 'Savana 1500 Passenger', 1996);
4742
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4742, 'GMC', 'Savana 2500 Cargo', 1996);
4743
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4743, 'GMC', 'Savana 2500 Passenger', 1996);
4744
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4744, 'GMC', 'Savana 3500 Cargo', 1996);
4745
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4745, 'GMC', 'Savana 3500 Passenger', 1996);
4746
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4746, 'GMC', 'Sonoma Club Coupe Cab', 1996);
4747
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4747, 'GMC', 'Sonoma Regular Cab', 1996);
4748
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4748, 'GMC', 'Suburban 1500', 1996);
4749
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4749, 'GMC', 'Suburban 2500', 1996);
4750
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4750, 'GMC', 'Vandura G3500', 1996);
4751
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4751, 'GMC', 'Yukon', 1996);
4752
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4752, 'Honda', 'Accord', 1996);
4753
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4753, 'Honda', 'Civic', 1996);
4754
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4754, 'Honda', 'del Sol', 1996);
4755
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4755, 'Honda', 'Odyssey', 1996);
4756
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4756, 'Honda', 'Passport', 1996);
4757
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4757, 'Honda', 'Prelude', 1996);
4758
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4758, 'HUMMER', 'H1', 1996);
4759
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4759, 'Hyundai', 'Accent', 1996);
4760
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4760, 'Hyundai', 'Elantra', 1996);
4761
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4761, 'Hyundai', 'Sonata', 1996);
4762
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4762, 'Infiniti', 'G', 1996);
4763
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4763, 'Infiniti', 'I', 1996);
4764
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4764, 'Infiniti', 'J', 1996);
4765
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4765, 'Infiniti', 'Q', 1996);
4766
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4766, 'Isuzu', 'Hombre Regular Cab', 1996);
4767
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4767, 'Isuzu', 'Oasis', 1996);
4768
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4768, 'Isuzu', 'Rodeo', 1996);
4769
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4769, 'Isuzu', 'Trooper', 1996);
4770
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4770, 'Jaguar', 'XJ Series', 1996);
4771
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4771, 'Jeep', 'Cherokee', 1996);
4772
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4772, 'Jeep', 'Grand Cherokee', 1996);
4773
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4773, 'Kia', 'Sephia', 1996);
4774
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4774, 'Kia', 'Sportage', 1996);
4775
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4775, 'Land Rover', 'Discovery', 1996);
4776
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4776, 'Land Rover', 'Range Rover', 1996);
4777
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4777, 'Lexus', 'ES', 1996);
4778
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4778, 'Lexus', 'GS', 1996);
4779
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4779, 'Lexus', 'LS', 1996);
4780
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4780, 'Lexus', 'LX', 1996);
4781
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4781, 'Lexus', 'SC', 1996);
4782
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4782, 'Lincoln', 'Continental', 1996);
4783
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4783, 'Lincoln', 'Mark VIII', 1996);
4784
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4784, 'Lincoln', 'Town Car', 1996);
4785
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4785, 'Mazda', '626', 1996);
4786
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4786, 'Mazda', 'B-Series Cab Plus', 1996);
4787
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4787, 'Mazda', 'B-Series Regular Cab', 1996);
4788
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4788, 'Mazda', 'Miata MX-5', 1996);
4789
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4789, 'Mazda', 'Millenia', 1996);
4790
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4790, 'Mazda', 'MPV', 1996);
4791
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4791, 'Mazda', 'MX-6', 1996);
4792
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4792, 'Mazda', 'Protege', 1996);
4793
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4793, 'Mercedes-Benz', 'C-Class', 1996);
4794
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4794, 'Mercedes-Benz', 'E-Class', 1996);
4795
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4795, 'Mercedes-Benz', 'S-Class', 1996);
4796
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4796, 'Mercedes-Benz', 'SL-Class', 1996);
4797
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4797, 'Mercury', 'Cougar', 1996);
4798
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4798, 'Mercury', 'Grand Marquis', 1996);
4799
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4799, 'Mercury', 'Mystique', 1996);
4800
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4800, 'Mercury', 'Sable', 1996);
4801
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4801, 'Mercury', 'Tracer', 1996);
4802
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4802, 'Mercury', 'Villager', 1996);
4803
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4803, 'Mitsubishi', '3000GT', 1996);
4804
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4804, 'Mitsubishi', 'Diamante', 1996);
4805
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4805, 'Mitsubishi', 'Eclipse', 1996);
4806
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4806, 'Mitsubishi', 'Galant', 1996);
4807
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4807, 'Mitsubishi', 'Mighty Max Regular Cab', 1996);
4808
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4808, 'Mitsubishi', 'Mirage', 1996);
4809
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4809, 'Mitsubishi', 'Montero', 1996);
4810
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4810, 'Nissan', '200SX', 1996);
4811
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4811, 'Nissan', '240SX', 1996);
4812
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4812, 'Nissan', '300ZX', 1996);
4813
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4813, 'Nissan', 'Altima', 1996);
4814
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4814, 'Nissan', 'King Cab', 1996);
4815
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4815, 'Nissan', 'Maxima', 1996);
4816
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4816, 'Nissan', 'Pathfinder', 1996);
4817
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4817, 'Nissan', 'Quest', 1996);
4818
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4818, 'Nissan', 'Regular Cab', 1996);
4819
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4819, 'Nissan', 'Sentra', 1996);
4820
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4820, 'Oldsmobile', '88', 1996);
4821
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4821, 'Oldsmobile', '98', 1996);
4822
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4822, 'Oldsmobile', 'Achieva', 1996);
4823
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4823, 'Oldsmobile', 'Aurora', 1996);
4824
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4824, 'Oldsmobile', 'Bravada', 1996);
4825
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4825, 'Oldsmobile', 'Ciera', 1996);
4826
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4826, 'Oldsmobile', 'Cutlass Supreme', 1996);
4827
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4827, 'Oldsmobile', 'Silhouette', 1996);
4828
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4828, 'Plymouth', 'Breeze', 1996);
4829
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4829, 'Plymouth', 'Grand Voyager', 1996);
4830
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4830, 'Plymouth', 'Neon', 1996);
4831
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4831, 'Plymouth', 'Voyager', 1996);
4832
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4832, 'Pontiac', 'Bonneville', 1996);
4833
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4833, 'Pontiac', 'Firebird', 1996);
4834
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4834, 'Pontiac', 'Grand Am', 1996);
4835
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4835, 'Pontiac', 'Grand Prix', 1996);
4836
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4836, 'Pontiac', 'Sunfire', 1996);
4837
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4837, 'Pontiac', 'Trans Sport', 1996);
4838
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4838, 'Porsche', '911', 1996);
4839
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4839, 'Saab', '900', 1996);
4840
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4840, 'Saab', '9000', 1996);
4841
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4841, 'Saturn', 'S-Series', 1996);
4842
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4842, 'Subaru', 'Impreza', 1996);
4843
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4843, 'Subaru', 'Legacy', 1996);
4844
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4844, 'Subaru', 'SVX', 1996);
4845
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4845, 'Suzuki', 'Esteem', 1996);
4846
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4846, 'Suzuki', 'Sidekick', 1996);
4847
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4847, 'Suzuki', 'Swift', 1996);
4848
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4848, 'Suzuki', 'X-90', 1996);
4849
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4849, 'Toyota', '4Runner', 1996);
4850
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4850, 'Toyota', 'Avalon', 1996);
4851
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4851, 'Toyota', 'Camry', 1996);
4852
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4852, 'Toyota', 'Celica', 1996);
4853
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4853, 'Toyota', 'Corolla', 1996);
4854
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4854, 'Toyota', 'Land Cruiser', 1996);
4855
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4855, 'Toyota', 'Paseo', 1996);
4856
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4856, 'Toyota', 'Previa', 1996);
4857
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4857, 'Toyota', 'RAV4', 1996);
4858
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4858, 'Toyota', 'Supra', 1996);
4859
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4859, 'Toyota', 'T100 Regular Cab', 1996);
4860
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4860, 'Toyota', 'T100 Xtracab', 1996);
4861
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4861, 'Toyota', 'Tacoma Regular Cab', 1996);
4862
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4862, 'Toyota', 'Tacoma Xtracab', 1996);
4863
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4863, 'Toyota', 'Tercel', 1996);
4864
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4864, 'Volkswagen', 'Cabrio', 1996);
4865
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4865, 'Volkswagen', 'Golf', 1996);
4866
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4866, 'Volkswagen', 'Jetta', 1996);
4867
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4867, 'Volkswagen', 'Passat', 1996);
4868
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4868, 'Volvo', '850', 1996);
4869
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4869, 'Volvo', '960', 1996);
4870
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4870, 'Acura', 'Integra', 1995);
4871
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4871, 'Acura', 'Legend', 1995);
4872
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4872, 'Acura', 'NSX', 1995);
4873
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4873, 'Acura', 'TL', 1995);
4874
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4874, 'Alfa Romeo', '164', 1995);
4875
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4875, 'Audi', '90', 1995);
4876
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4876, 'Audi', 'A6', 1995);
4877
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4877, 'Audi', 'Cabriolet', 1995);
4878
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4878, 'Audi', 'S6', 1995);
4879
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4879, 'BMW', '3 Series', 1995);
4880
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4880, 'BMW', '5 Series', 1995);
4881
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4881, 'BMW', '7 Series', 1995);
4882
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4882, 'BMW', '8 Series', 1995);
4883
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4883, 'BMW', 'M3', 1995);
4884
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4884, 'Buick', 'Century', 1995);
4885
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4885, 'Buick', 'LeSabre', 1995);
4886
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4886, 'Buick', 'Park Avenue', 1995);
4887
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4887, 'Buick', 'Regal', 1995);
4888
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4888, 'Buick', 'Riviera', 1995);
4889
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4889, 'Buick', 'Roadmaster', 1995);
4890
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4890, 'Buick', 'Skylark', 1995);
4891
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4891, 'Cadillac', 'DeVille', 1995);
4892
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4892, 'Cadillac', 'Eldorado', 1995);
4893
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4893, 'Cadillac', 'Fleetwood', 1995);
4894
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4894, 'Cadillac', 'Seville', 1995);
4895
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4895, 'Chevrolet', '1500 Extended Cab', 1995);
4896
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4896, 'Chevrolet', '1500 Regular Cab', 1995);
4897
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4897, 'Chevrolet', '2500 Extended Cab', 1995);
4898
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4898, 'Chevrolet', '2500 Regular Cab', 1995);
4899
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4899, 'Chevrolet', '3500 Crew Cab', 1995);
4900
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4900, 'Chevrolet', '3500 HD Extended Cab', 1995);
4901
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4901, 'Chevrolet', '3500 HD Regular Cab', 1995);
4902
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4902, 'Chevrolet', 'Astro Cargo', 1995);
4903
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4903, 'Chevrolet', 'Astro Passenger', 1995);
4904
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4904, 'Chevrolet', 'Beretta', 1995);
4905
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4905, 'Chevrolet', 'Blazer', 1995);
4906
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4906, 'Chevrolet', 'Camaro', 1995);
4907
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4907, 'Chevrolet', 'Caprice Classic', 1995);
4908
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4908, 'Chevrolet', 'Cavalier', 1995);
4909
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4909, 'Chevrolet', 'Corsica', 1995);
4910
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4910, 'Chevrolet', 'Corvette', 1995);
4911
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4911, 'Chevrolet', 'G-Series G10', 1995);
4912
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4912, 'Chevrolet', 'G-Series G20', 1995);
4913
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4913, 'Chevrolet', 'G-Series G30', 1995);
4914
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4914, 'Chevrolet', 'Impala', 1995);
4915
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4915, 'Chevrolet', 'Lumina', 1995);
4916
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4916, 'Chevrolet', 'Lumina Cargo', 1995);
4917
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4917, 'Chevrolet', 'Lumina Passenger', 1995);
4918
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4918, 'Chevrolet', 'Monte Carlo', 1995);
4919
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4919, 'Chevrolet', 'S10 Extended Cab', 1995);
4920
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4920, 'Chevrolet', 'S10 Regular Cab', 1995);
4921
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4921, 'Chevrolet', 'Sportvan G20', 1995);
4922
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4922, 'Chevrolet', 'Sportvan G30', 1995);
4923
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4923, 'Chevrolet', 'Suburban 1500', 1995);
4924
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4924, 'Chevrolet', 'Suburban 2500', 1995);
4925
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4925, 'Chevrolet', 'Tahoe', 1995);
4926
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4926, 'Chrysler', 'Cirrus', 1995);
4927
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4927, 'Chrysler', 'Concorde', 1995);
4928
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4928, 'Chrysler', 'LeBaron', 1995);
4929
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4929, 'Chrysler', 'LHS', 1995);
4930
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4930, 'Chrysler', 'New Yorker', 1995);
4931
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4931, 'Chrysler', 'Sebring', 1995);
4932
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4932, 'Chrysler', 'Town & Country', 1995);
4933
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4933, 'Dodge', 'Avenger', 1995);
4934
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4934, 'Dodge', 'Caravan Cargo', 1995);
4935
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4935, 'Dodge', 'Caravan Passenger', 1995);
4936
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4936, 'Dodge', 'Dakota Club Cab', 1995);
4937
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4937, 'Dodge', 'Dakota Regular Cab', 1995);
4938
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4938, 'Dodge', 'Grand Caravan Passenger', 1995);
4939
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4939, 'Dodge', 'Intrepid', 1995);
4940
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4940, 'Dodge', 'Neon', 1995);
4941
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4941, 'Dodge', 'Ram 1500 Club Cab', 1995);
4942
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4942, 'Dodge', 'Ram 1500 Regular Cab', 1995);
4943
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4943, 'Dodge', 'Ram 2500 Club Cab', 1995);
4944
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4944, 'Dodge', 'Ram 2500 Regular Cab', 1995);
4945
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4945, 'Dodge', 'Ram 3500 Club Cab', 1995);
4946
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4946, 'Dodge', 'Ram 3500 Regular Cab', 1995);
4947
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4947, 'Dodge', 'Ram Van 1500', 1995);
4948
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4948, 'Dodge', 'Ram Van 2500', 1995);
4949
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4949, 'Dodge', 'Ram Van 3500', 1995);
4950
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4950, 'Dodge', 'Ram Wagon 1500', 1995);
4951
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4951, 'Dodge', 'Ram Wagon 2500', 1995);
4952
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4952, 'Dodge', 'Ram Wagon 3500', 1995);
4953
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4953, 'Dodge', 'Spirit', 1995);
4954
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4954, 'Dodge', 'Stealth', 1995);
4955
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4955, 'Dodge', 'Stratus', 1995);
4956
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4956, 'Dodge', 'Viper', 1995);
4957
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4957, 'Eagle', 'Summit', 1995);
4958
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4958, 'Eagle', 'Talon', 1995);
4959
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4959, 'Eagle', 'Vision', 1995);
4960
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4960, 'Ford', 'Aerostar Cargo', 1995);
4961
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4961, 'Ford', 'Aerostar Passenger', 1995);
4962
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4962, 'Ford', 'Aspire', 1995);
4963
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4963, 'Ford', 'Bronco', 1995);
4964
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4964, 'Ford', 'Club Wagon', 1995);
4965
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4965, 'Ford', 'Contour', 1995);
4966
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4966, 'Ford', 'Crown Victoria', 1995);
4967
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4967, 'Ford', 'Econoline E150 Cargo', 1995);
4968
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4968, 'Ford', 'Econoline E250 Cargo', 1995);
4969
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4969, 'Ford', 'Econoline E350 Cargo', 1995);
4970
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4970, 'Ford', 'Escort', 1995);
4971
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4971, 'Ford', 'Explorer', 1995);
4972
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4972, 'Ford', 'F150 Regular Cab', 1995);
4973
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4973, 'Ford', 'F150 Super Cab', 1995);
4974
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4974, 'Ford', 'F250 Regular Cab', 1995);
4975
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4975, 'Ford', 'F250 Super Cab', 1995);
4976
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4976, 'Ford', 'F350 Crew Cab', 1995);
4977
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4977, 'Ford', 'F350 Regular Cab', 1995);
4978
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4978, 'Ford', 'F350 Super Cab', 1995);
4979
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4979, 'Ford', 'Mustang', 1995);
4980
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4980, 'Ford', 'Probe', 1995);
4981
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4981, 'Ford', 'Ranger Regular Cab', 1995);
4982
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4982, 'Ford', 'Ranger Super Cab', 1995);
4983
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4983, 'Ford', 'Taurus', 1995);
4984
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4984, 'Ford', 'Thunderbird', 1995);
4985
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4985, 'Ford', 'Windstar Cargo', 1995);
4986
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4986, 'Ford', 'Windstar Passenger', 1995);
4987
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4987, 'Geo', 'Metro', 1995);
4988
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4988, 'Geo', 'Prizm', 1995);
4989
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4989, 'Geo', 'Tracker', 1995);
4990
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4990, 'GMC', '1500 Club Coupe', 1995);
4991
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4991, 'GMC', '1500 Regular Cab', 1995);
4992
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4992, 'GMC', '2500 Club Coupe', 1995);
4993
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4993, 'GMC', '2500 Regular Cab', 1995);
4994
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4994, 'GMC', '3500 Club Coupe', 1995);
4995
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4995, 'GMC', '3500 Crew Cab', 1995);
4996
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4996, 'GMC', '3500 Regular Cab', 1995);
4997
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4997, 'GMC', 'Jimmy', 1995);
4998
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4998, 'GMC', 'Rally Wagon G2500', 1995);
4999
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4999, 'GMC', 'Rally Wagon G3500', 1995);
5000
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5000, 'GMC', 'Safari Cargo', 1995);
5001
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5001, 'GMC', 'Safari Passenger', 1995);
5002
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5002, 'GMC', 'Sonoma Club Coupe Cab', 1995);
5003
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5003, 'GMC', 'Sonoma Regular Cab', 1995);
5004
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5004, 'GMC', 'Suburban 1500', 1995);
5005
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5005, 'GMC', 'Suburban 2500', 1995);
5006
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5006, 'GMC', 'Vandura G1500', 1995);
5007
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5007, 'GMC', 'Vandura G2500', 1995);
5008
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5008, 'GMC', 'Vandura G3500', 1995);
5009
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5009, 'GMC', 'Yukon', 1995);
5010
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5010, 'Honda', 'Accord', 1995);
5011
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5011, 'Honda', 'Civic', 1995);
5012
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5012, 'Honda', 'del Sol', 1995);
5013
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5013, 'Honda', 'Odyssey', 1995);
5014
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5014, 'Honda', 'Passport', 1995);
5015
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5015, 'Honda', 'Prelude', 1995);
5016
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5016, 'HUMMER', 'H1', 1995);
5017
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5017, 'Hyundai', 'Accent', 1995);
5018
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5018, 'Hyundai', 'Elantra', 1995);
5019
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5019, 'Hyundai', 'Scoupe', 1995);
5020
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5020, 'Hyundai', 'Sonata', 1995);
5021
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5021, 'Infiniti', 'G', 1995);
5022
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5022, 'Infiniti', 'J', 1995);
5023
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5023, 'Infiniti', 'Q', 1995);
5024
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5024, 'Isuzu', 'Regular Cab', 1995);
5025
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5025, 'Isuzu', 'Rodeo', 1995);
5026
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5026, 'Isuzu', 'Trooper', 1995);
5027
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5027, 'Jaguar', 'XJ Series', 1995);
5028
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5028, 'Jeep', 'Cherokee', 1995);
5029
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5029, 'Jeep', 'Grand Cherokee', 1995);
5030
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5030, 'Jeep', 'Wrangler', 1995);
5031
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5031, 'Kia', 'Sephia', 1995);
5032
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5032, 'Kia', 'Sportage', 1995);
5033
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5033, 'Land Rover', 'Defender 90', 1995);
5034
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5034, 'Land Rover', 'Discovery', 1995);
5035
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5035, 'Land Rover', 'Range Rover', 1995);
5036
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5036, 'Lexus', 'ES', 1995);
5037
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5037, 'Lexus', 'GS', 1995);
5038
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5038, 'Lexus', 'LS', 1995);
5039
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5039, 'Lexus', 'SC', 1995);
5040
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5040, 'Lincoln', 'Continental', 1995);
5041
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5041, 'Lincoln', 'Mark VIII', 1995);
5042
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5042, 'Lincoln', 'Town Car', 1995);
5043
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5043, 'Mazda', '626', 1995);
5044
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5044, 'Mazda', '929', 1995);
5045
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5045, 'Mazda', 'B-Series Cab Plus', 1995);
5046
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5046, 'Mazda', 'B-Series Regular Cab', 1995);
5047
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5047, 'Mazda', 'Miata MX-5', 1995);
5048
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5048, 'Mazda', 'Millenia', 1995);
5049
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5049, 'Mazda', 'MPV', 1995);
5050
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5050, 'Mazda', 'MX-3', 1995);
5051
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5051, 'Mazda', 'MX-6', 1995);
5052
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5052, 'Mazda', 'Protege', 1995);
5053
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5053, 'Mazda', 'RX-7', 1995);
5054
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5054, 'Mercedes-Benz', 'C-Class', 1995);
5055
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5055, 'Mercedes-Benz', 'E-Class', 1995);
5056
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5056, 'Mercedes-Benz', 'S-Class', 1995);
5057
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5057, 'Mercedes-Benz', 'SL-Class', 1995);
5058
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5058, 'Mercury', 'Cougar', 1995);
5059
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5059, 'Mercury', 'Grand Marquis', 1995);
5060
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5060, 'Mercury', 'Mystique', 1995);
5061
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5061, 'Mercury', 'Sable', 1995);
5062
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5062, 'Mercury', 'Tracer', 1995);
5063
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5063, 'Mercury', 'Villager', 1995);
5064
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5064, 'Mitsubishi', '3000GT', 1995);
5065
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5065, 'Mitsubishi', 'Diamante', 1995);
5066
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5066, 'Mitsubishi', 'Eclipse', 1995);
5067
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5067, 'Mitsubishi', 'Expo', 1995);
5068
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5068, 'Mitsubishi', 'Galant', 1995);
5069
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5069, 'Mitsubishi', 'Mighty Max Regular Cab', 1995);
5070
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5070, 'Mitsubishi', 'Mirage', 1995);
5071
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5071, 'Mitsubishi', 'Montero', 1995);
5072
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5072, 'Nissan', '200SX', 1995);
5073
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5073, 'Nissan', '240SX', 1995);
5074
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5074, 'Nissan', '300ZX', 1995);
5075
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5075, 'Nissan', 'Altima', 1995);
5076
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5076, 'Nissan', 'King Cab', 1995);
5077
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5077, 'Nissan', 'Maxima', 1995);
5078
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5078, 'Nissan', 'Pathfinder', 1995);
5079
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5079, 'Nissan', 'Quest', 1995);
5080
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5080, 'Nissan', 'Regular Cab', 1995);
5081
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5081, 'Nissan', 'Sentra', 1995);
5082
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5082, 'Oldsmobile', '88', 1995);
5083
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5083, 'Oldsmobile', '98', 1995);
5084
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5084, 'Oldsmobile', 'Achieva', 1995);
5085
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5085, 'Oldsmobile', 'Aurora', 1995);
5086
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5086, 'Oldsmobile', 'Ciera', 1995);
5087
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5087, 'Oldsmobile', 'Cutlass Supreme', 1995);
5088
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5088, 'Oldsmobile', 'Silhouette', 1995);
5089
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5089, 'Plymouth', 'Acclaim', 1995);
5090
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5090, 'Plymouth', 'Grand Voyager', 1995);
5091
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5091, 'Plymouth', 'Neon', 1995);
5092
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5092, 'Plymouth', 'Voyager', 1995);
5093
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5093, 'Pontiac', 'Bonneville', 1995);
5094
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5094, 'Pontiac', 'Firebird', 1995);
5095
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5095, 'Pontiac', 'Grand Am', 1995);
5096
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5096, 'Pontiac', 'Grand Prix', 1995);
5097
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5097, 'Pontiac', 'Sunfire', 1995);
5098
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5098, 'Pontiac', 'Trans Sport', 1995);
5099
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5099, 'Porsche', '911', 1995);
5100
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5100, 'Porsche', '928', 1995);
5101
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5101, 'Porsche', '968', 1995);
5102
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5102, 'Saab', '900', 1995);
5103
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5103, 'Saab', '9000', 1995);
5104
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5104, 'Saturn', 'S-Series', 1995);
5105
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5105, 'Subaru', 'Impreza', 1995);
5106
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5106, 'Subaru', 'Legacy', 1995);
5107
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5107, 'Subaru', 'SVX', 1995);
5108
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5108, 'Suzuki', 'Esteem', 1995);
5109
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5109, 'Suzuki', 'Samurai', 1995);
5110
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5110, 'Suzuki', 'Sidekick', 1995);
5111
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5111, 'Suzuki', 'Swift', 1995);
5112
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5112, 'Toyota', '4Runner', 1995);
5113
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5113, 'Toyota', 'Avalon', 1995);
5114
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5114, 'Toyota', 'Camry', 1995);
5115
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5115, 'Toyota', 'Celica', 1995);
5116
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5116, 'Toyota', 'Corolla', 1995);
5117
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5117, 'Toyota', 'Land Cruiser', 1995);
5118
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5118, 'Toyota', 'MR2', 1995);
5119
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5119, 'Toyota', 'Paseo', 1995);
5120
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5120, 'Toyota', 'Previa', 1995);
5121
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5121, 'Toyota', 'Regular Cab', 1995);
5122
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5122, 'Toyota', 'Supra', 1995);
5123
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5123, 'Toyota', 'T100 Regular Cab', 1995);
5124
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5124, 'Toyota', 'T100 Xtracab', 1995);
5125
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5125, 'Toyota', 'Tacoma Regular Cab', 1995);
5126
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5126, 'Toyota', 'Tacoma Xtracab', 1995);
5127
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5127, 'Toyota', 'Tercel', 1995);
5128
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5128, 'Toyota', 'Xtra Cab', 1995);
5129
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5129, 'Volkswagen', 'Cabrio', 1995);
5130
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5130, 'Volkswagen', 'Golf III', 1995);
5131
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5131, 'Volkswagen', 'GTI', 1995);
5132
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5132, 'Volkswagen', 'Jetta III', 1995);
5133
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5133, 'Volkswagen', 'Passat', 1995);
5134
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5134, 'Volvo', '850', 1995);
5135
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5135, 'Volvo', '940', 1995);
5136
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5136, 'Volvo', '960', 1995);
5137
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5137, 'Acura', 'Integra', 1994);
5138
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5138, 'Acura', 'Legend', 1994);
5139
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5139, 'Acura', 'NSX', 1994);
5140
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5140, 'Acura', 'Vigor', 1994);
5141
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5141, 'Alfa Romeo', '164', 1994);
5142
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5142, 'Alfa Romeo', 'Spider', 1994);
5143
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5143, 'Audi', '100', 1994);
5144
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5144, 'Audi', '90', 1994);
5145
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5145, 'Audi', 'Cabriolet', 1994);
5146
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5146, 'Audi', 'Quattro', 1994);
5147
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5147, 'Audi', 'S4', 1994);
5148
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5148, 'BMW', '3 Series', 1994);
5149
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5149, 'BMW', '5 Series', 1994);
5150
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5150, 'BMW', '7 Series', 1994);
5151
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5151, 'BMW', '8 Series', 1994);
5152
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5152, 'Buick', 'Century', 1994);
5153
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5153, 'Buick', 'LeSabre', 1994);
5154
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5154, 'Buick', 'Park Avenue', 1994);
5155
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5155, 'Buick', 'Regal', 1994);
5156
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5156, 'Buick', 'Roadmaster', 1994);
5157
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5157, 'Buick', 'Skylark', 1994);
5158
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5158, 'Cadillac', 'DeVille', 1994);
5159
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5159, 'Cadillac', 'Eldorado', 1994);
5160
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5160, 'Cadillac', 'Fleetwood', 1994);
5161
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5161, 'Cadillac', 'Seville', 1994);
5162
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5162, 'Chevrolet', '1500 Extended Cab', 1994);
5163
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5163, 'Chevrolet', '1500 Regular Cab', 1994);
5164
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5164, 'Chevrolet', '2500 Extended Cab', 1994);
5165
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5165, 'Chevrolet', '2500 Regular Cab', 1994);
5166
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5166, 'Chevrolet', '3500 Crew Cab', 1994);
5167
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5167, 'Chevrolet', '3500 Extended Cab', 1994);
5168
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5168, 'Chevrolet', '3500 Regular Cab', 1994);
5169
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5169, 'Chevrolet', 'Astro Cargo', 1994);
5170
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5170, 'Chevrolet', 'Astro Passenger', 1994);
5171
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5171, 'Chevrolet', 'Beretta', 1994);
5172
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5172, 'Chevrolet', 'Blazer', 1994);
5173
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5173, 'Chevrolet', 'Camaro', 1994);
5174
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5174, 'Chevrolet', 'Caprice Classic', 1994);
5175
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5175, 'Chevrolet', 'Cavalier', 1994);
5176
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5176, 'Chevrolet', 'Corsica', 1994);
5177
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5177, 'Chevrolet', 'Corvette', 1994);
5178
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5178, 'Chevrolet', 'G-Series G10', 1994);
5179
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5179, 'Chevrolet', 'G-Series G20', 1994);
5180
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5180, 'Chevrolet', 'G-Series G30', 1994);
5181
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5181, 'Chevrolet', 'Impala', 1994);
5182
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5182, 'Chevrolet', 'Lumina', 1994);
5183
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5183, 'Chevrolet', 'Lumina Cargo', 1994);
5184
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5184, 'Chevrolet', 'Lumina Passenger', 1994);
5185
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5185, 'Chevrolet', 'S10 Blazer', 1994);
5186
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5186, 'Chevrolet', 'S10 Extended Cab', 1994);
5187
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5187, 'Chevrolet', 'S10 Regular Cab', 1994);
5188
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5188, 'Chevrolet', 'Sportvan G20', 1994);
5189
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5189, 'Chevrolet', 'Sportvan G30', 1994);
5190
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5190, 'Chevrolet', 'Suburban 1500', 1994);
5191
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5191, 'Chevrolet', 'Suburban 2500', 1994);
5192
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5192, 'Chrysler', 'Concorde', 1994);
5193
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5193, 'Chrysler', 'LeBaron', 1994);
5194
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5194, 'Chrysler', 'LHS', 1994);
5195
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5195, 'Chrysler', 'New Yorker', 1994);
5196
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5196, 'Chrysler', 'Town & Country', 1994);
5197
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5197, 'Dodge', 'Caravan Cargo', 1994);
5198
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5198, 'Dodge', 'Caravan Passenger', 1994);
5199
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5199, 'Dodge', 'Colt', 1994);
5200
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5200, 'Dodge', 'Dakota Club Cab', 1994);
5201
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5201, 'Dodge', 'Dakota Regular Cab', 1994);
5202
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5202, 'Dodge', 'Grand Caravan Passenger', 1994);
5203
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5203, 'Dodge', 'Intrepid', 1994);
5204
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5204, 'Dodge', 'Ram 1500 Regular Cab', 1994);
5205
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5205, 'Dodge', 'Ram 2500 Regular Cab', 1994);
5206
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5206, 'Dodge', 'Ram 3500 Regular Cab', 1994);
5207
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5207, 'Dodge', 'Ram Van B150', 1994);
5208
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5208, 'Dodge', 'Ram Van B250', 1994);
5209
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5209, 'Dodge', 'Ram Van B350', 1994);
5210
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5210, 'Dodge', 'Ram Wagon B150', 1994);
5211
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5211, 'Dodge', 'Ram Wagon B250', 1994);
5212
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5212, 'Dodge', 'Ram Wagon B350', 1994);
5213
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5213, 'Dodge', 'Shadow', 1994);
5214
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5214, 'Dodge', 'Spirit', 1994);
5215
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5215, 'Dodge', 'Stealth', 1994);
5216
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5216, 'Dodge', 'Viper', 1994);
5217
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5217, 'Eagle', 'Summit', 1994);
5218
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5218, 'Eagle', 'Talon', 1994);
5219
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5219, 'Eagle', 'Vision', 1994);
5220
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5220, 'Ford', 'Aerostar Cargo', 1994);
5221
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5221, 'Ford', 'Aerostar Passenger', 1994);
5222
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5222, 'Ford', 'Aspire', 1994);
5223
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5223, 'Ford', 'Bronco', 1994);
5224
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5224, 'Ford', 'Club Wagon', 1994);
5225
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5225, 'Ford', 'Crown Victoria', 1994);
5226
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5226, 'Ford', 'Econoline E150 Cargo', 1994);
5227
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5227, 'Ford', 'Econoline E250 Cargo', 1994);
5228
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5228, 'Ford', 'Econoline E350 Cargo', 1994);
5229
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5229, 'Ford', 'Escort', 1994);
5230
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5230, 'Ford', 'Explorer', 1994);
5231
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5231, 'Ford', 'F150 Regular Cab', 1994);
5232
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5232, 'Ford', 'F150 Super Cab', 1994);
5233
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5233, 'Ford', 'F250 Regular Cab', 1994);
5234
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5234, 'Ford', 'F250 Super Cab', 1994);
5235
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5235, 'Ford', 'F350 Crew Cab', 1994);
5236
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5236, 'Ford', 'F350 Regular Cab', 1994);
5237
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5237, 'Ford', 'F350 Super Cab', 1994);
5238
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5238, 'Ford', 'Mustang', 1994);
5239
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5239, 'Ford', 'Probe', 1994);
5240
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5240, 'Ford', 'Ranger Regular Cab', 1994);
5241
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5241, 'Ford', 'Ranger Super Cab', 1994);
5242
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5242, 'Ford', 'Taurus', 1994);
5243
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5243, 'Ford', 'Tempo', 1994);
5244
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5244, 'Ford', 'Thunderbird', 1994);
5245
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5245, 'Geo', 'Metro', 1994);
5246
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5246, 'Geo', 'Prizm', 1994);
5247
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5247, 'Geo', 'Tracker', 1994);
5248
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5248, 'GMC', '1500 Club Coupe', 1994);
5249
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5249, 'GMC', '1500 Regular Cab', 1994);
5250
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5250, 'GMC', '2500 Club Coupe', 1994);
5251
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5251, 'GMC', '2500 Regular Cab', 1994);
5252
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5252, 'GMC', '3500 Club Coupe', 1994);
5253
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5253, 'GMC', '3500 Crew Cab', 1994);
5254
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5254, 'GMC', '3500 Regular Cab', 1994);
5255
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5255, 'GMC', 'Jimmy', 1994);
5256
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5256, 'GMC', 'Rally Wagon 2500', 1994);
5257
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5257, 'GMC', 'Rally Wagon 3500', 1994);
5258
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5258, 'GMC', 'Safari Cargo', 1994);
5259
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5259, 'GMC', 'Safari Passenger', 1994);
5260
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5260, 'GMC', 'Sonoma Club Coupe Cab', 1994);
5261
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5261, 'GMC', 'Sonoma Regular Cab', 1994);
5262
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5262, 'GMC', 'Suburban 1500', 1994);
5263
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5263, 'GMC', 'Suburban 2500', 1994);
5264
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5264, 'GMC', 'Vandura 1500', 1994);
5265
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5265, 'GMC', 'Vandura 2500', 1994);
5266
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5266, 'GMC', 'Vandura 3500', 1994);
5267
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5267, 'GMC', 'Yukon', 1994);
5268
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5268, 'Honda', 'Accord', 1994);
5269
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5269, 'Honda', 'Civic', 1994);
5270
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5270, 'Honda', 'del Sol', 1994);
5271
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5271, 'Honda', 'Passport', 1994);
5272
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5272, 'Honda', 'Prelude', 1994);
5273
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5273, 'HUMMER', 'H1', 1994);
5274
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5274, 'Hyundai', 'Elantra', 1994);
5275
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5275, 'Hyundai', 'Excel', 1994);
5276
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5276, 'Hyundai', 'Scoupe', 1994);
5277
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5277, 'Hyundai', 'Sonata', 1994);
5278
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5278, 'Infiniti', 'G', 1994);
5279
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5279, 'Infiniti', 'J', 1994);
5280
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5280, 'Infiniti', 'Q', 1994);
5281
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5281, 'Isuzu', 'Amigo', 1994);
5282
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5282, 'Isuzu', 'Regular Cab', 1994);
5283
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5283, 'Isuzu', 'Rodeo', 1994);
5284
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5284, 'Isuzu', 'Spacecab', 1994);
5285
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5285, 'Isuzu', 'Trooper', 1994);
5286
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5286, 'Jaguar', 'XJ Series', 1994);
5287
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5287, 'Jeep', 'Cherokee', 1994);
5288
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5288, 'Jeep', 'Grand Cherokee', 1994);
5289
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5289, 'Jeep', 'Wrangler', 1994);
5290
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5290, 'Kia', 'Sephia', 1994);
5291
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5291, 'Land Rover', 'Defender 90', 1994);
5292
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5292, 'Land Rover', 'Discovery', 1994);
5293
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5293, 'Land Rover', 'Range Rover', 1994);
5294
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5294, 'Lexus', 'ES', 1994);
5295
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5295, 'Lexus', 'GS', 1994);
5296
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5296, 'Lexus', 'LS', 1994);
5297
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5297, 'Lexus', 'SC', 1994);
5298
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5298, 'Lincoln', 'Continental', 1994);
5299
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5299, 'Lincoln', 'Mark VIII', 1994);
5300
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5300, 'Lincoln', 'Town Car', 1994);
5301
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5301, 'Mazda', '323', 1994);
5302
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5302, 'Mazda', '626', 1994);
5303
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5303, 'Mazda', '929', 1994);
5304
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5304, 'Mazda', 'B-Series Cab Plus', 1994);
5305
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5305, 'Mazda', 'B-Series Regular Cab', 1994);
5306
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5306, 'Mazda', 'Miata MX-5', 1994);
5307
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5307, 'Mazda', 'MPV', 1994);
5308
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5308, 'Mazda', 'MX-3', 1994);
5309
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5309, 'Mazda', 'MX-6', 1994);
5310
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5310, 'Mazda', 'Navajo', 1994);
5311
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5311, 'Mazda', 'Protege', 1994);
5312
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5312, 'Mazda', 'RX-7', 1994);
5313
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5313, 'Mercedes-Benz', 'C-Class', 1994);
5314
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5314, 'Mercedes-Benz', 'E-Class', 1994);
5315
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5315, 'Mercedes-Benz', 'S-Class', 1994);
5316
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5316, 'Mercedes-Benz', 'SL-Class', 1994);
5317
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5317, 'Mercury', 'Capri', 1994);
5318
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5318, 'Mercury', 'Cougar', 1994);
5319
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5319, 'Mercury', 'Grand Marquis', 1994);
5320
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5320, 'Mercury', 'Sable', 1994);
5321
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5321, 'Mercury', 'Topaz', 1994);
5322
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5322, 'Mercury', 'Tracer', 1994);
5323
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5323, 'Mercury', 'Villager', 1994);
5324
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5324, 'Mitsubishi', '3000GT', 1994);
5325
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5325, 'Mitsubishi', 'Diamante', 1994);
5326
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5326, 'Mitsubishi', 'Eclipse', 1994);
5327
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5327, 'Mitsubishi', 'Expo', 1994);
5328
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5328, 'Mitsubishi', 'Galant', 1994);
5329
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5329, 'Mitsubishi', 'Mighty Max Macro Cab', 1994);
5330
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5330, 'Mitsubishi', 'Mighty Max Regular Cab', 1994);
5331
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5331, 'Mitsubishi', 'Mirage', 1994);
5332
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5332, 'Mitsubishi', 'Montero', 1994);
5333
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5333, 'Mitsubishi', 'Precis', 1994);
5334
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5334, 'Nissan', '240SX', 1994);
5335
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5335, 'Nissan', '300ZX', 1994);
5336
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5336, 'Nissan', 'Altima', 1994);
5337
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5337, 'Nissan', 'King Cab', 1994);
5338
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5338, 'Nissan', 'Maxima', 1994);
5339
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5339, 'Nissan', 'Pathfinder', 1994);
5340
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5340, 'Nissan', 'Quest', 1994);
5341
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5341, 'Nissan', 'Regular Cab', 1994);
5342
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5342, 'Nissan', 'Sentra', 1994);
5343
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5343, 'Oldsmobile', '88', 1994);
5344
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5344, 'Oldsmobile', '98', 1994);
5345
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5345, 'Oldsmobile', 'Achieva', 1994);
5346
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5346, 'Oldsmobile', 'Bravada', 1994);
5347
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5347, 'Oldsmobile', 'Ciera', 1994);
5348
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5348, 'Oldsmobile', 'Cutlass Cruiser', 1994);
5349
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5349, 'Oldsmobile', 'Cutlass Supreme', 1994);
5350
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5350, 'Oldsmobile', 'Silhouette', 1994);
5351
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5351, 'Plymouth', 'Acclaim', 1994);
5352
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5352, 'Plymouth', 'Colt', 1994);
5353
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5353, 'Plymouth', 'Colt Vista', 1994);
5354
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5354, 'Plymouth', 'Grand Voyager', 1994);
5355
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5355, 'Plymouth', 'Laser', 1994);
5356
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5356, 'Plymouth', 'Sundance', 1994);
5357
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5357, 'Plymouth', 'Voyager', 1994);
5358
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5358, 'Pontiac', 'Bonneville', 1994);
5359
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5359, 'Pontiac', 'Firebird', 1994);
5360
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5360, 'Pontiac', 'Grand Am', 1994);
5361
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5361, 'Pontiac', 'Grand Prix', 1994);
5362
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5362, 'Pontiac', 'Sunbird', 1994);
5363
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5363, 'Pontiac', 'Trans Sport', 1994);
5364
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5364, 'Porsche', '911', 1994);
5365
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5365, 'Porsche', '928', 1994);
5366
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5366, 'Porsche', '968', 1994);
5367
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5367, 'Saab', '900', 1994);
5368
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5368, 'Saab', '9000', 1994);
5369
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5369, 'Saturn', 'S-Series', 1994);
5370
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5370, 'Subaru', 'Impreza', 1994);
5371
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5371, 'Subaru', 'Justy', 1994);
5372
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5372, 'Subaru', 'Legacy', 1994);
5373
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5373, 'Subaru', 'Loyale', 1994);
5374
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5374, 'Subaru', 'SVX', 1994);
5375
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5375, 'Suzuki', 'Samurai', 1994);
5376
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5376, 'Suzuki', 'Sidekick', 1994);
5377
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5377, 'Suzuki', 'Swift', 1994);
5378
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5378, 'Toyota', '4Runner', 1994);
5379
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5379, 'Toyota', 'Camry', 1994);
5380
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5380, 'Toyota', 'Celica', 1994);
5381
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5381, 'Toyota', 'Corolla', 1994);
5382
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5382, 'Toyota', 'Land Cruiser', 1994);
5383
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5383, 'Toyota', 'MR2', 1994);
5384
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5384, 'Toyota', 'Paseo', 1994);
5385
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5385, 'Toyota', 'Previa', 1994);
5386
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5386, 'Toyota', 'Regular Cab', 1994);
5387
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5387, 'Toyota', 'Supra', 1994);
5388
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5388, 'Toyota', 'T100 Regular Cab', 1994);
5389
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5389, 'Toyota', 'Tercel', 1994);
5390
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5390, 'Toyota', 'Xtra Cab', 1994);
5391
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5391, 'Volkswagen', 'Corrado', 1994);
5392
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5392, 'Volkswagen', 'Golf III', 1994);
5393
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5393, 'Volkswagen', 'Jetta III', 1994);
5394
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5394, 'Volkswagen', 'Passat', 1994);
5395
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5395, 'Volvo', '850', 1994);
5396
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5396, 'Volvo', '940', 1994);
5397
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5397, 'Volvo', '960', 1994);
5398
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5398, 'Acura', 'Integra', 1993);
5399
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5399, 'Acura', 'Legend', 1993);
5400
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5400, 'Acura', 'NSX', 1993);
5401
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5401, 'Acura', 'Vigor', 1993);
5402
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5402, 'Alfa Romeo', '164', 1993);
5403
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5403, 'Alfa Romeo', 'Spider', 1993);
5404
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5404, 'Audi', '100', 1993);
5405
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5405, 'Audi', '90', 1993);
5406
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5406, 'Audi', 'Quattro', 1993);
5407
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5407, 'Audi', 'S4', 1993);
5408
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5408, 'BMW', '3 Series', 1993);
5409
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5409, 'BMW', '5 Series', 1993);
5410
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5410, 'BMW', '7 Series', 1993);
5411
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5411, 'BMW', '8 Series', 1993);
5412
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5412, 'BMW', 'M5', 1993);
5413
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5413, 'Buick', 'Century', 1993);
5414
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5414, 'Buick', 'LeSabre', 1993);
5415
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5415, 'Buick', 'Park Avenue', 1993);
5416
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5416, 'Buick', 'Regal', 1993);
5417
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5417, 'Buick', 'Riviera', 1993);
5418
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5418, 'Buick', 'Roadmaster', 1993);
5419
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5419, 'Buick', 'Skylark', 1993);
5420
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5420, 'Cadillac', 'Allante', 1993);
5421
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5421, 'Cadillac', 'DeVille', 1993);
5422
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5422, 'Cadillac', 'Eldorado', 1993);
5423
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5423, 'Cadillac', 'Fleetwood', 1993);
5424
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5424, 'Cadillac', 'Seville', 1993);
5425
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5425, 'Cadillac', 'Sixty Special', 1993);
5426
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5426, 'Chevrolet', '1500 Extended Cab', 1993);
5427
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5427, 'Chevrolet', '1500 Regular Cab', 1993);
5428
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5428, 'Chevrolet', '2500 Extended Cab', 1993);
5429
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5429, 'Chevrolet', '2500 Regular Cab', 1993);
5430
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5430, 'Chevrolet', '3500 Crew Cab', 1993);
5431
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5431, 'Chevrolet', '3500 Extended Cab', 1993);
5432
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5432, 'Chevrolet', '3500 Regular Cab', 1993);
5433
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5433, 'Chevrolet', 'APV Cargo', 1993);
5434
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5434, 'Chevrolet', 'Astro Cargo', 1993);
5435
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5435, 'Chevrolet', 'Astro Passenger', 1993);
5436
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5436, 'Chevrolet', 'Beretta', 1993);
5437
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5437, 'Chevrolet', 'Blazer', 1993);
5438
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5438, 'Chevrolet', 'Camaro', 1993);
5439
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5439, 'Chevrolet', 'Caprice Classic', 1993);
5440
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5440, 'Chevrolet', 'Cavalier', 1993);
5441
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5441, 'Chevrolet', 'Corsica', 1993);
5442
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5442, 'Chevrolet', 'Corvette', 1993);
5443
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5443, 'Chevrolet', 'G-Series G10', 1993);
5444
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5444, 'Chevrolet', 'G-Series G20', 1993);
5445
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5445, 'Chevrolet', 'G-Series G30', 1993);
5446
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5446, 'Chevrolet', 'Lumina', 1993);
5447
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5447, 'Chevrolet', 'Lumina APV', 1993);
5448
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5448, 'Chevrolet', 'S10 Blazer', 1993);
5449
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5449, 'Chevrolet', 'S10 Extended Cab', 1993);
5450
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5450, 'Chevrolet', 'S10 Regular Cab', 1993);
5451
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5451, 'Chevrolet', 'Sportvan G10', 1993);
5452
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5452, 'Chevrolet', 'Sportvan G20', 1993);
5453
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5453, 'Chevrolet', 'Sportvan G30', 1993);
5454
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5454, 'Chevrolet', 'Suburban 1500', 1993);
5455
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5455, 'Chevrolet', 'Suburban 2500', 1993);
5456
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5456, 'Chrysler', 'Concorde', 1993);
5457
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5457, 'Chrysler', 'Fifth Ave', 1993);
5458
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5458, 'Chrysler', 'Imperial', 1993);
5459
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5459, 'Chrysler', 'LeBaron', 1993);
5460
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5460, 'Chrysler', 'New Yorker', 1993);
5461
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5461, 'Chrysler', 'Town & Country', 1993);
5462
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5462, 'Dodge', 'Caravan Cargo', 1993);
5463
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5463, 'Dodge', 'Caravan Passenger', 1993);
5464
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5464, 'Dodge', 'Colt', 1993);
5465
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5465, 'Dodge', 'D150 Club Cab', 1993);
5466
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5466, 'Dodge', 'D150 Regular Cab', 1993);
5467
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5467, 'Dodge', 'D250 Club Cab', 1993);
5468
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5468, 'Dodge', 'D250 Regular Cab', 1993);
5469
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5469, 'Dodge', 'D350 Club Cab', 1993);
5470
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5470, 'Dodge', 'D350 Regular Cab', 1993);
5471
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5471, 'Dodge', 'Dakota Club Cab', 1993);
5472
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5472, 'Dodge', 'Dakota Regular Cab', 1993);
5473
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5473, 'Dodge', 'Daytona', 1993);
5474
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5474, 'Dodge', 'Dynasty', 1993);
5475
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5475, 'Dodge', 'Grand Caravan Passenger', 1993);
5476
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5476, 'Dodge', 'Intrepid', 1993);
5477
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5477, 'Dodge', 'Ram 50 Regular Cab', 1993);
5478
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5478, 'Dodge', 'Ram Van B150', 1993);
5479
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5479, 'Dodge', 'Ram Van B250', 1993);
5480
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5480, 'Dodge', 'Ram Van B350', 1993);
5481
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5481, 'Dodge', 'Ram Wagon B150', 1993);
5482
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5482, 'Dodge', 'Ram Wagon B250', 1993);
5483
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5483, 'Dodge', 'Ram Wagon B350', 1993);
5484
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5484, 'Dodge', 'Ramcharger', 1993);
5485
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5485, 'Dodge', 'Shadow', 1993);
5486
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5486, 'Dodge', 'Spirit', 1993);
5487
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5487, 'Dodge', 'Stealth', 1993);
5488
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5488, 'Dodge', 'Viper', 1993);
5489
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5489, 'Eagle', 'Summit', 1993);
5490
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5490, 'Eagle', 'Talon', 1993);
5491
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5491, 'Eagle', 'Vision', 1993);
5492
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5492, 'Ford', 'Aerostar Cargo', 1993);
5493
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5493, 'Ford', 'Aerostar Passenger', 1993);
5494
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5494, 'Ford', 'Bronco', 1993);
5495
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5495, 'Ford', 'Club Wagon', 1993);
5496
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5496, 'Ford', 'Crown Victoria', 1993);
5497
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5497, 'Ford', 'Econoline E150 Cargo', 1993);
5498
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5498, 'Ford', 'Econoline E250 Cargo', 1993);
5499
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5499, 'Ford', 'Econoline E350 Cargo', 1993);
5500
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5500, 'Ford', 'Escort', 1993);
5501
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5501, 'Ford', 'Explorer', 1993);
5502
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5502, 'Ford', 'F150 Regular Cab', 1993);
5503
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5503, 'Ford', 'F150 Super Cab', 1993);
5504
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5504, 'Ford', 'F250 Regular Cab', 1993);
5505
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5505, 'Ford', 'F250 Super Cab', 1993);
5506
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5506, 'Ford', 'F350 Crew Cab', 1993);
5507
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5507, 'Ford', 'F350 Regular Cab', 1993);
5508
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5508, 'Ford', 'F350 Super Cab', 1993);
5509
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5509, 'Ford', 'Festiva', 1993);
5510
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5510, 'Ford', 'Mustang', 1993);
5511
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5511, 'Ford', 'Probe', 1993);
5512
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5512, 'Ford', 'Ranger Regular Cab', 1993);
5513
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5513, 'Ford', 'Ranger Super Cab', 1993);
5514
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5514, 'Ford', 'Taurus', 1993);
5515
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5515, 'Ford', 'Tempo', 1993);
5516
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5516, 'Ford', 'Thunderbird', 1993);
5517
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5517, 'Geo', 'Metro', 1993);
5518
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5518, 'Geo', 'Prizm', 1993);
5519
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5519, 'Geo', 'Storm', 1993);
5520
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5520, 'Geo', 'Tracker', 1993);
5521
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5521, 'GMC', '1500 Club Coupe', 1993);
5522
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5522, 'GMC', '1500 Regular Cab', 1993);
5523
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5523, 'GMC', '2500 Club Coupe', 1993);
5524
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5524, 'GMC', '2500 Regular Cab', 1993);
5525
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5525, 'GMC', '3500 Club Coupe', 1993);
5526
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5526, 'GMC', '3500 Crew Cab', 1993);
5527
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5527, 'GMC', '3500 Regular Cab', 1993);
5528
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5528, 'GMC', 'Jimmy', 1993);
5529
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5529, 'GMC', 'Rally Wagon 1500', 1993);
5530
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5530, 'GMC', 'Rally Wagon 2500', 1993);
5531
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5531, 'GMC', 'Rally Wagon 3500', 1993);
5532
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5532, 'GMC', 'Safari Cargo', 1993);
5533
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5533, 'GMC', 'Safari Passenger', 1993);
5534
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5534, 'GMC', 'Sonoma Club Coupe Cab', 1993);
5535
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5535, 'GMC', 'Sonoma Regular Cab', 1993);
5536
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5536, 'GMC', 'Suburban 1500', 1993);
5537
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5537, 'GMC', 'Suburban 2500', 1993);
5538
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5538, 'GMC', 'Vandura 1500', 1993);
5539
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5539, 'GMC', 'Vandura 2500', 1993);
5540
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5540, 'GMC', 'Vandura 3500', 1993);
5541
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5541, 'GMC', 'Yukon', 1993);
5542
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5542, 'Honda', 'Accord', 1993);
5543
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5543, 'Honda', 'Civic', 1993);
5544
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5544, 'Honda', 'del Sol', 1993);
5545
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5545, 'Honda', 'Prelude', 1993);
5546
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5546, 'HUMMER', 'H1', 1993);
5547
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5547, 'Hyundai', 'Elantra', 1993);
5548
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5548, 'Hyundai', 'Excel', 1993);
5549
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5549, 'Hyundai', 'Scoupe', 1993);
5550
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5550, 'Hyundai', 'Sonata', 1993);
5551
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5551, 'Infiniti', 'G', 1993);
5552
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5552, 'Infiniti', 'J', 1993);
5553
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5553, 'Infiniti', 'Q', 1993);
5554
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5554, 'Isuzu', 'Amigo', 1993);
5555
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5555, 'Isuzu', 'Regular Cab', 1993);
5556
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5556, 'Isuzu', 'Rodeo', 1993);
5557
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5557, 'Isuzu', 'Spacecab', 1993);
5558
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5558, 'Isuzu', 'Stylus', 1993);
5559
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5559, 'Isuzu', 'Trooper', 1993);
5560
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5560, 'Jaguar', 'XJ Series', 1993);
5561
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5561, 'Jeep', 'Cherokee', 1993);
5562
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5562, 'Jeep', 'Grand Cherokee', 1993);
5563
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5563, 'Jeep', 'Wrangler', 1993);
5564
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5564, 'Land Rover', 'Defender 110', 1993);
5565
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5565, 'Land Rover', 'Range Rover', 1993);
5566
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5566, 'Lexus', 'ES', 1993);
5567
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5567, 'Lexus', 'GS', 1993);
5568
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5568, 'Lexus', 'LS', 1993);
5569
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5569, 'Lexus', 'SC', 1993);
5570
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5570, 'Lincoln', 'Continental', 1993);
5571
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5571, 'Lincoln', 'Mark VIII', 1993);
5572
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5572, 'Lincoln', 'Town Car', 1993);
5573
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5573, 'Mazda', '323', 1993);
5574
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5574, 'Mazda', '626', 1993);
5575
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5575, 'Mazda', '929', 1993);
5576
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5576, 'Mazda', 'B-Series Cab Plus', 1993);
5577
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5577, 'Mazda', 'B-Series Regular Cab', 1993);
5578
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5578, 'Mazda', 'Miata MX-5', 1993);
5579
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5579, 'Mazda', 'MPV', 1993);
5580
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5580, 'Mazda', 'MX-3', 1993);
5581
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5581, 'Mazda', 'MX-6', 1993);
5582
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5582, 'Mazda', 'Navajo', 1993);
5583
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5583, 'Mazda', 'Protege', 1993);
5584
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5584, 'Mazda', 'RX-7', 1993);
5585
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5585, 'Mercedes-Benz', '190E', 1993);
5586
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5586, 'Mercedes-Benz', '300CE', 1993);
5587
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5587, 'Mercedes-Benz', '300D', 1993);
5588
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5588, 'Mercedes-Benz', '300E', 1993);
5589
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5589, 'Mercedes-Benz', '300SD', 1993);
5590
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5590, 'Mercedes-Benz', '300SE', 1993);
5591
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5591, 'Mercedes-Benz', '300SL', 1993);
5592
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5592, 'Mercedes-Benz', '300TE', 1993);
5593
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5593, 'Mercedes-Benz', '400E', 1993);
5594
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5594, 'Mercedes-Benz', '400SEL', 1993);
5595
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5595, 'Mercedes-Benz', '500E', 1993);
5596
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5596, 'Mercedes-Benz', '500SEC', 1993);
5597
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5597, 'Mercedes-Benz', '500SEL', 1993);
5598
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5598, 'Mercedes-Benz', '500SL', 1993);
5599
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5599, 'Mercedes-Benz', '600SEC', 1993);
5600
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5600, 'Mercedes-Benz', '600SEL', 1993);
5601
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5601, 'Mercedes-Benz', '600SL', 1993);
5602
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5602, 'Mercury', 'Capri', 1993);
5603
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5603, 'Mercury', 'Cougar', 1993);
5604
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5604, 'Mercury', 'Grand Marquis', 1993);
5605
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5605, 'Mercury', 'Sable', 1993);
5606
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5606, 'Mercury', 'Topaz', 1993);
5607
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5607, 'Mercury', 'Tracer', 1993);
5608
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5608, 'Mercury', 'Villager', 1993);
5609
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5609, 'Mitsubishi', '3000GT', 1993);
5610
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5610, 'Mitsubishi', 'Diamante', 1993);
5611
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5611, 'Mitsubishi', 'Eclipse', 1993);
5612
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5612, 'Mitsubishi', 'Expo', 1993);
5613
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5613, 'Mitsubishi', 'Galant', 1993);
5614
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5614, 'Mitsubishi', 'Mighty Max Macro Cab', 1993);
5615
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5615, 'Mitsubishi', 'Mighty Max Regular Cab', 1993);
5616
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5616, 'Mitsubishi', 'Mirage', 1993);
5617
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5617, 'Mitsubishi', 'Montero', 1993);
5618
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5618, 'Mitsubishi', 'Precis', 1993);
5619
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5619, 'Nissan', '240SX', 1993);
5620
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5620, 'Nissan', '300ZX', 1993);
5621
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5621, 'Nissan', 'Altima', 1993);
5622
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5622, 'Nissan', 'King Cab', 1993);
5623
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5623, 'Nissan', 'Maxima', 1993);
5624
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5624, 'Nissan', 'NX', 1993);
5625
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5625, 'Nissan', 'Pathfinder', 1993);
5626
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5626, 'Nissan', 'Quest', 1993);
5627
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5627, 'Nissan', 'Regular Cab', 1993);
5628
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5628, 'Nissan', 'Sentra', 1993);
5629
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5629, 'Oldsmobile', '88', 1993);
5630
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5630, 'Oldsmobile', '98', 1993);
5631
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5631, 'Oldsmobile', 'Achieva', 1993);
5632
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5632, 'Oldsmobile', 'Bravada', 1993);
5633
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5633, 'Oldsmobile', 'Ciera', 1993);
5634
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5634, 'Oldsmobile', 'Cutlass Cruiser', 1993);
5635
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5635, 'Oldsmobile', 'Cutlass Supreme', 1993);
5636
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5636, 'Oldsmobile', 'Silhouette', 1993);
5637
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5637, 'Plymouth', 'Acclaim', 1993);
5638
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5638, 'Plymouth', 'Colt', 1993);
5639
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5639, 'Plymouth', 'Colt Vista', 1993);
5640
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5640, 'Plymouth', 'Grand Voyager', 1993);
5641
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5641, 'Plymouth', 'Laser', 1993);
5642
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5642, 'Plymouth', 'Sundance', 1993);
5643
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5643, 'Plymouth', 'Voyager', 1993);
5644
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5644, 'Pontiac', 'Bonneville', 1993);
5645
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5645, 'Pontiac', 'Firebird', 1993);
5646
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5646, 'Pontiac', 'Grand Am', 1993);
5647
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5647, 'Pontiac', 'Grand Prix', 1993);
5648
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5648, 'Pontiac', 'LeMans', 1993);
5649
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5649, 'Pontiac', 'Sunbird', 1993);
5650
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5650, 'Pontiac', 'Trans Sport', 1993);
5651
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5651, 'Porsche', '911', 1993);
5652
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5652, 'Porsche', '928', 1993);
5653
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5653, 'Porsche', '968', 1993);
5654
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5654, 'Saab', '900', 1993);
5655
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5655, 'Saab', '9000', 1993);
5656
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5656, 'Saturn', 'S-Series', 1993);
5657
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5657, 'Subaru', 'Impreza', 1993);
5658
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5658, 'Subaru', 'Justy', 1993);
5659
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5659, 'Subaru', 'Legacy', 1993);
5660
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5660, 'Subaru', 'Loyale', 1993);
5661
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5661, 'Subaru', 'SVX', 1993);
5662
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5662, 'Suzuki', 'Samurai', 1993);
5663
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5663, 'Suzuki', 'Sidekick', 1993);
5664
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5664, 'Suzuki', 'Swift', 1993);
5665
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5665, 'Toyota', '4Runner', 1993);
5666
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5666, 'Toyota', 'Camry', 1993);
5667
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5667, 'Toyota', 'Celica', 1993);
5668
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5668, 'Toyota', 'Corolla', 1993);
5669
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5669, 'Toyota', 'Land Cruiser', 1993);
5670
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5670, 'Toyota', 'MR2', 1993);
5671
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5671, 'Toyota', 'Paseo', 1993);
5672
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5672, 'Toyota', 'Previa', 1993);
5673
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5673, 'Toyota', 'Regular Cab', 1993);
5674
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5674, 'Toyota', 'Supra', 1993);
5675
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5675, 'Toyota', 'T100 Regular Cab', 1993);
5676
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5676, 'Toyota', 'Tercel', 1993);
5677
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5677, 'Toyota', 'Xtra Cab', 1993);
5678
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5678, 'Volkswagen', 'Cabriolet', 1993);
5679
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5679, 'Volkswagen', 'Corrado', 1993);
5680
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5680, 'Volkswagen', 'Eurovan', 1993);
5681
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5681, 'Volkswagen', 'Fox', 1993);
5682
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5682, 'Volkswagen', 'Golf III', 1993);
5683
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5683, 'Volkswagen', 'Jetta III', 1993);
5684
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5684, 'Volkswagen', 'Passat', 1993);
5685
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5685, 'Volvo', '240', 1993);
5686
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5686, 'Volvo', '850', 1993);
5687
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5687, 'Volvo', '940', 1993);
5688
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5688, 'Volvo', '960', 1993);
5689
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5689, 'Acura', 'Integra', 1992);
5690
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5690, 'Acura', 'Legend', 1992);
5691
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5691, 'Acura', 'NSX', 1992);
5692
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5692, 'Acura', 'Vigor', 1992);
5693
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5693, 'Alfa Romeo', '164', 1992);
5694
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5694, 'Alfa Romeo', 'Spider', 1992);
5695
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5695, 'Audi', '100', 1992);
5696
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5696, 'Audi', '80', 1992);
5697
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5697, 'Audi', 'Quattro', 1992);
5698
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5698, 'Audi', 'S4', 1992);
5699
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5699, 'BMW', '3 Series', 1992);
5700
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5700, 'BMW', '5 Series', 1992);
5701
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5701, 'BMW', '7 Series', 1992);
5702
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5702, 'BMW', '8 Series', 1992);
5703
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5703, 'BMW', 'M5', 1992);
5704
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5704, 'Buick', 'Century', 1992);
5705
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5705, 'Buick', 'LeSabre', 1992);
5706
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5706, 'Buick', 'Park Avenue', 1992);
5707
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5707, 'Buick', 'Regal', 1992);
5708
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5708, 'Buick', 'Riviera', 1992);
5709
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5709, 'Buick', 'Roadmaster', 1992);
5710
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5710, 'Buick', 'Skylark', 1992);
5711
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5711, 'Cadillac', 'Allante', 1992);
5712
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5712, 'Cadillac', 'Brougham', 1992);
5713
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5713, 'Cadillac', 'DeVille', 1992);
5714
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5714, 'Cadillac', 'Eldorado', 1992);
5715
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5715, 'Cadillac', 'Fleetwood', 1992);
5716
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5716, 'Cadillac', 'Seville', 1992);
5717
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5717, 'Chevrolet', '1500 Extended Cab', 1992);
5718
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5718, 'Chevrolet', '1500 Regular Cab', 1992);
5719
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5719, 'Chevrolet', '2500 Extended Cab', 1992);
5720
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5720, 'Chevrolet', '2500 Regular Cab', 1992);
5721
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5721, 'Chevrolet', '3500 Crew Cab', 1992);
5722
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5722, 'Chevrolet', '3500 Extended Cab', 1992);
5723
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5723, 'Chevrolet', '3500 Regular Cab', 1992);
5724
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5724, 'Chevrolet', 'APV Cargo', 1992);
5725
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5725, 'Chevrolet', 'Astro Cargo', 1992);
5726
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5726, 'Chevrolet', 'Astro Passenger', 1992);
5727
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5727, 'Chevrolet', 'Beretta', 1992);
5728
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5728, 'Chevrolet', 'Blazer', 1992);
5729
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5729, 'Chevrolet', 'Camaro', 1992);
5730
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5730, 'Chevrolet', 'Caprice', 1992);
5731
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5731, 'Chevrolet', 'Cavalier', 1992);
5732
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5732, 'Chevrolet', 'Corsica', 1992);
5733
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5733, 'Chevrolet', 'Corvette', 1992);
5734
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5734, 'Chevrolet', 'G-Series G10', 1992);
5735
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5735, 'Chevrolet', 'G-Series G20', 1992);
5736
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5736, 'Chevrolet', 'G-Series G30', 1992);
5737
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5737, 'Chevrolet', 'Lumina', 1992);
5738
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5738, 'Chevrolet', 'Lumina APV', 1992);
5739
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5739, 'Chevrolet', 'S10 Blazer', 1992);
5740
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5740, 'Chevrolet', 'S10 Extended Cab', 1992);
5741
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5741, 'Chevrolet', 'S10 Regular Cab', 1992);
5742
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5742, 'Chevrolet', 'Sportvan G10', 1992);
5743
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5743, 'Chevrolet', 'Sportvan G20', 1992);
5744
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5744, 'Chevrolet', 'Sportvan G30', 1992);
5745
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5745, 'Chevrolet', 'Suburban 1500', 1992);
5746
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5746, 'Chevrolet', 'Suburban 2500', 1992);
5747
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5747, 'Chrysler', 'Fifth Ave', 1992);
5748
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5748, 'Chrysler', 'Imperial', 1992);
5749
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5749, 'Chrysler', 'LeBaron', 1992);
5750
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5750, 'Chrysler', 'New Yorker', 1992);
5751
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5751, 'Chrysler', 'Town & Country', 1992);
5752
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5752, 'Daihatsu', 'Charade', 1992);
5753
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5753, 'Daihatsu', 'Rocky', 1992);
5754
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5754, 'Dodge', 'Caravan Cargo', 1992);
5755
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5755, 'Dodge', 'Caravan Passenger', 1992);
5756
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5756, 'Dodge', 'Colt', 1992);
5757
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5757, 'Dodge', 'D150 Club Cab', 1992);
5758
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5758, 'Dodge', 'D150 Regular Cab', 1992);
5759
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5759, 'Dodge', 'D250 Club Cab', 1992);
5760
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5760, 'Dodge', 'D250 Regular Cab', 1992);
5761
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5761, 'Dodge', 'D350 Club Cab', 1992);
5762
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5762, 'Dodge', 'D350 Regular Cab', 1992);
5763
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5763, 'Dodge', 'Dakota Club Cab', 1992);
5764
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5764, 'Dodge', 'Dakota Regular Cab', 1992);
5765
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5765, 'Dodge', 'Daytona', 1992);
5766
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5766, 'Dodge', 'Dynasty', 1992);
5767
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5767, 'Dodge', 'Grand Caravan Passenger', 1992);
5768
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5768, 'Dodge', 'Monaco', 1992);
5769
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5769, 'Dodge', 'Ram 50 Regular Cab', 1992);
5770
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5770, 'Dodge', 'Ram Van B150', 1992);
5771
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5771, 'Dodge', 'Ram Van B250', 1992);
5772
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5772, 'Dodge', 'Ram Van B350', 1992);
5773
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5773, 'Dodge', 'Ram Wagon B150', 1992);
5774
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5774, 'Dodge', 'Ram Wagon B250', 1992);
5775
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5775, 'Dodge', 'Ram Wagon B350', 1992);
5776
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5776, 'Dodge', 'Ramcharger', 1992);
5777
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5777, 'Dodge', 'Shadow', 1992);
5778
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5778, 'Dodge', 'Spirit', 1992);
5779
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5779, 'Dodge', 'Stealth', 1992);
5780
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5780, 'Dodge', 'Viper', 1992);
5781
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5781, 'Eagle', 'Premier', 1992);
5782
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5782, 'Eagle', 'Summit', 1992);
5783
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5783, 'Eagle', 'Talon', 1992);
5784
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5784, 'Ford', 'Aerostar Cargo', 1992);
5785
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5785, 'Ford', 'Aerostar Passenger', 1992);
5786
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5786, 'Ford', 'Bronco', 1992);
5787
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5787, 'Ford', 'Club Wagon', 1992);
5788
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5788, 'Ford', 'Crown Victoria', 1992);
5789
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5789, 'Ford', 'Econoline E150 Cargo', 1992);
5790
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5790, 'Ford', 'Econoline E250 Cargo', 1992);
5791
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5791, 'Ford', 'Econoline E350 Cargo', 1992);
5792
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5792, 'Ford', 'Escort', 1992);
5793
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5793, 'Ford', 'Explorer', 1992);
5794
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5794, 'Ford', 'F150 Regular Cab', 1992);
5795
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5795, 'Ford', 'F150 Super Cab', 1992);
5796
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5796, 'Ford', 'F250 Regular Cab', 1992);
5797
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5797, 'Ford', 'F250 Super Cab', 1992);
5798
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5798, 'Ford', 'F350 Crew Cab', 1992);
5799
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5799, 'Ford', 'F350 Regular Cab', 1992);
5800
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5800, 'Ford', 'F350 Super Cab', 1992);
5801
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5801, 'Ford', 'Festiva', 1992);
5802
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5802, 'Ford', 'Mustang', 1992);
5803
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5803, 'Ford', 'Probe', 1992);
5804
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5804, 'Ford', 'Ranger Regular Cab', 1992);
5805
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5805, 'Ford', 'Ranger Super Cab', 1992);
5806
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5806, 'Ford', 'Taurus', 1992);
5807
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5807, 'Ford', 'Tempo', 1992);
5808
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5808, 'Ford', 'Thunderbird', 1992);
5809
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5809, 'Geo', 'Metro', 1992);
5810
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5810, 'Geo', 'Prizm', 1992);
5811
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5811, 'Geo', 'Storm', 1992);
5812
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5812, 'Geo', 'Tracker', 1992);
5813
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5813, 'GMC', '1500 Club Coupe', 1992);
5814
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5814, 'GMC', '1500 Regular Cab', 1992);
5815
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5815, 'GMC', '2500 Club Coupe', 1992);
5816
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5816, 'GMC', '2500 Regular Cab', 1992);
5817
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5817, 'GMC', '3500 Club Coupe', 1992);
5818
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5818, 'GMC', '3500 Crew Cab', 1992);
5819
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5819, 'GMC', '3500 Regular Cab', 1992);
5820
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5820, 'GMC', 'Jimmy', 1992);
5821
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5821, 'GMC', 'Rally Wagon 1500', 1992);
5822
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5822, 'GMC', 'Rally Wagon 2500', 1992);
5823
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5823, 'GMC', 'Rally Wagon 3500', 1992);
5824
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5824, 'GMC', 'Safari Cargo', 1992);
5825
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5825, 'GMC', 'Safari Passenger', 1992);
5826
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5826, 'GMC', 'Sonoma Club Cab', 1992);
5827
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5827, 'GMC', 'Sonoma Regular Cab', 1992);
5828
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5828, 'GMC', 'Suburban 1500', 1992);
5829
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5829, 'GMC', 'Suburban 2500', 1992);
5830
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5830, 'GMC', 'Vandura 1500', 1992);
5831
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5831, 'GMC', 'Vandura 2500', 1992);
5832
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5832, 'GMC', 'Vandura 3500', 1992);
5833
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5833, 'GMC', 'Yukon', 1992);
5834
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5834, 'Honda', 'Accord', 1992);
5835
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5835, 'Honda', 'Civic', 1992);
5836
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5836, 'Honda', 'Prelude', 1992);
5837
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5837, 'Hyundai', 'Elantra', 1992);
5838
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5838, 'Hyundai', 'Excel', 1992);
5839
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5839, 'Hyundai', 'Scoupe', 1992);
5840
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5840, 'Hyundai', 'Sonata', 1992);
5841
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5841, 'Infiniti', 'G', 1992);
5842
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5842, 'Infiniti', 'M', 1992);
5843
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5843, 'Infiniti', 'Q', 1992);
5844
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5844, 'Isuzu', 'Amigo', 1992);
5845
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5845, 'Isuzu', 'Impulse', 1992);
5846
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5846, 'Isuzu', 'Regular Cab', 1992);
5847
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5847, 'Isuzu', 'Rodeo', 1992);
5848
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5848, 'Isuzu', 'Spacecab', 1992);
5849
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5849, 'Isuzu', 'Stylus', 1992);
5850
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5850, 'Isuzu', 'Trooper', 1992);
5851
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5851, 'Jaguar', 'XJ Series', 1992);
5852
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5852, 'Jeep', 'Cherokee', 1992);
5853
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5853, 'Jeep', 'Comanche Regular Cab', 1992);
5854
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5854, 'Jeep', 'Wrangler', 1992);
5855
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5855, 'Land Rover', 'Range Rover', 1992);
5856
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5856, 'Lexus', 'ES', 1992);
5857
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5857, 'Lexus', 'LS', 1992);
5858
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5858, 'Lexus', 'SC', 1992);
5859
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5859, 'Lincoln', 'Continental', 1992);
5860
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5860, 'Lincoln', 'Mark VII', 1992);
5861
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5861, 'Lincoln', 'Town Car', 1992);
5862
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5862, 'Mazda', '323', 1992);
5863
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5863, 'Mazda', '626', 1992);
5864
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5864, 'Mazda', '929', 1992);
5865
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5865, 'Mazda', 'B-Series Cab Plus', 1992);
5866
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5866, 'Mazda', 'B-Series Regular Cab', 1992);
5867
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5867, 'Mazda', 'Miata MX-5', 1992);
5868
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5868, 'Mazda', 'MPV', 1992);
5869
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5869, 'Mazda', 'MX-3', 1992);
5870
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5870, 'Mazda', 'MX-6', 1992);
5871
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5871, 'Mazda', 'Navajo', 1992);
5872
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5872, 'Mazda', 'Protege', 1992);
5873
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5873, 'Mercedes-Benz', '190E', 1992);
5874
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5874, 'Mercedes-Benz', '300CE', 1992);
5875
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5875, 'Mercedes-Benz', '300D', 1992);
5876
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5876, 'Mercedes-Benz', '300E', 1992);
5877
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5877, 'Mercedes-Benz', '300SD', 1992);
5878
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5878, 'Mercedes-Benz', '300SE', 1992);
5879
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5879, 'Mercedes-Benz', '300SL', 1992);
5880
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5880, 'Mercedes-Benz', '300TE', 1992);
5881
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5881, 'Mercedes-Benz', '400E', 1992);
5882
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5882, 'Mercedes-Benz', '400SE', 1992);
5883
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5883, 'Mercedes-Benz', '500E', 1992);
5884
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5884, 'Mercedes-Benz', '500SEL', 1992);
5885
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5885, 'Mercedes-Benz', '500SL', 1992);
5886
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5886, 'Mercedes-Benz', '600SEL', 1992);
5887
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5887, 'Mercury', 'Capri', 1992);
5888
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5888, 'Mercury', 'Cougar', 1992);
5889
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5889, 'Mercury', 'Grand Marquis', 1992);
5890
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5890, 'Mercury', 'Sable', 1992);
5891
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5891, 'Mercury', 'Topaz', 1992);
5892
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5892, 'Mercury', 'Tracer', 1992);
5893
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5893, 'Mitsubishi', '3000GT', 1992);
5894
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5894, 'Mitsubishi', 'Diamante', 1992);
5895
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5895, 'Mitsubishi', 'Eclipse', 1992);
5896
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5896, 'Mitsubishi', 'Expo', 1992);
5897
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5897, 'Mitsubishi', 'Galant', 1992);
5898
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5898, 'Mitsubishi', 'Mighty Max Macro Cab', 1992);
5899
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5899, 'Mitsubishi', 'Mighty Max Regular Cab', 1992);
5900
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5900, 'Mitsubishi', 'Mirage', 1992);
5901
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5901, 'Mitsubishi', 'Montero', 1992);
5902
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5902, 'Mitsubishi', 'Precis', 1992);
5903
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5903, 'Nissan', '240SX', 1992);
5904
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5904, 'Nissan', '300ZX', 1992);
5905
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5905, 'Nissan', 'King Cab', 1992);
5906
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5906, 'Nissan', 'Maxima', 1992);
5907
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5907, 'Nissan', 'NX', 1992);
5908
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5908, 'Nissan', 'Pathfinder', 1992);
5909
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5909, 'Nissan', 'Regular Cab', 1992);
5910
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5910, 'Nissan', 'Sentra', 1992);
5911
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5911, 'Nissan', 'Stanza', 1992);
5912
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5912, 'Oldsmobile', '88', 1992);
5913
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5913, 'Oldsmobile', '98', 1992);
5914
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5914, 'Oldsmobile', 'Achieva', 1992);
5915
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5915, 'Oldsmobile', 'Bravada', 1992);
5916
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5916, 'Oldsmobile', 'Ciera', 1992);
5917
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5917, 'Oldsmobile', 'Custom Cruiser', 1992);
5918
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5918, 'Oldsmobile', 'Cutlass Supreme', 1992);
5919
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5919, 'Oldsmobile', 'Silhouette', 1992);
5920
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5920, 'Oldsmobile', 'Toronado', 1992);
5921
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5921, 'Plymouth', 'Acclaim', 1992);
5922
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5922, 'Plymouth', 'Colt', 1992);
5923
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5923, 'Plymouth', 'Colt Vista', 1992);
5924
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5924, 'Plymouth', 'Grand Voyager', 1992);
5925
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5925, 'Plymouth', 'Laser', 1992);
5926
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5926, 'Plymouth', 'Sundance', 1992);
5927
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5927, 'Plymouth', 'Voyager', 1992);
5928
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5928, 'Pontiac', 'Bonneville', 1992);
5929
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5929, 'Pontiac', 'Firebird', 1992);
5930
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5930, 'Pontiac', 'Grand Am', 1992);
5931
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5931, 'Pontiac', 'Grand Prix', 1992);
5932
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5932, 'Pontiac', 'LeMans', 1992);
5933
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5933, 'Pontiac', 'Sunbird', 1992);
5934
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5934, 'Pontiac', 'Trans Sport', 1992);
5935
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5935, 'Porsche', '911', 1992);
5936
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5936, 'Porsche', '968', 1992);
5937
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5937, 'Saab', '900', 1992);
5938
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5938, 'Saab', '9000', 1992);
5939
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5939, 'Saturn', 'S-Series', 1992);
5940
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5940, 'Subaru', 'Justy', 1992);
5941
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5941, 'Subaru', 'Legacy', 1992);
5942
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5942, 'Subaru', 'Loyale', 1992);
5943
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5943, 'Subaru', 'SVX', 1992);
5944
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5944, 'Suzuki', 'Samurai', 1992);
5945
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5945, 'Suzuki', 'Sidekick', 1992);
5946
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5946, 'Suzuki', 'Swift', 1992);
5947
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5947, 'Toyota', '4Runner', 1992);
5948
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5948, 'Toyota', 'Camry', 1992);
5949
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5949, 'Toyota', 'Celica', 1992);
5950
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5950, 'Toyota', 'Corolla', 1992);
5951
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5951, 'Toyota', 'Cressida', 1992);
5952
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5952, 'Toyota', 'Land Cruiser', 1992);
5953
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5953, 'Toyota', 'MR2', 1992);
5954
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5954, 'Toyota', 'Paseo', 1992);
5955
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5955, 'Toyota', 'Previa', 1992);
5956
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5956, 'Toyota', 'Regular Cab', 1992);
5957
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5957, 'Toyota', 'Supra', 1992);
5958
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5958, 'Toyota', 'Tercel', 1992);
5959
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5959, 'Toyota', 'Xtra Cab', 1992);
5960
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5960, 'Volkswagen', 'Cabriolet', 1992);
5961
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5961, 'Volkswagen', 'Corrado', 1992);
5962
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5962, 'Volkswagen', 'Fox', 1992);
5963
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5963, 'Volkswagen', 'Golf', 1992);
5964
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5964, 'Volkswagen', 'GTI', 1992);
5965
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5965, 'Volkswagen', 'Jetta', 1992);
5966
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5966, 'Volkswagen', 'Passat', 1992);
5967
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5967, 'Volvo', '240', 1992);
5968
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5968, 'Volvo', '740', 1992);
5969
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5969, 'Volvo', '940', 1992);
5970
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5970, 'Volvo', '960', 1992);
5971
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5971, 'Acura', 'Integra', 1991);
5972
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5972, 'Acura', 'Legend', 1991);
5973
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5973, 'Acura', 'NSX', 1991);
5974
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5974, 'Alfa Romeo', '164', 1991);
5975
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5975, 'Alfa Romeo', 'Spider', 1991);
5976
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5976, 'Audi', '100', 1991);
5977
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5977, 'Audi', '200', 1991);
5978
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5978, 'Audi', '80', 1991);
5979
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5979, 'Audi', '90', 1991);
5980
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5980, 'Audi', 'Quattro', 1991);
5981
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5981, 'BMW', '3 Series', 1991);
5982
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5982, 'BMW', '5 Series', 1991);
5983
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5983, 'BMW', '7 Series', 1991);
5984
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5984, 'BMW', '8 Series', 1991);
5985
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5985, 'BMW', 'M3', 1991);
5986
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5986, 'BMW', 'M5', 1991);
5987
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5987, 'Buick', 'Century', 1991);
5988
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5988, 'Buick', 'LeSabre', 1991);
5989
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5989, 'Buick', 'Park Avenue', 1991);
5990
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5990, 'Buick', 'Reatta', 1991);
5991
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5991, 'Buick', 'Regal', 1991);
5992
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5992, 'Buick', 'Riviera', 1991);
5993
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5993, 'Buick', 'Roadmaster', 1991);
5994
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5994, 'Buick', 'Skylark', 1991);
5995
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5995, 'Cadillac', 'Allante', 1991);
5996
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5996, 'Cadillac', 'Brougham', 1991);
5997
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5997, 'Cadillac', 'DeVille', 1991);
5998
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5998, 'Cadillac', 'Eldorado', 1991);
5999
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5999, 'Cadillac', 'Fleetwood', 1991);
6000
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6000, 'Cadillac', 'Seville', 1991);
6001
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6001, 'Chevrolet', '1500 Extended Cab', 1991);
6002
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6002, 'Chevrolet', '1500 Regular Cab', 1991);
6003
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6003, 'Chevrolet', '2500 Extended Cab', 1991);
6004
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6004, 'Chevrolet', '2500 Regular Cab', 1991);
6005
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6005, 'Chevrolet', '3500 Bonus Cab', 1991);
6006
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6006, 'Chevrolet', '3500 Crew Cab', 1991);
6007
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6007, 'Chevrolet', '3500 Extended Cab', 1991);
6008
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6008, 'Chevrolet', '3500 Regular Cab', 1991);
6009
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6009, 'Chevrolet', 'APV Cargo', 1991);
6010
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6010, 'Chevrolet', 'Astro Cargo', 1991);
6011
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6011, 'Chevrolet', 'Astro Passenger', 1991);
6012
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6012, 'Chevrolet', 'Beretta', 1991);
6013
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6013, 'Chevrolet', 'Blazer', 1991);
6014
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6014, 'Chevrolet', 'Camaro', 1991);
6015
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6015, 'Chevrolet', 'Caprice', 1991);
6016
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6016, 'Chevrolet', 'Cavalier', 1991);
6017
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6017, 'Chevrolet', 'Corsica', 1991);
6018
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6018, 'Chevrolet', 'Corvette', 1991);
6019
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6019, 'Chevrolet', 'G-Series G10', 1991);
6020
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6020, 'Chevrolet', 'G-Series G20', 1991);
6021
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6021, 'Chevrolet', 'G-Series G30', 1991);
6022
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6022, 'Chevrolet', 'Lumina', 1991);
6023
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6023, 'Chevrolet', 'Lumina APV', 1991);
6024
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6024, 'Chevrolet', 'S10 Blazer', 1991);
6025
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6025, 'Chevrolet', 'S10 Extended Cab', 1991);
6026
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6026, 'Chevrolet', 'S10 Regular Cab', 1991);
6027
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6027, 'Chevrolet', 'Sportvan G10', 1991);
6028
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6028, 'Chevrolet', 'Sportvan G20', 1991);
6029
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6029, 'Chevrolet', 'Sportvan G30', 1991);
6030
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6030, 'Chevrolet', 'Suburban 1500', 1991);
6031
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6031, 'Chevrolet', 'Suburban 2500', 1991);
6032
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6032, 'Chrysler', 'Fifth Ave', 1991);
6033
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6033, 'Chrysler', 'Imperial', 1991);
6034
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6034, 'Chrysler', 'LeBaron', 1991);
6035
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6035, 'Chrysler', 'New Yorker', 1991);
6036
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6036, 'Chrysler', 'TC', 1991);
6037
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6037, 'Chrysler', 'Town & Country', 1991);
6038
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6038, 'Daihatsu', 'Charade', 1991);
6039
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6039, 'Daihatsu', 'Rocky', 1991);
6040
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6040, 'Dodge', 'Caravan Cargo', 1991);
6041
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6041, 'Dodge', 'Caravan Passenger', 1991);
6042
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6042, 'Dodge', 'Colt', 1991);
6043
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6043, 'Dodge', 'Colt Vista', 1991);
6044
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6044, 'Dodge', 'D150 Club Cab', 1991);
6045
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6045, 'Dodge', 'D150 Regular Cab', 1991);
6046
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6046, 'Dodge', 'D250 Club Cab', 1991);
6047
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6047, 'Dodge', 'D250 Regular Cab', 1991);
6048
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6048, 'Dodge', 'D350 Regular Cab', 1991);
6049
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6049, 'Dodge', 'Dakota Club Cab', 1991);
6050
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6050, 'Dodge', 'Dakota Regular Cab', 1991);
6051
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6051, 'Dodge', 'Daytona', 1991);
6052
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6052, 'Dodge', 'Dynasty', 1991);
6053
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6053, 'Dodge', 'Grand Caravan Passenger', 1991);
6054
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6054, 'Dodge', 'Monaco', 1991);
6055
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6055, 'Dodge', 'Ram 50 Regular Cab', 1991);
6056
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6056, 'Dodge', 'Ram 50 Sport Cab', 1991);
6057
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6057, 'Dodge', 'Ram Van B150', 1991);
6058
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6058, 'Dodge', 'Ram Van B250', 1991);
6059
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6059, 'Dodge', 'Ram Van B350', 1991);
6060
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6060, 'Dodge', 'Ram Wagon B150', 1991);
6061
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6061, 'Dodge', 'Ram Wagon B250', 1991);
6062
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6062, 'Dodge', 'Ram Wagon B350', 1991);
6063
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6063, 'Dodge', 'Ramcharger', 1991);
6064
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6064, 'Dodge', 'Shadow', 1991);
6065
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6065, 'Dodge', 'Spirit', 1991);
6066
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6066, 'Dodge', 'Stealth', 1991);
6067
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6067, 'Eagle', 'Premier', 1991);
6068
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6068, 'Eagle', 'Summit', 1991);
6069
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6069, 'Eagle', 'Talon', 1991);
6070
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6070, 'Ford', 'Aerostar Cargo', 1991);
6071
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6071, 'Ford', 'Aerostar Passenger', 1991);
6072
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6072, 'Ford', 'Bronco', 1991);
6073
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6073, 'Ford', 'Club Wagon', 1991);
6074
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6074, 'Ford', 'Country Squire', 1991);
6075
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6075, 'Ford', 'Crown Victoria', 1991);
6076
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6076, 'Ford', 'Econoline E150 Cargo', 1991);
6077
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6077, 'Ford', 'Econoline E250 Cargo', 1991);
6078
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6078, 'Ford', 'Econoline E350 Cargo', 1991);
6079
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6079, 'Ford', 'Escort', 1991);
6080
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6080, 'Ford', 'Explorer', 1991);
6081
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6081, 'Ford', 'F150 Regular Cab', 1991);
6082
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6082, 'Ford', 'F150 Super Cab', 1991);
6083
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6083, 'Ford', 'F250 Regular Cab', 1991);
6084
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6084, 'Ford', 'F250 Super Cab', 1991);
6085
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6085, 'Ford', 'F350 Crew Cab', 1991);
6086
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6086, 'Ford', 'F350 Regular Cab', 1991);
6087
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6087, 'Ford', 'F350 Super Cab', 1991);
6088
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6088, 'Ford', 'Festiva', 1991);
6089
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6089, 'Ford', 'Mustang', 1991);
6090
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6090, 'Ford', 'Probe', 1991);
6091
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6091, 'Ford', 'Ranger Regular Cab', 1991);
6092
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6092, 'Ford', 'Ranger Super Cab', 1991);
6093
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6093, 'Ford', 'Taurus', 1991);
6094
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6094, 'Ford', 'Tempo', 1991);
6095
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6095, 'Ford', 'Thunderbird', 1991);
6096
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6096, 'Geo', 'Metro', 1991);
6097
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6097, 'Geo', 'Prizm', 1991);
6098
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6098, 'Geo', 'Storm', 1991);
6099
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6099, 'Geo', 'Tracker', 1991);
6100
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6100, 'GMC', '1500 Club Coupe', 1991);
6101
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6101, 'GMC', '1500 Regular Cab', 1991);
6102
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6102, 'GMC', '2500 Club Coupe', 1991);
6103
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6103, 'GMC', '2500 Regular Cab', 1991);
6104
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6104, 'GMC', '3500 Bonus Cab', 1991);
6105
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6105, 'GMC', '3500 Club Coupe', 1991);
6106
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6106, 'GMC', '3500 Crew Cab', 1991);
6107
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6107, 'GMC', '3500 Regular Cab', 1991);
6108
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6108, 'GMC', 'Jimmy', 1991);
6109
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6109, 'GMC', 'Rally Wagon 1500', 1991);
6110
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6110, 'GMC', 'Rally Wagon 2500', 1991);
6111
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6111, 'GMC', 'Rally Wagon 3500', 1991);
6112
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6112, 'GMC', 'S15 Jimmy', 1991);
6113
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6113, 'GMC', 'Safari Cargo', 1991);
6114
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6114, 'GMC', 'Safari Passenger', 1991);
6115
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6115, 'GMC', 'Sonoma Club Cab', 1991);
6116
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6116, 'GMC', 'Sonoma Regular Cab', 1991);
6117
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6117, 'GMC', 'Suburban 1500', 1991);
6118
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6118, 'GMC', 'Suburban 2500', 1991);
6119
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6119, 'GMC', 'Vandura 1500', 1991);
6120
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6120, 'GMC', 'Vandura 2500', 1991);
6121
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6121, 'GMC', 'Vandura 3500', 1991);
6122
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6122, 'Honda', 'Accord', 1991);
6123
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6123, 'Honda', 'Civic', 1991);
6124
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6124, 'Honda', 'Prelude', 1991);
6125
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6125, 'Hyundai', 'Excel', 1991);
6126
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6126, 'Hyundai', 'Scoupe', 1991);
6127
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6127, 'Hyundai', 'Sonata', 1991);
6128
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6128, 'Infiniti', 'G', 1991);
6129
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6129, 'Infiniti', 'M', 1991);
6130
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6130, 'Infiniti', 'Q', 1991);
6131
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6131, 'Isuzu', 'Amigo', 1991);
6132
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6132, 'Isuzu', 'Impulse', 1991);
6133
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6133, 'Isuzu', 'Regular Cab', 1991);
6134
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6134, 'Isuzu', 'Rodeo', 1991);
6135
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6135, 'Isuzu', 'Spacecab', 1991);
6136
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6136, 'Isuzu', 'Stylus', 1991);
6137
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6137, 'Isuzu', 'Trooper', 1991);
6138
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6138, 'Jaguar', 'XJ Series', 1991);
6139
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6139, 'Jeep', 'Cherokee', 1991);
6140
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6140, 'Jeep', 'Comanche Regular Cab', 1991);
6141
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6141, 'Jeep', 'Grand Wagoneer', 1991);
6142
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6142, 'Jeep', 'Wrangler', 1991);
6143
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6143, 'Land Rover', 'Range Rover', 1991);
6144
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6144, 'Lexus', 'ES', 1991);
6145
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6145, 'Lexus', 'LS', 1991);
6146
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6146, 'Lincoln', 'Continental', 1991);
6147
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6147, 'Lincoln', 'Mark VII', 1991);
6148
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6148, 'Lincoln', 'Town Car', 1991);
6149
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6149, 'Mazda', '323', 1991);
6150
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6150, 'Mazda', '626', 1991);
6151
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6151, 'Mazda', '929', 1991);
6152
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6152, 'Mazda', 'B-Series Cab Plus', 1991);
6153
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6153, 'Mazda', 'B-Series Regular Cab', 1991);
6154
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6154, 'Mazda', 'Miata MX-5', 1991);
6155
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6155, 'Mazda', 'MPV', 1991);
6156
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6156, 'Mazda', 'MX-6', 1991);
6157
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6157, 'Mazda', 'Navajo', 1991);
6158
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6158, 'Mazda', 'Protege', 1991);
6159
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6159, 'Mazda', 'RX-7', 1991);
6160
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6160, 'Mercedes-Benz', '190E', 1991);
6161
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6161, 'Mercedes-Benz', '300CE', 1991);
6162
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6162, 'Mercedes-Benz', '300D', 1991);
6163
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6163, 'Mercedes-Benz', '300E', 1991);
6164
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6164, 'Mercedes-Benz', '300SE', 1991);
6165
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6165, 'Mercedes-Benz', '300SEL', 1991);
6166
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6166, 'Mercedes-Benz', '300SL', 1991);
6167
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6167, 'Mercedes-Benz', '300TE', 1991);
6168
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6168, 'Mercedes-Benz', '350SD', 1991);
6169
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6169, 'Mercedes-Benz', '350SDL', 1991);
6170
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6170, 'Mercedes-Benz', '420SEL', 1991);
6171
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6171, 'Mercedes-Benz', '500SL', 1991);
6172
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6172, 'Mercedes-Benz', '560SEC', 1991);
6173
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6173, 'Mercedes-Benz', '560SEL', 1991);
6174
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6174, 'Mercury', 'Capri', 1991);
6175
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6175, 'Mercury', 'Cougar', 1991);
6176
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6176, 'Mercury', 'Grand Marquis', 1991);
6177
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6177, 'Mercury', 'Sable', 1991);
6178
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6178, 'Mercury', 'Topaz', 1991);
6179
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6179, 'Mercury', 'Tracer', 1991);
6180
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6180, 'Mitsubishi', '3000GT', 1991);
6181
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6181, 'Mitsubishi', 'Eclipse', 1991);
6182
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6182, 'Mitsubishi', 'Galant', 1991);
6183
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6183, 'Mitsubishi', 'Mighty Max Macro Cab', 1991);
6184
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6184, 'Mitsubishi', 'Mighty Max Regular Cab', 1991);
6185
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6185, 'Mitsubishi', 'Mirage', 1991);
6186
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6186, 'Mitsubishi', 'Montero', 1991);
6187
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6187, 'Mitsubishi', 'Precis', 1991);
6188
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6188, 'Nissan', '240SX', 1991);
6189
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6189, 'Nissan', '300ZX', 1991);
6190
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6190, 'Nissan', 'King Cab', 1991);
6191
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6191, 'Nissan', 'Maxima', 1991);
6192
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6192, 'Nissan', 'NX', 1991);
6193
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6193, 'Nissan', 'Pathfinder', 1991);
6194
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6194, 'Nissan', 'Regular Cab', 1991);
6195
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6195, 'Nissan', 'Sentra', 1991);
6196
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6196, 'Nissan', 'Stanza', 1991);
6197
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6197, 'Oldsmobile', '88', 1991);
6198
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6198, 'Oldsmobile', '98', 1991);
6199
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6199, 'Oldsmobile', 'Bravada', 1991);
6200
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6200, 'Oldsmobile', 'Calais', 1991);
6201
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6201, 'Oldsmobile', 'Ciera', 1991);
6202
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6202, 'Oldsmobile', 'Custom Cruiser', 1991);
6203
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6203, 'Oldsmobile', 'Cutlass Supreme', 1991);
6204
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6204, 'Oldsmobile', 'Silhouette', 1991);
6205
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6205, 'Oldsmobile', 'Toronado', 1991);
6206
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6206, 'Peugeot', '405', 1991);
6207
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6207, 'Peugeot', '505', 1991);
6208
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6208, 'Plymouth', 'Acclaim', 1991);
6209
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6209, 'Plymouth', 'Colt', 1991);
6210
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6210, 'Plymouth', 'Colt Vista', 1991);
6211
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6211, 'Plymouth', 'Grand Voyager', 1991);
6212
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6212, 'Plymouth', 'Laser', 1991);
6213
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6213, 'Plymouth', 'Sundance', 1991);
6214
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6214, 'Plymouth', 'Voyager', 1991);
6215
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6215, 'Pontiac', '6000', 1991);
6216
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6216, 'Pontiac', 'Bonneville', 1991);
6217
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6217, 'Pontiac', 'Firebird', 1991);
6218
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6218, 'Pontiac', 'Grand Am', 1991);
6219
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6219, 'Pontiac', 'Grand Prix', 1991);
6220
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6220, 'Pontiac', 'LeMans', 1991);
6221
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6221, 'Pontiac', 'Sunbird', 1991);
6222
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6222, 'Pontiac', 'Trans Sport', 1991);
6223
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6223, 'Porsche', '911', 1991);
6224
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6224, 'Porsche', '928', 1991);
6225
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6225, 'Porsche', '944', 1991);
6226
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6226, 'Saab', '900', 1991);
6227
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6227, 'Saab', '9000', 1991);
6228
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6228, 'Saturn', 'S-Series', 1991);
6229
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6229, 'Sterling', '827', 1991);
6230
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6230, 'Subaru', 'Justy', 1991);
6231
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6231, 'Subaru', 'Legacy', 1991);
6232
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6232, 'Subaru', 'Loyale', 1991);
6233
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6233, 'Subaru', 'XT', 1991);
6234
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6234, 'Subaru', 'XT6', 1991);
6235
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6235, 'Suzuki', 'Samurai', 1991);
6236
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6236, 'Suzuki', 'Sidekick', 1991);
6237
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6237, 'Suzuki', 'Swift', 1991);
6238
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6238, 'Toyota', '4Runner', 1991);
6239
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6239, 'Toyota', 'Camry', 1991);
6240
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6240, 'Toyota', 'Celica', 1991);
6241
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6241, 'Toyota', 'Corolla', 1991);
6242
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6242, 'Toyota', 'Cressida', 1991);
6243
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6243, 'Toyota', 'Land Cruiser', 1991);
6244
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6244, 'Toyota', 'MR2', 1991);
6245
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6245, 'Toyota', 'Previa', 1991);
6246
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6246, 'Toyota', 'Regular Cab', 1991);
6247
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6247, 'Toyota', 'Supra', 1991);
6248
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6248, 'Toyota', 'Tercel', 1991);
6249
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6249, 'Toyota', 'Xtra Cab', 1991);
6250
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6250, 'Volkswagen', 'Cabriolet', 1991);
6251
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6251, 'Volkswagen', 'Corrado', 1991);
6252
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6252, 'Volkswagen', 'Fox', 1991);
6253
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6253, 'Volkswagen', 'Golf', 1991);
6254
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6254, 'Volkswagen', 'GTI', 1991);
6255
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6255, 'Volkswagen', 'Jetta', 1991);
6256
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6256, 'Volkswagen', 'Passat', 1991);
6257
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6257, 'Volkswagen', 'Vanagon', 1991);
6258
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6258, 'Volvo', '240', 1991);
6259
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6259, 'Volvo', '740', 1991);
6260
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6260, 'Volvo', '940', 1991);
6261
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6261, 'Volvo', 'Coupe', 1991);
6262
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6262, 'Yugo', 'Cabrio', 1991);
6263
+INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6263, 'Yugo', 'GV', 1991);
... ...
@@ -0,0 +1,14 @@
1
+INSERT INTO `vroom360`.`ages`(`ages_from`,`ages_to`) VALUES (10, 15);
2
+INSERT INTO `vroom360`.`ages`(`ages_from`,`ages_to`) VALUES (16, 20);
3
+INSERT INTO `vroom360`.`ages`(`ages_from`,`ages_to`) VALUES (21, 25);
4
+INSERT INTO `vroom360`.`ages`(`ages_from`,`ages_to`) VALUES (26, 30);
5
+INSERT INTO `vroom360`.`ages`(`ages_from`,`ages_to`) VALUES (31, 35);
6
+INSERT INTO `vroom360`.`ages`(`ages_from`,`ages_to`) VALUES (36, 40);
7
+INSERT INTO `vroom360`.`ages`(`ages_from`,`ages_to`) VALUES (41, 45);
8
+INSERT INTO `vroom360`.`ages`(`ages_from`,`ages_to`) VALUES (46, 50);
9
+INSERT INTO `vroom360`.`ages`(`ages_from`,`ages_to`) VALUES (51, 55);
10
+INSERT INTO `vroom360`.`ages`(`ages_from`,`ages_to`) VALUES (56, 60);
11
+INSERT INTO `vroom360`.`ages`(`ages_from`,`ages_to`) VALUES (61, 65);
12
+INSERT INTO `vroom360`.`ages`(`ages_from`,`ages_to`) VALUES (66, 70);
13
+INSERT INTO `vroom360`.`ages`(`ages_from`,`ages_to`) VALUES (71, 75);
14
+INSERT INTO `vroom360`.`ages`(`ages_from`,`ages_to`) VALUES (76, 80);
... ...
@@ -0,0 +1,21 @@
1
+INSERT INTO `vroom360`.`weights`(`weights_from`,`weights_to`) VALUES (51, 60);
2
+INSERT INTO `vroom360`.`weights`(`weights_from`,`weights_to`) VALUES (61, 70);
3
+INSERT INTO `vroom360`.`weights`(`weights_from`,`weights_to`) VALUES (71, 80);
4
+INSERT INTO `vroom360`.`weights`(`weights_from`,`weights_to`) VALUES (81, 90);
5
+INSERT INTO `vroom360`.`weights`(`weights_from`,`weights_to`) VALUES (91, 100);
6
+INSERT INTO `vroom360`.`weights`(`weights_from`,`weights_to`) VALUES (101, 110);
7
+INSERT INTO `vroom360`.`weights`(`weights_from`,`weights_to`) VALUES (111, 120);
8
+INSERT INTO `vroom360`.`weights`(`weights_from`,`weights_to`) VALUES (121, 130);
9
+INSERT INTO `vroom360`.`weights`(`weights_from`,`weights_to`) VALUES (131, 140);
10
+INSERT INTO `vroom360`.`weights`(`weights_from`,`weights_to`) VALUES (141, 150);
11
+INSERT INTO `vroom360`.`weights`(`weights_from`,`weights_to`) VALUES (151, 160);
12
+INSERT INTO `vroom360`.`weights`(`weights_from`,`weights_to`) VALUES (161, 170);
13
+INSERT INTO `vroom360`.`weights`(`weights_from`,`weights_to`) VALUES (171, 180);
14
+INSERT INTO `vroom360`.`weights`(`weights_from`,`weights_to`) VALUES (181, 190);
15
+INSERT INTO `vroom360`.`weights`(`weights_from`,`weights_to`) VALUES (191, 200);
16
+INSERT INTO `vroom360`.`weights`(`weights_from`,`weights_to`) VALUES (201, 210);
17
+INSERT INTO `vroom360`.`weights`(`weights_from`,`weights_to`) VALUES (211, 220);
18
+INSERT INTO `vroom360`.`weights`(`weights_from`,`weights_to`) VALUES (221, 230);
19
+INSERT INTO `vroom360`.`weights`(`weights_from`,`weights_to`) VALUES (231, 240);
20
+INSERT INTO `vroom360`.`weights`(`weights_from`,`weights_to`) VALUES (241, 250);
21
+
... ...
@@ -0,0 +1,11 @@
1
+-- password = loginId
2
+
3
+INSERT INTO `vroom360`.`users` (`users_loginId`, `users_ageid`, `users_gender`, `users_height`, `users_shoesize`, `users_weightid`, `users_zip`, `users_shirtsize`, `users_password`, `users_email`) VALUES ('anmol', 3, 'male', 148, '10', 10, 15219, 42, PASSWORD('anmol'), '[email protected]');
4
+INSERT INTO `vroom360`.`users` (`users_loginId`, `users_ageid`, `users_gender`, `users_height`, `users_shoesize`, `users_weightid`, `users_zip`, `users_shirtsize`, `users_password`, `users_email`) VALUES ('henry', 3, 'male', 150, '10', 10, 15219, 40, PASSWORD('henry'), '[email protected]');
5
+INSERT INTO `vroom360`.`users` (`users_loginId`, `users_ageid`, `users_gender`, `users_height`, `users_shoesize`, `users_weightid`, `users_zip`, `users_shirtsize`, `users_password`, `users_email`) VALUES ('andy', 3, 'male', 145, '8', 10, 15219, 40, PASSWORD('andy'), '[email protected]');
6
+INSERT INTO `vroom360`.`users` (`users_loginId`, `users_ageid`, `users_gender`, `users_height`, `users_shoesize`, `users_weightid`, `users_zip`, `users_shirtsize`, `users_password`, `users_email`) VALUES ('sam', 4, 'female', 145, '6', 10, 15219, 40, PASSWORD('sam'), '[email protected]');
7
+INSERT INTO `vroom360`.`users` (`users_loginId`, `users_ageid`, `users_gender`, `users_height`, `users_shoesize`, `users_weightid`, `users_zip`, `users_shirtsize`, `users_password`, `users_email`) VALUES ('tim', 4, 'male', 148, '9', 10, 15219, 42, PASSWORD('tim'), '[email protected]');
8
+INSERT INTO `vroom360`.`users` (`users_loginId`, `users_ageid`, `users_gender`, `users_height`, `users_shoesize`, `users_weightid`, `users_zip`, `users_shirtsize`, `users_password`, `users_email`) VALUES ('dev', 4, 'male', 147, '11', 12, 15219, 42, PASSWORD('dev'), '[email protected]');
9
+INSERT INTO `vroom360`.`users` (`users_loginId`, `users_ageid`, `users_gender`, `users_height`, `users_shoesize`, `users_weightid`, `users_zip`, `users_shirtsize`, `users_password`, `users_email`) VALUES ('eve', 1, 'female', 23, '1', 1, 15219, 10, PASSWORD('eve'), '[email protected]');
10
+INSERT INTO `vroom360`.`users` (`users_loginId`, `users_ageid`, `users_gender`, `users_height`, `users_shoesize`, `users_weightid`, `users_zip`, `users_shirtsize`, `users_password`, `users_email`) VALUES ('demo', 1, 'female', 23, '1', 1, 15219, 10, PASSWORD('demo'), '[email protected]');
11
+
... ...
@@ -0,0 +1,16 @@
1
+/*
2
+-- Query: select * from `vroom360`.`vroom360`.`questions`
3
+LIMIT 0, 1000
4
+
5
+-- Date: 2011-11-17 14:34
6
+*/
7
+INSERT INTO `vroom360`.`questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (1,'... your ability to see out in this area to your left?','Integer','HigherIsBetter',-0.978,-0.025,-0.563,1);
8
+INSERT INTO `vroom360`.`questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (2,'...getting out of this vehicle?','Integer','HigherIsBetter',-3.624,0.911,-0.89,1);
9
+INSERT INTO `vroom360`.`questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (3,'... your ability to see the front end of this vehicle?','Integer','HigherIsBetter',0.873,0.157,-0.658,1);
10
+INSERT INTO `vroom360`.`questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (4,'... your headroom?','Integer','HigherIsBetter',0.128,-0.514,-0.355,1);
11
+INSERT INTO `vroom360`.`questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (5,'... your ability to see the dashboard gauges?','Integer','HigherIsBetter',0.257,0.334,-0.563,1);
12
+INSERT INTO `vroom360`.`questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (6,'... your ability to see out in this area to your right?','Integer','HigherIsBetter',3.93,0,-0.57,1);
13
+INSERT INTO `vroom360`.`questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (7,'... your ability to see out front?','Integer','HigherIsBetter',0.514,-0.334,-0.658,1);
14
+INSERT INTO `vroom360`.`questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (8,'... the center console?','Integer','HigherIsBetter',1.414,0.746,-0.658,1);
15
+INSERT INTO `vroom360`.`questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (9,'...your ability to see out left?','Integer','HigherIsBetter',-3.624,0,-0.89,1);
16
+INSERT INTO `vroom360`.`questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (10,'... your ability to see out right?','Integer','HigherIsBetter',4.419,0.18,-0.694,1);
... ...
@@ -0,0 +1,9 @@
1
+/*
2
+-- Query: select * from `vroom360`.`question_set`
3
+LIMIT 0, 1000
4
+
5
+-- Date: 2011-11-07 15:01
6
+*/
7
+DELETE FROM `vroom360`.`question_set` WHERE `questionset_id` = 1;
8
+INSERT INTO `vroom360`.`question_set` (`questionset_id`, `questionset_setname`, `questionset_active`) VALUES (1, 'Visibility', 1);
9
+INSERT INTO `vroom360`.`question_set` (`questionset_id`, `questionset_setname`, `questionset_active`) VALUES (2, 'Roominess', 1);
0 10
\ No newline at end of file
... ...
@@ -0,0 +1,19 @@
1
+-- ----------
2
+-- Visibility = 1
3
+-- ----------
4
+-- 1, 3, 5, 6, 7, 9, 10
5
+INSERT INTO `vroom360`.`questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (1, 1);
6
+INSERT INTO `vroom360`.`questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (1, 3);
7
+INSERT INTO `vroom360`.`questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (1, 5);
8
+INSERT INTO `vroom360`.`questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (1, 6);
9
+INSERT INTO `vroom360`.`questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (1, 7);
10
+INSERT INTO `vroom360`.`questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (1, 9);
11
+INSERT INTO `vroom360`.`questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (1, 10);
12
+
13
+-- ----------
14
+-- Roominess = 2
15
+-- ----------
16
+-- 2, 4, 8
17
+INSERT INTO `vroom360`.`questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (2, 2);
18
+INSERT INTO `vroom360`.`questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (2, 4);
19
+INSERT INTO `vroom360`.`questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (2, 8);
0 20
\ No newline at end of file
... ...
@@ -0,0 +1 @@
1
+INSERT INTO `vroom360`.`survey`(`survey_vehicleid`,`survey_start_date`,`survey_end_date`,`survey_user_id`,`survey_question_set`) VALUES (1, "2011-11-10 12:00:00", "0000-00-00 00:00:00", 1, 1);
0 2
\ No newline at end of file
... ...
@@ -0,0 +1,11 @@
1
+INSERT INTO `vroom360`.`badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (1, 'Second Survey', 1);
2
+INSERT INTO `vroom360`.`badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (2, 'Third Survey', 1);
3
+INSERT INTO `vroom360`.`badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (3, 'First Comment', 1);
4
+INSERT INTO `vroom360`.`badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (4, 'Five Comments', 1);
5
+INSERT INTO `vroom360`.`badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (5, 'Completed a Survey With Comments For All Questions', 1);
6
+INSERT INTO `vroom360`.`badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (6, 'Completed 1 Survey', 1);
7
+INSERT INTO `vroom360`.`badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (7, 'Completed 2 Surveys', 1);
8
+INSERT INTO `vroom360`.`badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (8, 'Completed 3 Surveys', 1);
9
+INSERT INTO `vroom360`.`badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (9, 'First User of the System', 1);
10
+INSERT INTO `vroom360`.`badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (10, 'Second User of the System', 1);
11
+INSERT INTO `vroom360`.`badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (11, 'Third User of the System', 1);
... ...
@@ -0,0 +1,6 @@
1
+INSERT INTO `vroom360`.`user_badges` (`userbadges_badgeid`, `userbadges_userid`) VALUES (1, 'dev');
2
+INSERT INTO `vroom360`.`user_badges` (`userbadges_badgeid`, `userbadges_userid`) VALUES (1, 'henry');
3
+INSERT INTO `vroom360`.`user_badges` (`userbadges_badgeid`, `userbadges_userid`) VALUES (1, 'anmol');
4
+INSERT INTO `vroom360`.`user_badges` (`userbadges_badgeid`, `userbadges_userid`) VALUES (1, 'andy');
5
+INSERT INTO `vroom360`.`user_badges` (`userbadges_badgeid`, `userbadges_userid`) VALUES (1, 'sam');
6
+INSERT INTO `vroom360`.`user_badges` (`userbadges_badgeid`, `userbadges_userid`) VALUES (1, 'eve');
0 7
\ No newline at end of file
... ...
@@ -0,0 +1,112 @@
1
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (10, 15);
2
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (16, 20);
3
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (21, 25);
4
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (26, 30);
5
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (31, 35);
6
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (36, 40);
7
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (41, 45);
8
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (46, 50);
9
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (51, 55);
10
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (56, 60);
11
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (61, 65);
12
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (66, 70);
13
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (71, 75);
14
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (76, 80);
15
+
16
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (51, 60);
17
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (61, 70);
18
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (71, 80);
19
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (81, 90);
20
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (91, 100);
21
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (101, 110);
22
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (111, 120);
23
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (121, 130);
24
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (131, 140);
25
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (141, 150);
26
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (151, 160);
27
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (161, 170);
28
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (171, 180);
29
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (181, 190);
30
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (191, 200);
31
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (201, 210);
32
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (211, 220);
33
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (221, 230);
34
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (231, 240);
35
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (241, 250);
36
+
37
+---
38
+
39
+-- password = loginId
40
+
41
+INSERT INTO `users` (`users_loginId`,`users_password`,`users_ageid`,`users_gender`,`users_height`,`users_shoesize`,`users_weightid`,`users_zip`,`users_shirtsize`,`users_email`,`user_sittingheight`,`user_upperleglength`) VALUES ('andy','*F96F1632B76CC8C3AE6A600874573B1077718130',7,'Female',144,8,10,15219,'L','[email protected]',0,90);
42
+INSERT INTO `users` (`users_loginId`,`users_password`,`users_ageid`,`users_gender`,`users_height`,`users_shoesize`,`users_weightid`,`users_zip`,`users_shirtsize`,`users_email`,`user_sittingheight`,`user_upperleglength`) VALUES ('anmol','*87863E3501735644D77670A7D729A26C657661EB',2,'Male',148,13,10,15219,'L','[email protected]',0,0);
43
+INSERT INTO `users` (`users_loginId`,`users_password`,`users_ageid`,`users_gender`,`users_height`,`users_shoesize`,`users_weightid`,`users_zip`,`users_shirtsize`,`users_email`,`user_sittingheight`,`user_upperleglength`) VALUES ('demo','*6949B1E7D9C44BAA168886E033AE9F551C8814D3',1,'Female',23,1,1,15219,'L','[email protected]',NULL,NULL);
44
+INSERT INTO `users` (`users_loginId`,`users_password`,`users_ageid`,`users_gender`,`users_height`,`users_shoesize`,`users_weightid`,`users_zip`,`users_shirtsize`,`users_email`,`user_sittingheight`,`user_upperleglength`) VALUES ('dev','*2785BFFB673C3DAB53F814D0812920DE22C6510F',7,'Female',147,12.5,3,15219,'L','[email protected]',11,12);
45
+INSERT INTO `users` (`users_loginId`,`users_password`,`users_ageid`,`users_gender`,`users_height`,`users_shoesize`,`users_weightid`,`users_zip`,`users_shirtsize`,`users_email`,`user_sittingheight`,`user_upperleglength`) VALUES ('eve','*1A6EFD23741853F1DD5DF9B944BE40169F3931F1',4,'Female',23,1,12,15219,'L','[email protected]',NULL,NULL);
46
+INSERT INTO `users` (`users_loginId`,`users_password`,`users_ageid`,`users_gender`,`users_height`,`users_shoesize`,`users_weightid`,`users_zip`,`users_shirtsize`,`users_email`,`user_sittingheight`,`user_upperleglength`) VALUES ('henry','*D16D342FF41C2C8ACDBCB10489FE202964BEF327',3,'Male',69,10,7,15219,'SM','[email protected]',90,45);
47
+INSERT INTO `users` (`users_loginId`,`users_password`,`users_ageid`,`users_gender`,`users_height`,`users_shoesize`,`users_weightid`,`users_zip`,`users_shirtsize`,`users_email`,`user_sittingheight`,`user_upperleglength`) VALUES ('Stacey Gu','*4666BD964DDABA4BD0E30927671FFEB5F76E28F9',7,'Female',62,0,1,0,'None','[email protected]',1,3);
48
+INSERT INTO `users` (`users_loginId`,`users_password`,`users_ageid`,`users_gender`,`users_height`,`users_shoesize`,`users_weightid`,`users_zip`,`users_shirtsize`,`users_email`,`user_sittingheight`,`user_upperleglength`) VALUES ('sam','*B5007B8831AA7CC0E2C2F5EA35A97C126011E8B9',3,'Female',63,7,10,15219,'L','[email protected]',0,0);
49
+INSERT INTO `users` (`users_loginId`,`users_password`,`users_ageid`,`users_gender`,`users_height`,`users_shoesize`,`users_weightid`,`users_zip`,`users_shirtsize`,`users_email`,`user_sittingheight`,`user_upperleglength`) VALUES ('tim','*E8CB293030DF5929BF3D3F0D285E235E46ABE9B1',4,'Male',69,11,13,15219,'L','[email protected]',0,0);
50
+-- ------------------
51
+INSERT INTO `questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (1,'... your ability to see out in this area to your left?','Integer','HigherIsBetter',-0.978,-0.025,-0.563,1);
52
+INSERT INTO `questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (2,'...getting out of this vehicle?','Integer','HigherIsBetter',-3.624,0.911,-0.89,1);
53
+INSERT INTO `questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (3,'... your ability to see the front end of this vehicle?','Integer','HigherIsBetter',0.873,0.157,-0.658,1);
54
+INSERT INTO `questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (4,'... your headroom?','Integer','HigherIsBetter',0.128,-0.514,-0.355,1);
55
+INSERT INTO `questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (5,'... your ability to see the dashboard gauges?','Integer','HigherIsBetter',0.257,0.334,-0.563,1);
56
+INSERT INTO `questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (6,'... your ability to see out in this area to your right?','Integer','HigherIsBetter',3.93,0,-0.57,1);
57
+INSERT INTO `questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (7,'... your ability to see out front?','Integer','HigherIsBetter',0.514,-0.334,-0.658,1);
58
+INSERT INTO `questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (8,'... the center console?','Integer','HigherIsBetter',1.414,0.746,-0.658,1);
59
+INSERT INTO `questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (9,'...your ability to see out left?','Integer','HigherIsBetter',-3.624,0,-0.89,1);
60
+INSERT INTO `questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (10,'... your ability to see out right?','Integer','HigherIsBetter',4.419,0.18,-0.694,1);
61
+
62
+-- -----------------------------------
63
+-- admins
64
+-- -----------------------------------
65
+INSERT INTO `admins` (`admins_id`,`admins_password`,`admins_email`,`admins_active`,`admins_modified_by`,`admins_modification_date`) VALUES ('admin','*4ACFE3202A5FF5CF467898FC58AAB1D615029441','[email protected]',1,'dev','1969-12-31 19:00:00');
66
+INSERT INTO `admins` (`admins_id`,`admins_password`,`admins_email`,`admins_active`,`admins_modified_by`,`admins_modification_date`) VALUES ('dev','*27AEDA0D3A56422C3F1D20DAFF0C8109058134F3','[email protected]',0,'dev','1969-12-31 19:00:00');
67
+INSERT INTO `admins` (`admins_id`,`admins_password`,`admins_email`,`admins_active`,`admins_modified_by`,`admins_modification_date`) VALUES ('foo','*E8D46CE25265E545D225A8A6F1BAF642FEBEE5CB','[email protected]',1,'admin','2011-11-27 05:09:48');
68
+INSERT INTO `admins` (`admins_id`,`admins_password`,`admins_email`,`admins_active`,`admins_modified_by`,`admins_modification_date`) VALUES ('john','*DACDE7F5744D3CB439B40D938673B8240B824853','[email protected]',1,'dev','1969-12-31 19:00:00');
69
+-- -----------------------------------
70
+INSERT INTO `question_set` (`questionset_id`,`questionset_setname`,`questionset_active`,`questionset_modified_by`,`questionset_modification_date`) VALUES (1,'Visibility',1,'admin','2011-11-27 06:49:14');
71
+INSERT INTO `question_set` (`questionset_id`,`questionset_setname`,`questionset_active`,`questionset_modified_by`,`questionset_modification_date`) VALUES (2,'Roominess',1,'admin','2011-11-27 06:49:14');
72
+-- -----------------------------------
73
+-- ----------
74
+-- Visibility = 1
75
+-- ----------
76
+-- 1, 3, 5, 6, 7, 9, 10
77
+INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (1, 1);
78
+INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (1, 3);
79
+INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (1, 5);
80
+INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (1, 6);
81
+INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (1, 7);
82
+INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (1, 9);
83
+INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (1, 10);
84
+
85
+-- ----------
86
+-- Roominess = 2
87
+-- ----------
88
+-- 2, 4, 8
89
+INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (2, 2);
90
+INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (2, 4);
91
+INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (2, 8);
92
+-- ------------------------------------
93
+
94
+-- ------------------------------------
95
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (1, 'Second Survey', 1);
96
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (2, 'Third Survey', 1);
97
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (3, 'First Comment', 1);
98
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (4, 'Five Comments', 1);
99
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (5, 'Completed a Survey With Comments For All Questions', 1);
100
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (6, 'Completed 1 Survey', 1);
101
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (7, 'Completed 2 Surveys', 1);
102
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (8, 'Completed 3 Surveys', 1);
103
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (9, 'First User of the System', 1);
104
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (10, 'Second User of the System', 1);
105
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (11, 'Third User of the System', 1);
106
+-- ------------------------------------
107
+INSERT INTO `user_badges` (`userbadges_badgeid`, `userbadges_userid`) VALUES (1, 'dev');
108
+INSERT INTO `user_badges` (`userbadges_badgeid`, `userbadges_userid`) VALUES (1, 'henry');
109
+INSERT INTO `user_badges` (`userbadges_badgeid`, `userbadges_userid`) VALUES (1, 'anmol');
110
+INSERT INTO `user_badges` (`userbadges_badgeid`, `userbadges_userid`) VALUES (1, 'andy');
111
+INSERT INTO `user_badges` (`userbadges_badgeid`, `userbadges_userid`) VALUES (1, 'sam');
112
+INSERT INTO `user_badges` (`userbadges_badgeid`, `userbadges_userid`) VALUES (1, 'eve');
... ...
@@ -0,0 +1 @@
1
+This folder contains a lot of SQL files. However, we also see three files containing URL in their name. This was basically made to conform with restrictions that the hosting provider imposed to have schema qualified names. For local development, all other SQL files should be sufficient.
0 2
\ No newline at end of file
... ...
@@ -0,0 +1,14 @@
1
+changelog:
2
+removed users_id. users_loginId is the primary key. Result of IsAuthorizedUser contained this field. If it is being used in anyway on ipad, it needs to be removed.
3
+
4
+SetAnswers now expects a field called answers_id. Presence of this field indicates that we need to update answer in the database and absence of this means we need to insert new row in answers table.
5
+
6
+Remember to call SetNewSurvey when user starts a new survey.
7
+
8
+Only following info id updated when sending an answer for a question that has been previously answered.
9
+'UPDATE `answers`
10
+             SET `answers_value` = ?, `answers_attachment_path` = ?,
11
+                 `answers_date` = ?, `answers_comment` = ?
12
+             WHERE `answers_id` = ?'
13
+
14
+--uploading image for a question after reanswering it in another session on ipad will not delete the previous picture from the file store.
0 15
\ No newline at end of file
... ...
@@ -0,0 +1,297 @@
1
+SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
2
+SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
3
+SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
4
+
5
+CREATE SCHEMA IF NOT EXISTS `devghai_vroom360` DEFAULT CHARACTER SET latin1 ;
6
+USE `devghai_vroom360` ;
7
+
8
+-- -----------------------------------------------------
9
+-- Table `devghai_vroom360`.`ages`
10
+-- -----------------------------------------------------
11
+DROP TABLE IF EXISTS `devghai_vroom360`.`ages` ;
12
+
13
+CREATE  TABLE IF NOT EXISTS `devghai_vroom360`.`ages` (
14
+  `ages_id` INT NOT NULL AUTO_INCREMENT ,
15
+  `ages_from` INT NULL ,
16
+  `ages_to` INT NULL ,
17
+  PRIMARY KEY (`ages_id`) )
18
+ENGINE = InnoDB,
19
+COMMENT = 'Stores various age ranges available to a user to select from' /* comment truncated */ ;
20
+
21
+
22
+-- -----------------------------------------------------
23
+-- Table `devghai_vroom360`.`weights`
24
+-- -----------------------------------------------------
25
+DROP TABLE IF EXISTS `devghai_vroom360`.`weights` ;
26
+
27
+CREATE  TABLE IF NOT EXISTS `devghai_vroom360`.`weights` (
28
+  `weights_id` INT NOT NULL AUTO_INCREMENT ,
29
+  `weights_from` INT NOT NULL ,
30
+  `weights_to` INT NOT NULL ,
31
+  PRIMARY KEY (`weights_id`) )
32
+ENGINE = InnoDB,
33
+COMMENT = 'Stores various weight ranges available to a user to select f' /* comment truncated */ ;
34
+
35
+
36
+-- -----------------------------------------------------
37
+-- Table `devghai_vroom360`.`users`
38
+-- -----------------------------------------------------
39
+DROP TABLE IF EXISTS `devghai_vroom360`.`users` ;
40
+
41
+CREATE  TABLE IF NOT EXISTS `devghai_vroom360`.`users` (
42
+  `users_loginId` VARCHAR(20) CHARACTER SET 'latin1' COLLATE 'latin1_general_cs' NOT NULL ,
43
+  `users_password` VARCHAR(45) NOT NULL ,
44
+  `users_ageid` INT NULL ,
45
+  `users_gender` ENUM('Male', 'Female') NULL ,
46
+  `users_height` INT NULL ,
47
+  `users_shoesize` FLOAT NULL ,
48
+  `users_weightid` INT NULL ,
49
+  `users_zip` INT NULL ,
50
+  `users_shirtsize` VARCHAR(4) NULL ,
51
+  `users_email` VARCHAR(100) NOT NULL ,
52
+  `user_sittingheight` FLOAT NULL COMMENT 'inches' ,
53
+  `user_upperleglength` FLOAT NULL COMMENT 'inches' ,
54
+  PRIMARY KEY (`users_loginId`) ,
55
+  UNIQUE INDEX `users_loginId_UNIQUE` (`users_loginId` ASC) ,
56
+  INDEX `fk_users_age_ages_id` (`users_ageid` ASC) ,
57
+  INDEX `fk_users_weight_weights_id` (`users_weightid` ASC) ,
58
+  CONSTRAINT `fk_users_age_ages_id`
59
+    FOREIGN KEY (`users_ageid` )
60
+    REFERENCES `devghai_vroom360`.`ages` (`ages_id` )
61
+    ON DELETE NO ACTION
62
+    ON UPDATE NO ACTION,
63
+  CONSTRAINT `fk_users_weight_weights_id`
64
+    FOREIGN KEY (`users_weightid` )
65
+    REFERENCES `devghai_vroom360`.`weights` (`weights_id` )
66
+    ON DELETE NO ACTION
67
+    ON UPDATE NO ACTION)
68
+ENGINE = InnoDB
69
+COMMENT = 'Contains all information about the users of the system.' ;
70
+
71
+
72
+-- -----------------------------------------------------
73
+-- Table `devghai_vroom360`.`questions`
74
+-- -----------------------------------------------------
75
+DROP TABLE IF EXISTS `devghai_vroom360`.`questions` ;
76
+
77
+CREATE  TABLE IF NOT EXISTS `devghai_vroom360`.`questions` (
78
+  `questions_id` INT NOT NULL AUTO_INCREMENT ,
79
+  `questions_text` VARCHAR(250) NOT NULL ,
80
+  `questions_ans_value_type` ENUM('Integer', 'Decimal') NOT NULL DEFAULT 'Integer' ,
81
+  `questions_ans_direction` ENUM('LowerIsBetter', 'HigherIsBetter') NOT NULL DEFAULT 'HigherIsBetter' ,
82
+  `questions_location_x` FLOAT NOT NULL ,
83
+  `questions_location_y` FLOAT NOT NULL ,
84
+  `questions_location_z` FLOAT NOT NULL ,
85
+  `questions_active` TINYINT(1)  NOT NULL DEFAULT true ,
86
+  PRIMARY KEY (`questions_id`) )
87
+ENGINE = InnoDB,
88
+COMMENT = 'This table will store all questions that can be given in the' /* comment truncated */ ;
89
+
90
+
91
+-- -----------------------------------------------------
92
+-- Table `devghai_vroom360`.`vehicle`
93
+-- -----------------------------------------------------
94
+DROP TABLE IF EXISTS `devghai_vroom360`.`vehicle` ;
95
+
96
+CREATE  TABLE IF NOT EXISTS `devghai_vroom360`.`vehicle` (
97
+  `vehicle_id` INT NOT NULL AUTO_INCREMENT ,
98
+  `vehicle_make` VARCHAR(45) NOT NULL COMMENT 'Company name to which the vehicle belongs' ,
99
+  `vehicle_model` VARCHAR(45) NOT NULL ,
100
+  `vehicle_year` INT NOT NULL ,
101
+  PRIMARY KEY (`vehicle_id`) )
102
+ENGINE = InnoDB,
103
+COMMENT = 'Master table of vehicles.' ;
104
+
105
+
106
+-- -----------------------------------------------------
107
+-- Table `devghai_vroom360`.`admins`
108
+-- -----------------------------------------------------
109
+DROP TABLE IF EXISTS `devghai_vroom360`.`admins` ;
110
+
111
+CREATE  TABLE IF NOT EXISTS `devghai_vroom360`.`admins` (
112
+  `admins_id` VARCHAR(20) CHARACTER SET 'latin1' COLLATE 'latin1_general_cs' NOT NULL ,
113
+  `admins_password` VARCHAR(45) NULL ,
114
+  `admins_email` VARCHAR(90) NULL ,
115
+  `admins_active` TINYINT(1)  NULL DEFAULT false ,
116
+  `admins_modified_by` VARCHAR(20) NOT NULL ,
117
+  `admins_modification_date` DATETIME NOT NULL DEFAULT '1969-12-31 19:00:00' ,
118
+  PRIMARY KEY (`admins_id`) )
119
+ENGINE = InnoDB;
120
+
121
+
122
+-- -----------------------------------------------------
123
+-- Table `devghai_vroom360`.`question_set`
124
+-- -----------------------------------------------------
125
+DROP TABLE IF EXISTS `devghai_vroom360`.`question_set` ;
126
+
127
+CREATE  TABLE IF NOT EXISTS `devghai_vroom360`.`question_set` (
128
+  `questionset_id` INT NOT NULL AUTO_INCREMENT ,
129
+  `questionset_setname` VARCHAR(100) NOT NULL ,
130
+  `questionset_active` TINYINT(1)  NOT NULL DEFAULT true COMMENT 'Tells if the survey is active or not.' ,
131
+  `questionset_modified_by` VARCHAR(20) CHARACTER SET 'latin1' COLLATE 'latin1_general_cs' NOT NULL ,
132
+  `questionset_modification_date` DATETIME NOT NULL DEFAULT '1969-12-31 19:00:00' ,
133
+  PRIMARY KEY (`questionset_id`) ,
134
+  UNIQUE INDEX `qs_setname_UNIQUE` (`questionset_setname` ASC) ,
135
+  INDEX `fk_questionset_modified_by_admins_id` (`questionset_modified_by` ASC) ,
136
+  CONSTRAINT `fk_questionset_modified_by_admins_id`
137
+    FOREIGN KEY (`questionset_modified_by` )
138
+    REFERENCES `devghai_vroom360`.`admins` (`admins_id` )
139
+    ON DELETE NO ACTION
140
+    ON UPDATE NO ACTION)
141
+ENGINE = InnoDB,
142
+COMMENT = 'This table allows active questions in the question table to ' /* comment truncated */ ;
143
+
144
+
145
+-- -----------------------------------------------------
146
+-- Table `devghai_vroom360`.`survey`
147
+-- -----------------------------------------------------
148
+DROP TABLE IF EXISTS `devghai_vroom360`.`survey` ;
149
+
150
+CREATE  TABLE IF NOT EXISTS `devghai_vroom360`.`survey` (
151
+  `survey_id` INT NOT NULL AUTO_INCREMENT ,
152
+  `survey_vehicleid` INT NOT NULL ,
153
+  `survey_start_date` DATETIME NOT NULL ,
154
+  `survey_end_date` DATETIME NULL COMMENT 'Missing end date will mean that the survey is in progress.' ,
155
+  `survey_user_id` VARCHAR(20) CHARACTER SET 'latin1' COLLATE 'latin1_general_cs' NOT NULL ,
156
+  `survey_question_set` INT NOT NULL ,
157
+  PRIMARY KEY (`survey_id`) ,
158
+  INDEX `fk_survey_vehicle_vehicle_id` (`survey_vehicleid` ASC) ,
159
+  INDEX `fk_survey_question_set_qs_id` (`survey_question_set` ASC) ,
160
+  INDEX `fk_survey_user_id_users_loginId` (`survey_user_id` ASC) ,
161
+  CONSTRAINT `fk_survey_vehicle_vehicle_id`
162
+    FOREIGN KEY (`survey_vehicleid` )
163
+    REFERENCES `devghai_vroom360`.`vehicle` (`vehicle_id` )
164
+    ON DELETE NO ACTION
165
+    ON UPDATE NO ACTION,
166
+  CONSTRAINT `fk_survey_question_set_qs_id`
167
+    FOREIGN KEY (`survey_question_set` )
168
+    REFERENCES `devghai_vroom360`.`question_set` (`questionset_id` )
169
+    ON DELETE NO ACTION
170
+    ON UPDATE NO ACTION,
171
+  CONSTRAINT `fk_survey_user_id_users_loginId`
172
+    FOREIGN KEY (`survey_user_id` )
173
+    REFERENCES `devghai_vroom360`.`users` (`users_loginId` )
174
+    ON DELETE NO ACTION
175
+    ON UPDATE NO ACTION)
176
+ENGINE = InnoDB,
177
+COMMENT = 'Table that will maintain state of the survey. In case this t' /* comment truncated */ ;
178
+
179
+
180
+-- -----------------------------------------------------
181
+-- Table `devghai_vroom360`.`answers`
182
+-- -----------------------------------------------------
183
+DROP TABLE IF EXISTS `devghai_vroom360`.`answers` ;
184
+
185
+CREATE  TABLE IF NOT EXISTS `devghai_vroom360`.`answers` (
186
+  `answers_id` INT NOT NULL AUTO_INCREMENT ,
187
+  `answers_ques_id` INT NOT NULL ,
188
+  `answers_value` FLOAT NOT NULL ,
189
+  `answers_attachment_path` VARCHAR(150) NULL ,
190
+  `answers_survey_id` INT NOT NULL ,
191
+  `answers_date` DATETIME NOT NULL ,
192
+  `answers_sequence` INT NOT NULL ,
193
+  `answers_comment` VARCHAR(400) NULL ,
194
+  PRIMARY KEY (`answers_id`) ,
195
+  INDEX `fk_answers_ques_id_questions_id` (`answers_ques_id` ASC) ,
196
+  INDEX `fk_answers_survey_id_survey_id` (`answers_survey_id` ASC) ,
197
+  CONSTRAINT `fk_answers_ques_id_questions_id`
198
+    FOREIGN KEY (`answers_ques_id` )
199
+    REFERENCES `devghai_vroom360`.`questions` (`questions_id` )
200
+    ON DELETE NO ACTION
201
+    ON UPDATE NO ACTION,
202
+  CONSTRAINT `fk_answers_survey_id_survey_id`
203
+    FOREIGN KEY (`answers_survey_id` )
204
+    REFERENCES `devghai_vroom360`.`survey` (`survey_id` )
205
+    ON DELETE NO ACTION
206
+    ON UPDATE NO ACTION)
207
+ENGINE = InnoDB;
208
+
209
+
210
+-- -----------------------------------------------------
211
+-- Table `devghai_vroom360`.`questions_in_set`
212
+-- -----------------------------------------------------
213
+DROP TABLE IF EXISTS `devghai_vroom360`.`questions_in_set` ;
214
+
215
+CREATE  TABLE IF NOT EXISTS `devghai_vroom360`.`questions_in_set` (
216
+  `questionsinset_set_id` INT NOT NULL ,
217
+  `questionsinset_question_id` INT NOT NULL ,
218
+  INDEX `fk_qis_set_id_qs_id` (`questionsinset_set_id` ASC) ,
219
+  INDEX `fk_qis_question_id_questions_id` (`questionsinset_question_id` ASC) ,
220
+  CONSTRAINT `fk_qis_set_id_qs_id`
221
+    FOREIGN KEY (`questionsinset_set_id` )
222
+    REFERENCES `devghai_vroom360`.`question_set` (`questionset_id` )
223
+    ON DELETE NO ACTION
224
+    ON UPDATE NO ACTION,
225
+  CONSTRAINT `fk_qis_question_id_questions_id`
226
+    FOREIGN KEY (`questionsinset_question_id` )
227
+    REFERENCES `devghai_vroom360`.`questions` (`questions_id` )
228
+    ON DELETE NO ACTION
229
+    ON UPDATE NO ACTION)
230
+ENGINE = InnoDB;
231
+
232
+
233
+-- -----------------------------------------------------
234
+-- Table `devghai_vroom360`.`badges`
235
+-- -----------------------------------------------------
236
+DROP TABLE IF EXISTS `devghai_vroom360`.`badges` ;
237
+
238
+CREATE  TABLE IF NOT EXISTS `devghai_vroom360`.`badges` (
239
+  `badges_id` INT NOT NULL AUTO_INCREMENT ,
240
+  `badges_description` VARCHAR(100) NOT NULL ,
241
+  `badges_weight` INT NOT NULL ,
242
+  PRIMARY KEY (`badges_id`) )
243
+ENGINE = InnoDB;
244
+
245
+
246
+-- -----------------------------------------------------
247
+-- Table `devghai_vroom360`.`user_badges`
248
+-- -----------------------------------------------------
249
+DROP TABLE IF EXISTS `devghai_vroom360`.`user_badges` ;
250
+
251
+CREATE  TABLE IF NOT EXISTS `devghai_vroom360`.`user_badges` (
252
+  `userbadges_badgeid` INT NOT NULL ,
253
+  `userbadges_userid` VARCHAR(20) CHARACTER SET 'latin1' COLLATE 'latin1_general_cs' NOT NULL ,
254
+  INDEX `fk_userbadges_badgeid_badges_id` (`userbadges_badgeid` ASC) ,
255
+  INDEX `fk_userbadges_userid_users_loginId` (`userbadges_userid` ASC) ,
256
+  CONSTRAINT `fk_userbadges_badgeid_badges_id`
257
+    FOREIGN KEY (`userbadges_badgeid` )
258
+    REFERENCES `devghai_vroom360`.`badges` (`badges_id` )
259
+    ON DELETE NO ACTION
260
+    ON UPDATE NO ACTION,
261
+  CONSTRAINT `fk_userbadges_userid_users_loginId`
262
+    FOREIGN KEY (`userbadges_userid` )
263
+    REFERENCES `devghai_vroom360`.`users` (`users_loginId` )
264
+    ON DELETE NO ACTION
265
+    ON UPDATE NO ACTION)
266
+ENGINE = InnoDB;
267
+
268
+
269
+-- -----------------------------------------------------
270
+-- Table `devghai_vroom360`.`errorlog`
271
+-- -----------------------------------------------------
272
+DROP TABLE IF EXISTS `devghai_vroom360`.`errorlog` ;
273
+
274
+CREATE  TABLE IF NOT EXISTS `devghai_vroom360`.`errorlog` (
275
+  `errorlog_id` INT NOT NULL ,
276
+  `errorlog_datetime` DATETIME NOT NULL ,
277
+  `errorlog_object` VARCHAR(2000) NOT NULL ,
278
+  PRIMARY KEY (`errorlog_id`) )
279
+ENGINE = InnoDB;
280
+
281
+
282
+
283
+SET SQL_MODE=@OLD_SQL_MODE;
284
+SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
285
+SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
286
+
287
+-- --------------------------------------------------
288
+-- USERS
289
+-- --------------------------------------------------
290
+-- Create user with qualified domain and ip address. Not using wildcards.
291
+CREATE USER 'webuser'@'127.0.0.1' IDENTIFIED BY PASSWORD '*C5DF9C11FDCEA187921EEB5DDDFF0C32FE9CB352';
292
+CREATE USER 'webuser'@'localhost' IDENTIFIED BY PASSWORD '*C5DF9C11FDCEA187921EEB5DDDFF0C32FE9CB352';
293
+
294
+-- http://dev.mysql.com/doc/refman/5.6/en/grant.html#grant-privileges
295
+GRANT SELECT, INSERT, UPDATE, EXECUTE ON vroom360.* TO 'webuser'@'127.0.0.1';
296
+GRANT SELECT, INSERT, UPDATE, EXECUTE ON vroom360.* TO 'webuser'@'localhost';
297
+-------------------------------------------
... ...
@@ -0,0 +1,6263 @@
1
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1, 'Acura', 'MDX', 2011);
2
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2, 'Audi', 'A8', 2011);
3
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3, 'Audi', 'Q5', 2011);
4
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4, 'BMW', '3 Series', 2011);
5
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5, 'BMW', '5 Series', 2011);
6
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6, 'BMW', 'X3', 2011);
7
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (7, 'BMW', 'X5', 2011);
8
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (8, 'BMW', 'X6', 2011);
9
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (9, 'BMW', 'Z4', 2011);
10
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (10, 'Buick', 'Enclave', 2011);
11
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (11, 'Buick', 'LaCrosse', 2011);
12
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (12, 'Buick', 'Lucerne', 2011);
13
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (13, 'Buick', 'Regal', 2011);
14
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (14, 'Cadillac', 'DTS', 2011);
15
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (15, 'Cadillac', 'Escalade', 2011);
16
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (16, 'Cadillac', 'Escalade ESV', 2011);
17
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (17, 'Cadillac', 'Escalade EXT', 2011);
18
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (18, 'Cadillac', 'SRX', 2011);
19
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (19, 'Cadillac', 'STS', 2011);
20
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (20, 'Chevrolet', 'Avalanche', 2011);
21
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (21, 'Chevrolet', 'Aveo', 2011);
22
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (22, 'Chevrolet', 'Camaro', 2011);
23
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (23, 'Chevrolet', 'Colorado Crew Cab', 2011);
24
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (24, 'Chevrolet', 'Colorado Extended Cab', 2011);
25
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (25, 'Chevrolet', 'Colorado Regular Cab', 2011);
26
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (26, 'Chevrolet', 'Corvette', 2011);
27
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (27, 'Chevrolet', 'Cruze', 2011);
28
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (28, 'Chevrolet', 'Equinox', 2011);
29
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (29, 'Chevrolet', 'Express 1500 Cargo', 2011);
30
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (30, 'Chevrolet', 'Express 1500 Passenger', 2011);
31
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (31, 'Chevrolet', 'Express 2500 Cargo', 2011);
32
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (32, 'Chevrolet', 'Express 2500 Passenger', 2011);
33
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (33, 'Chevrolet', 'Express 3500 Cargo', 2011);
34
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (34, 'Chevrolet', 'Express 3500 Passenger', 2011);
35
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (35, 'Chevrolet', 'HHR', 2011);
36
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (36, 'Chevrolet', 'Impala', 2011);
37
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (37, 'Chevrolet', 'Malibu', 2011);
38
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (38, 'Chevrolet', 'Silverado 1500 Crew Cab', 2011);
39
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (39, 'Chevrolet', 'Silverado 1500 Extended Cab', 2011);
40
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (40, 'Chevrolet', 'Silverado 1500 Regular Cab', 2011);
41
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (41, 'Chevrolet', 'Suburban 1500', 2011);
42
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (42, 'Chevrolet', 'Suburban 2500', 2011);
43
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (43, 'Chevrolet', 'Tahoe', 2011);
44
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (44, 'Chevrolet', 'Traverse', 2011);
45
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (45, 'Dodge', 'Avenger', 2011);
46
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (46, 'Dodge', 'Caliber', 2011);
47
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (47, 'Dodge', 'Charger', 2011);
48
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (48, 'Dodge', 'Durango', 2011);
49
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (49, 'Dodge', 'Journey', 2011);
50
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (50, 'Dodge', 'Nitro', 2011);
51
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (51, 'Ford', 'E150 Cargo', 2011);
52
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (52, 'Ford', 'E150 Passenger', 2011);
53
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (53, 'Ford', 'E250 Cargo', 2011);
54
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (54, 'Ford', 'E350 Super Duty Cargo', 2011);
55
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (55, 'Ford', 'E350 Super Duty Passenger', 2011);
56
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (56, 'Ford', 'Edge', 2011);
57
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (57, 'Ford', 'Escape', 2011);
58
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (58, 'Ford', 'Expedition', 2011);
59
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (59, 'Ford', 'Expedition EL', 2011);
60
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (60, 'Ford', 'Explorer', 2011);
61
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (61, 'Ford', 'F150 Regular Cab', 2011);
62
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (62, 'Ford', 'F150 Super Cab', 2011);
63
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (63, 'Ford', 'F150 SuperCrew Cab', 2011);
64
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (64, 'Ford', 'Fiesta', 2011);
65
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (65, 'Ford', 'Flex', 2011);
66
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (66, 'Ford', 'Focus', 2011);
67
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (67, 'Ford', 'Fusion', 2011);
68
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (68, 'Ford', 'Mustang', 2011);
69
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (69, 'Ford', 'Ranger Regular Cab', 2011);
70
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (70, 'Ford', 'Ranger Super Cab', 2011);
71
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (71, 'Ford', 'Taurus', 2011);
72
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (72, 'GMC', 'Acadia', 2011);
73
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (73, 'GMC', 'Canyon Crew Cab', 2011);
74
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (74, 'GMC', 'Canyon Extended Cab', 2011);
75
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (75, 'GMC', 'Canyon Regular Cab', 2011);
76
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (76, 'GMC', 'Savana 1500 Cargo', 2011);
77
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (77, 'GMC', 'Savana 1500 Passenger', 2011);
78
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (78, 'GMC', 'Savana 2500 Cargo', 2011);
79
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (79, 'GMC', 'Savana 2500 Passenger', 2011);
80
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (80, 'GMC', 'Savana 3500 Cargo', 2011);
81
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (81, 'GMC', 'Savana 3500 Passenger', 2011);
82
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (82, 'GMC', 'Sierra 1500 Crew Cab', 2011);
83
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (83, 'GMC', 'Sierra 1500 Extended Cab', 2011);
84
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (84, 'GMC', 'Sierra 1500 Regular Cab', 2011);
85
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (85, 'GMC', 'Yukon', 2011);
86
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (86, 'GMC', 'Yukon XL 1500', 2011);
87
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (87, 'GMC', 'Yukon XL 2500', 2011);
88
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (88, 'Honda', 'Accord', 2011);
89
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (89, 'Honda', 'Civic', 2011);
90
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (90, 'Honda', 'CR-V', 2011);
91
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (91, 'Honda', 'CR-Z', 2011);
92
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (92, 'Honda', 'Element', 2011);
93
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (93, 'Honda', 'Pilot', 2011);
94
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (94, 'Honda', 'Ridgeline', 2011);
95
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (95, 'Hyundai', 'Accent', 2011);
96
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (96, 'Hyundai', 'Elantra', 2011);
97
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (97, 'Hyundai', 'Genesis', 2011);
98
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (98, 'Hyundai', 'Genesis Coupe', 2011);
99
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (99, 'Hyundai', 'Santa Fe', 2011);
100
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (100, 'Hyundai', 'Sonata', 2011);
101
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (101, 'Hyundai', 'Tucson', 2011);
102
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (102, 'Infiniti', 'FX', 2011);
103
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (103, 'Infiniti', 'M', 2011);
104
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (104, 'Infiniti', 'QX', 2011);
105
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (105, 'Jeep', 'Compass', 2011);
106
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (106, 'Jeep', 'Grand Cherokee', 2011);
107
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (107, 'Jeep', 'Liberty', 2011);
108
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (108, 'Jeep', 'Patriot', 2011);
109
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (109, 'Jeep', 'Wrangler', 2011);
110
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (110, 'Kia', 'Forte', 2011);
111
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (111, 'Kia', 'Optima', 2011);
112
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (112, 'Kia', 'Rio', 2011);
113
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (113, 'Kia', 'Sedona', 2011);
114
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (114, 'Kia', 'Sorento', 2011);
115
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (115, 'Kia', 'Soul', 2011);
116
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (116, 'Kia', 'Sportage', 2011);
117
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (117, 'Lexus', 'RX', 2011);
118
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (118, 'Lincoln', 'MKS', 2011);
119
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (119, 'Lincoln', 'MKT', 2011);
120
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (120, 'Lincoln', 'MKX', 2011);
121
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (121, 'Lincoln', 'MKZ', 2011);
122
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (122, 'Lincoln', 'Navigator', 2011);
123
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (123, 'Lincoln', 'Navigator L', 2011);
124
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (124, 'Lincoln', 'Town Car', 2011);
125
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (125, 'Mazda', 'CX-7', 2011);
126
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (126, 'Mazda', 'CX-9', 2011);
127
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (127, 'Mazda', 'MAZDA2', 2011);
128
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (128, 'Mazda', 'MAZDA3', 2011);
129
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (129, 'Mazda', 'Miata MX-5', 2011);
130
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (130, 'Mazda', 'RX-8', 2011);
131
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (131, 'Mazda', 'Tribute', 2011);
132
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (132, 'Mercedes-Benz', 'CLS-Class', 2011);
133
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (133, 'Mercedes-Benz', 'E-Class', 2011);
134
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (134, 'Mercedes-Benz', 'GL-Class', 2011);
135
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (135, 'Mercedes-Benz', 'M-Class', 2011);
136
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (136, 'Mercury', 'Grand Marquis', 2011);
137
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (137, 'Mercury', 'Mariner', 2011);
138
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (138, 'Mercury', 'Milan', 2011);
139
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (139, 'MINI', 'Cooper', 2011);
140
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (140, 'MINI', 'Cooper Clubman', 2011);
141
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (141, 'MINI', 'Cooper Countryman', 2011);
142
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (142, 'Mitsubishi', 'Eclipse', 2011);
143
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (143, 'Mitsubishi', 'Endeavor', 2011);
144
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (144, 'Mitsubishi', 'Galant', 2011);
145
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (145, 'Mitsubishi', 'Lancer', 2011);
146
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (146, 'Mitsubishi', 'Outlander Sport', 2011);
147
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (147, 'Nissan', '370Z', 2011);
148
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (148, 'Nissan', 'Altima', 2011);
149
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (149, 'Nissan', 'Armada', 2011);
150
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (150, 'Nissan', 'cube', 2011);
151
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (151, 'Nissan', 'Frontier Crew Cab', 2011);
152
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (152, 'Nissan', 'Frontier King Cab', 2011);
153
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (153, 'Nissan', 'JUKE', 2011);
154
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (154, 'Nissan', 'Maxima', 2011);
155
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (155, 'Nissan', 'Murano', 2011);
156
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (156, 'Nissan', 'Pathfinder', 2011);
157
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (157, 'Nissan', 'Rogue', 2011);
158
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (158, 'Nissan', 'Sentra', 2011);
159
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (159, 'Nissan', 'Titan Crew Cab', 2011);
160
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (160, 'Nissan', 'Titan King Cab', 2011);
161
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (161, 'Nissan', 'Versa', 2011);
162
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (162, 'Nissan', 'Xterra', 2011);
163
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (163, 'Ram', '1500 Crew Cab', 2011);
164
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (164, 'Ram', '1500 Quad Cab', 2011);
165
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (165, 'Ram', '1500 Regular Cab', 2011);
166
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (166, 'Ram', 'Dakota Crew Cab', 2011);
167
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (167, 'Ram', 'Dakota Extended Cab', 2011);
168
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (168, 'Scion', 'tC', 2011);
169
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (169, 'Scion', 'xB', 2011);
170
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (170, 'Scion', 'xD', 2011);
171
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (171, 'Subaru', 'Impreza', 2011);
172
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (172, 'Suzuki', 'SX4', 2011);
173
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (173, 'Toyota', 'Camry', 2011);
174
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (174, 'Toyota', 'Corolla', 2011);
175
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (175, 'Toyota', 'FJ Cruiser', 2011);
176
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (176, 'Toyota', 'Highlander', 2011);
177
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (177, 'Toyota', 'RAV4', 2011);
178
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (178, 'Toyota', 'Sienna', 2011);
179
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (179, 'Toyota', 'Tundra CrewMax', 2011);
180
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (180, 'Toyota', 'Tundra Double Cab', 2011);
181
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (181, 'Toyota', 'Tundra Regular Cab', 2011);
182
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (182, 'Toyota', 'Venza', 2011);
183
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (183, 'Toyota', 'Yaris', 2011);
184
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (184, 'Volkswagen', 'Eos', 2011);
185
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (185, 'Volkswagen', 'Golf', 2011);
186
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (186, 'Volkswagen', 'GTI', 2011);
187
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (187, 'Volkswagen', 'Jetta', 2011);
188
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (188, 'Volkswagen', 'Tiguan', 2011);
189
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (189, 'Volvo', 'C70', 2011);
190
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (190, 'Volvo', 'S60', 2011);
191
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (191, 'Volvo', 'S80', 2011);
192
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (192, 'Volvo', 'XC60', 2011);
193
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (193, 'Volvo', 'XC70', 2011);
194
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (194, 'Acura', 'MDX', 2010);
195
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (195, 'Acura', 'RDX', 2010);
196
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (196, 'Acura', 'RL', 2010);
197
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (197, 'Acura', 'TL', 2010);
198
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (198, 'Acura', 'TSX', 2010);
199
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (199, 'Acura', 'ZDX', 2010);
200
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (200, 'Aston Martin', 'DB9', 2010);
201
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (201, 'Aston Martin', 'DBS', 2010);
202
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (202, 'Aston Martin', 'Rapide', 2010);
203
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (203, 'Aston Martin', 'Vantage', 2010);
204
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (204, 'Audi', 'A3', 2010);
205
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (205, 'Audi', 'A4', 2010);
206
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (206, 'Audi', 'A5', 2010);
207
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (207, 'Audi', 'A6', 2010);
208
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (208, 'Audi', 'A8', 2010);
209
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (209, 'Audi', 'Q5', 2010);
210
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (210, 'Audi', 'Q7', 2010);
211
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (211, 'Audi', 'R8', 2010);
212
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (212, 'Audi', 'S4', 2010);
213
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (213, 'Audi', 'S5', 2010);
214
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (214, 'Audi', 'S6', 2010);
215
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (215, 'Audi', 'TT', 2010);
216
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (216, 'Bentley', 'Azure T', 2010);
217
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (217, 'Bentley', 'Brooklands', 2010);
218
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (218, 'Bentley', 'Continental', 2010);
219
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (219, 'BMW', '1 Series', 2010);
220
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (220, 'BMW', '3 Series', 2010);
221
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (221, 'BMW', '5 Series', 2010);
222
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (222, 'BMW', '6 Series', 2010);
223
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (223, 'BMW', '7 Series', 2010);
224
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (224, 'BMW', 'M3', 2010);
225
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (225, 'BMW', 'M5', 2010);
226
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (226, 'BMW', 'M6', 2010);
227
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (227, 'BMW', 'X3', 2010);
228
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (228, 'BMW', 'X5', 2010);
229
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (229, 'BMW', 'X6', 2010);
230
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (230, 'BMW', 'Z4', 2010);
231
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (231, 'Buick', 'Enclave', 2010);
232
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (232, 'Buick', 'LaCrosse', 2010);
233
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (233, 'Buick', 'Lucerne', 2010);
234
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (234, 'Cadillac', 'CTS', 2010);
235
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (235, 'Cadillac', 'DTS', 2010);
236
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (236, 'Cadillac', 'Escalade', 2010);
237
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (237, 'Cadillac', 'Escalade ESV', 2010);
238
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (238, 'Cadillac', 'Escalade EXT', 2010);
239
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (239, 'Cadillac', 'SRX', 2010);
240
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (240, 'Cadillac', 'STS', 2010);
241
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (241, 'Chevrolet', 'Avalanche', 2010);
242
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (242, 'Chevrolet', 'Aveo', 2010);
243
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (243, 'Chevrolet', 'Camaro', 2010);
244
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (244, 'Chevrolet', 'Cobalt', 2010);
245
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (245, 'Chevrolet', 'Colorado Crew Cab', 2010);
246
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (246, 'Chevrolet', 'Colorado Extended Cab', 2010);
247
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (247, 'Chevrolet', 'Colorado Regular Cab', 2010);
248
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (248, 'Chevrolet', 'Corvette', 2010);
249
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (249, 'Chevrolet', 'Equinox', 2010);
250
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (250, 'Chevrolet', 'Express 1500 Cargo', 2010);
251
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (251, 'Chevrolet', 'Express 1500 Passenger', 2010);
252
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (252, 'Chevrolet', 'Express 2500 Cargo', 2010);
253
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (253, 'Chevrolet', 'Express 2500 Passenger', 2010);
254
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (254, 'Chevrolet', 'Express 3500 Cargo', 2010);
255
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (255, 'Chevrolet', 'Express 3500 Passenger', 2010);
256
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (256, 'Chevrolet', 'HHR', 2010);
257
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (257, 'Chevrolet', 'Impala', 2010);
258
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (258, 'Chevrolet', 'Malibu', 2010);
259
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (259, 'Chevrolet', 'Silverado 1500 Crew Cab', 2010);
260
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (260, 'Chevrolet', 'Silverado 1500 Extended Cab', 2010);
261
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (261, 'Chevrolet', 'Silverado 1500 Regular Cab', 2010);
262
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (262, 'Chevrolet', 'Silverado 2500 HD Crew Cab', 2010);
263
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (263, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2010);
264
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (264, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2010);
265
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (265, 'Chevrolet', 'Silverado 3500 HD Crew Cab', 2010);
266
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (266, 'Chevrolet', 'Silverado 3500 HD Extended Cab', 2010);
267
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (267, 'Chevrolet', 'Silverado 3500 HD Regular Cab', 2010);
268
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (268, 'Chevrolet', 'Suburban 1500', 2010);
269
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (269, 'Chevrolet', 'Suburban 2500', 2010);
270
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (270, 'Chevrolet', 'Tahoe', 2010);
271
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (271, 'Chevrolet', 'Traverse', 2010);
272
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (272, 'Chrysler', '300', 2010);
273
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (273, 'Chrysler', 'PT Cruiser', 2010);
274
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (274, 'Chrysler', 'Sebring', 2010);
275
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (275, 'Chrysler', 'Town & Country', 2010);
276
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (276, 'Dodge', 'Avenger', 2010);
277
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (277, 'Dodge', 'Caliber', 2010);
278
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (278, 'Dodge', 'Challenger', 2010);
279
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (279, 'Dodge', 'Charger', 2010);
280
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (280, 'Dodge', 'Dakota Crew Cab', 2010);
281
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (281, 'Dodge', 'Dakota Extended Cab', 2010);
282
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (282, 'Dodge', 'Grand Caravan Cargo', 2010);
283
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (283, 'Dodge', 'Grand Caravan Passenger', 2010);
284
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (284, 'Dodge', 'Journey', 2010);
285
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (285, 'Dodge', 'Nitro', 2010);
286
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (286, 'Dodge', 'Ram 1500 Crew Cab', 2010);
287
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (287, 'Dodge', 'Ram 1500 Quad Cab', 2010);
288
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (288, 'Dodge', 'Ram 1500 Regular Cab', 2010);
289
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (289, 'Dodge', 'Ram 2500 Crew Cab', 2010);
290
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (290, 'Dodge', 'Ram 2500 Mega Cab', 2010);
291
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (291, 'Dodge', 'Ram 2500 Regular Cab', 2010);
292
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (292, 'Dodge', 'Ram 3500 Crew Cab', 2010);
293
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (293, 'Dodge', 'Ram 3500 Mega Cab', 2010);
294
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (294, 'Dodge', 'Ram 3500 Regular Cab', 2010);
295
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (295, 'Dodge', 'Viper', 2010);
296
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (296, 'Ford', 'E150 Cargo', 2010);
297
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (297, 'Ford', 'E150 Super Duty Passenger', 2010);
298
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (298, 'Ford', 'E250 Cargo', 2010);
299
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (299, 'Ford', 'E350 Super Duty Cargo', 2010);
300
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (300, 'Ford', 'E350 Super Duty Passenger', 2010);
301
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (301, 'Ford', 'Edge', 2010);
302
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (302, 'Ford', 'Escape', 2010);
303
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (303, 'Ford', 'Expedition', 2010);
304
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (304, 'Ford', 'Expedition EL', 2010);
305
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (305, 'Ford', 'Explorer', 2010);
306
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (306, 'Ford', 'Explorer Sport Trac', 2010);
307
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (307, 'Ford', 'F150 Regular Cab', 2010);
308
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (308, 'Ford', 'F150 Super Cab', 2010);
309
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (309, 'Ford', 'F150 SuperCrew Cab', 2010);
310
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (310, 'Ford', 'F250 Super Duty Crew Cab', 2010);
311
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (311, 'Ford', 'F250 Super Duty Regular Cab', 2010);
312
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (312, 'Ford', 'F250 Super Duty Super Cab', 2010);
313
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (313, 'Ford', 'F350 Super Duty Crew Cab', 2010);
314
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (314, 'Ford', 'F350 Super Duty Regular Cab', 2010);
315
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (315, 'Ford', 'F350 Super Duty Super Cab', 2010);
316
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (316, 'Ford', 'F450 Super Duty Crew Cab', 2010);
317
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (317, 'Ford', 'Flex', 2010);
318
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (318, 'Ford', 'Focus', 2010);
319
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (319, 'Ford', 'Fusion', 2010);
320
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (320, 'Ford', 'Mustang', 2010);
321
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (321, 'Ford', 'Ranger Regular Cab', 2010);
322
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (322, 'Ford', 'Ranger Super Cab', 2010);
323
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (323, 'Ford', 'Taurus', 2010);
324
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (324, 'Ford', 'Transit Connect Cargo', 2010);
325
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (325, 'Ford', 'Transit Connect Passenger', 2010);
326
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (326, 'GMC', 'Acadia', 2010);
327
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (327, 'GMC', 'Canyon Crew Cab', 2010);
328
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (328, 'GMC', 'Canyon Extended Cab', 2010);
329
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (329, 'GMC', 'Canyon Regular Cab', 2010);
330
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (330, 'GMC', 'Savana 1500 Cargo', 2010);
331
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (331, 'GMC', 'Savana 1500 Passenger', 2010);
332
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (332, 'GMC', 'Savana 2500 Cargo', 2010);
333
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (333, 'GMC', 'Savana 2500 Passenger', 2010);
334
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (334, 'GMC', 'Savana 3500 Cargo', 2010);
335
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (335, 'GMC', 'Savana 3500 Passenger', 2010);
336
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (336, 'GMC', 'Sierra 1500 Crew Cab', 2010);
337
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (337, 'GMC', 'Sierra 1500 Extended Cab', 2010);
338
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (338, 'GMC', 'Sierra 1500 Regular Cab', 2010);
339
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (339, 'GMC', 'Sierra 2500 HD Crew Cab', 2010);
340
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (340, 'GMC', 'Sierra 2500 HD Extended Cab', 2010);
341
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (341, 'GMC', 'Sierra 2500 HD Regular Cab', 2010);
342
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (342, 'GMC', 'Sierra 3500 HD Crew Cab', 2010);
343
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (343, 'GMC', 'Sierra 3500 HD Extended Cab', 2010);
344
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (344, 'GMC', 'Sierra 3500 HD Regular Cab', 2010);
345
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (345, 'GMC', 'Terrain', 2010);
346
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (346, 'GMC', 'Yukon', 2010);
347
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (347, 'GMC', 'Yukon XL 1500', 2010);
348
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (348, 'GMC', 'Yukon XL 2500', 2010);
349
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (349, 'Honda', 'Accord', 2010);
350
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (350, 'Honda', 'Accord Crosstour', 2010);
351
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (351, 'Honda', 'Civic', 2010);
352
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (352, 'Honda', 'CR-V', 2010);
353
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (353, 'Honda', 'Element', 2010);
354
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (354, 'Honda', 'Fit', 2010);
355
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (355, 'Honda', 'Insight', 2010);
356
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (356, 'Honda', 'Odyssey', 2010);
357
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (357, 'Honda', 'Pilot', 2010);
358
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (358, 'Honda', 'Ridgeline', 2010);
359
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (359, 'HUMMER', 'H3', 2010);
360
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (360, 'HUMMER', 'H3T', 2010);
361
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (361, 'Hyundai', 'Accent', 2010);
362
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (362, 'Hyundai', 'Azera', 2010);
363
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (363, 'Hyundai', 'Elantra', 2010);
364
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (364, 'Hyundai', 'Genesis', 2010);
365
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (365, 'Hyundai', 'Genesis Coupe', 2010);
366
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (366, 'Hyundai', 'Santa Fe', 2010);
367
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (367, 'Hyundai', 'Sonata', 2010);
368
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (368, 'Hyundai', 'Tucson', 2010);
369
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (369, 'Hyundai', 'Veracruz', 2010);
370
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (370, 'Infiniti', 'EX', 2010);
371
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (371, 'Infiniti', 'FX', 2010);
372
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (372, 'Infiniti', 'G', 2010);
373
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (373, 'Infiniti', 'M', 2010);
374
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (374, 'Infiniti', 'QX', 2010);
375
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (375, 'Jaguar', 'XF', 2010);
376
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (376, 'Jaguar', 'XK Series', 2010);
377
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (377, 'Jeep', 'Commander', 2010);
378
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (378, 'Jeep', 'Compass', 2010);
379
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (379, 'Jeep', 'Grand Cherokee', 2010);
380
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (380, 'Jeep', 'Liberty', 2010);
381
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (381, 'Jeep', 'Patriot', 2010);
382
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (382, 'Jeep', 'Wrangler', 2010);
383
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (383, 'Kia', 'Forte', 2010);
384
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (384, 'Kia', 'Optima', 2010);
385
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (385, 'Kia', 'Rio', 2010);
386
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (386, 'Kia', 'Rondo', 2010);
387
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (387, 'Kia', 'Sedona', 2010);
388
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (388, 'Kia', 'Soul', 2010);
389
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (389, 'Kia', 'Sportage', 2010);
390
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (390, 'Land Rover', 'LR2', 2010);
391
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (391, 'Land Rover', 'LR4', 2010);
392
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (392, 'Land Rover', 'Range Rover', 2010);
393
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (393, 'Land Rover', 'Range Rover Sport', 2010);
394
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (394, 'Lexus', 'ES', 2010);
395
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (395, 'Lexus', 'GS', 2010);
396
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (396, 'Lexus', 'GX', 2010);
397
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (397, 'Lexus', 'HS', 2010);
398
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (398, 'Lexus', 'IS', 2010);
399
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (399, 'Lexus', 'IS F', 2010);
400
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (400, 'Lexus', 'LS', 2010);
401
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (401, 'Lexus', 'LX', 2010);
402
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (402, 'Lexus', 'RX', 2010);
403
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (403, 'Lexus', 'SC', 2010);
404
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (404, 'Lincoln', 'MKS', 2010);
405
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (405, 'Lincoln', 'MKT', 2010);
406
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (406, 'Lincoln', 'MKX', 2010);
407
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (407, 'Lincoln', 'MKZ', 2010);
408
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (408, 'Lincoln', 'Navigator', 2010);
409
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (409, 'Lincoln', 'Navigator L', 2010);
410
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (410, 'Lincoln', 'Town Car', 2010);
411
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (411, 'Lotus', 'Elise', 2010);
412
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (412, 'Lotus', 'Exige', 2010);
413
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (413, 'Maybach', '57', 2010);
414
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (414, 'Maybach', '62', 2010);
415
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (415, 'Mazda', 'CX-7', 2010);
416
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (416, 'Mazda', 'CX-9', 2010);
417
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (417, 'Mazda', 'MAZDA3', 2010);
418
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (418, 'Mazda', 'MAZDA5', 2010);
419
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (419, 'Mazda', 'MAZDA6', 2010);
420
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (420, 'Mazda', 'Miata MX-5', 2010);
421
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (421, 'Mazda', 'RX-8', 2010);
422
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (422, 'Mazda', 'Tribute', 2010);
423
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (423, 'Mercedes-Benz', 'C-Class', 2010);
424
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (424, 'Mercedes-Benz', 'CL-Class', 2010);
425
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (425, 'Mercedes-Benz', 'CLS-Class', 2010);
426
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (426, 'Mercedes-Benz', 'E-Class', 2010);
427
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (427, 'Mercedes-Benz', 'G-Class', 2010);
428
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (428, 'Mercedes-Benz', 'GL-Class', 2010);
429
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (429, 'Mercedes-Benz', 'GLK-Class', 2010);
430
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (430, 'Mercedes-Benz', 'M-Class', 2010);
431
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (431, 'Mercedes-Benz', 'R-Class', 2010);
432
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (432, 'Mercedes-Benz', 'S-Class', 2010);
433
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (433, 'Mercedes-Benz', 'SLK-Class', 2010);
434
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (434, 'Mercury', 'Grand Marquis', 2010);
435
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (435, 'Mercury', 'Mariner', 2010);
436
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (436, 'Mercury', 'Milan', 2010);
437
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (437, 'Mercury', 'Mountaineer', 2010);
438
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (438, 'MINI', 'Cooper', 2010);
439
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (439, 'MINI', 'Cooper Clubman', 2010);
440
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (440, 'Mitsubishi', 'Eclipse', 2010);
441
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (441, 'Mitsubishi', 'Endeavor', 2010);
442
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (442, 'Mitsubishi', 'Galant', 2010);
443
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (443, 'Mitsubishi', 'Lancer', 2010);
444
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (444, 'Mitsubishi', 'Outlander', 2010);
445
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (445, 'Nissan', '370Z', 2010);
446
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (446, 'Nissan', 'Altima', 2010);
447
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (447, 'Nissan', 'Armada', 2010);
448
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (448, 'Nissan', 'cube', 2010);
449
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (449, 'Nissan', 'Frontier Crew Cab', 2010);
450
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (450, 'Nissan', 'Frontier King Cab', 2010);
451
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (451, 'Nissan', 'GT-R', 2010);
452
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (452, 'Nissan', 'Maxima', 2010);
453
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (453, 'Nissan', 'Murano', 2010);
454
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (454, 'Nissan', 'Pathfinder', 2010);
455
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (455, 'Nissan', 'Rogue', 2010);
456
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (456, 'Nissan', 'Sentra', 2010);
457
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (457, 'Nissan', 'Titan Crew Cab', 2010);
458
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (458, 'Nissan', 'Titan King Cab', 2010);
459
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (459, 'Nissan', 'Versa', 2010);
460
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (460, 'Nissan', 'Xterra', 2010);
461
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (461, 'Pontiac', 'G3', 2010);
462
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (462, 'Pontiac', 'G6', 2010);
463
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (463, 'Pontiac', 'Vibe', 2010);
464
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (464, 'Porsche', '911', 2010);
465
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (465, 'Porsche', 'Boxster', 2010);
466
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (466, 'Porsche', 'Cayenne', 2010);
467
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (467, 'Porsche', 'Cayman', 2010);
468
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (468, 'Porsche', 'Panamera', 2010);
469
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (469, 'Rolls-Royce', 'Ghost', 2010);
470
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (470, 'Rolls-Royce', 'Phantom', 2010);
471
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (471, 'Saab', '9-3', 2010);
472
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (472, 'Saab', '9-5', 2010);
473
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (473, 'Saturn', 'Outlook', 2010);
474
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (474, 'Saturn', 'VUE', 2010);
475
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (475, 'Scion', 'tC', 2010);
476
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (476, 'Scion', 'xB', 2010);
477
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (477, 'Scion', 'xD', 2010);
478
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (478, 'Smart', 'fortwo', 2010);
479
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (479, 'Subaru', 'Forester', 2010);
480
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (480, 'Subaru', 'Impreza', 2010);
481
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (481, 'Subaru', 'Legacy', 2010);
482
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (482, 'Subaru', 'Outback', 2010);
483
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (483, 'Subaru', 'Tribeca', 2010);
484
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (484, 'Suzuki', 'Equator Crew Cab', 2010);
485
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (485, 'Suzuki', 'Equator Extended Cab', 2010);
486
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (486, 'Suzuki', 'Grand Vitara', 2010);
487
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (487, 'Suzuki', 'Kizashi', 2010);
488
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (488, 'Suzuki', 'SX4', 2010);
489
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (489, 'Toyota', '4Runner', 2010);
490
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (490, 'Toyota', 'Avalon', 2010);
491
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (491, 'Toyota', 'Camry', 2010);
492
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (492, 'Toyota', 'Corolla', 2010);
493
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (493, 'Toyota', 'FJ Cruiser', 2010);
494
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (494, 'Toyota', 'Highlander', 2010);
495
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (495, 'Toyota', 'Land Cruiser', 2010);
496
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (496, 'Toyota', 'Matrix', 2010);
497
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (497, 'Toyota', 'Prius', 2010);
498
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (498, 'Toyota', 'RAV4', 2010);
499
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (499, 'Toyota', 'Sequoia', 2010);
500
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (500, 'Toyota', 'Sienna', 2010);
501
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (501, 'Toyota', 'Tacoma Access Cab', 2010);
502
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (502, 'Toyota', 'Tacoma Double Cab', 2010);
503
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (503, 'Toyota', 'Tacoma Regular Cab', 2010);
504
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (504, 'Toyota', 'Tundra CrewMax', 2010);
505
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (505, 'Toyota', 'Tundra Double Cab', 2010);
506
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (506, 'Toyota', 'Tundra Regular Cab', 2010);
507
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (507, 'Toyota', 'Venza', 2010);
508
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (508, 'Toyota', 'Yaris', 2010);
509
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (509, 'Volkswagen', 'CC', 2010);
510
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (510, 'Volkswagen', 'Eos', 2010);
511
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (511, 'Volkswagen', 'Golf', 2010);
512
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (512, 'Volkswagen', 'GTI', 2010);
513
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (513, 'Volkswagen', 'Jetta', 2010);
514
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (514, 'Volkswagen', 'New Beetle', 2010);
515
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (515, 'Volkswagen', 'Passat', 2010);
516
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (516, 'Volkswagen', 'Routan', 2010);
517
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (517, 'Volkswagen', 'Tiguan', 2010);
518
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (518, 'Volkswagen', 'Touareg', 2010);
519
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (519, 'Volvo', 'C30', 2010);
520
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (520, 'Volvo', 'C70', 2010);
521
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (521, 'Volvo', 'S40', 2010);
522
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (522, 'Volvo', 'S80', 2010);
523
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (523, 'Volvo', 'V50', 2010);
524
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (524, 'Volvo', 'V70', 2010);
525
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (525, 'Volvo', 'XC60', 2010);
526
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (526, 'Volvo', 'XC70', 2010);
527
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (527, 'Volvo', 'XC90', 2010);
528
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (528, 'Acura', 'MDX', 2009);
529
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (529, 'Acura', 'RDX', 2009);
530
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (530, 'Acura', 'RL', 2009);
531
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (531, 'Acura', 'TL', 2009);
532
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (532, 'Acura', 'TSX', 2009);
533
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (533, 'Aston Martin', 'DB9', 2009);
534
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (534, 'Aston Martin', 'DBS', 2009);
535
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (535, 'Aston Martin', 'Vantage', 2009);
536
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (536, 'Audi', 'A3', 2009);
537
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (537, 'Audi', 'A4', 2009);
538
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (538, 'Audi', 'A5', 2009);
539
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (539, 'Audi', 'A6', 2009);
540
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (540, 'Audi', 'A8', 2009);
541
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (541, 'Audi', 'Q5', 2009);
542
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (542, 'Audi', 'Q7', 2009);
543
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (543, 'Audi', 'R8', 2009);
544
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (544, 'Audi', 'S4', 2009);
545
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (545, 'Audi', 'S5', 2009);
546
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (546, 'Audi', 'S6', 2009);
547
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (547, 'Audi', 'S8', 2009);
548
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (548, 'Audi', 'TT', 2009);
549
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (549, 'Bentley', 'Arnage', 2009);
550
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (550, 'Bentley', 'Azure', 2009);
551
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (551, 'Bentley', 'Brooklands', 2009);
552
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (552, 'Bentley', 'Continental', 2009);
553
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (553, 'BMW', '1 Series', 2009);
554
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (554, 'BMW', '3 Series', 2009);
555
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (555, 'BMW', '5 Series', 2009);
556
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (556, 'BMW', '6 Series', 2009);
557
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (557, 'BMW', '7 Series', 2009);
558
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (558, 'BMW', 'M3', 2009);
559
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (559, 'BMW', 'M5', 2009);
560
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (560, 'BMW', 'M6', 2009);
561
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (561, 'BMW', 'X3', 2009);
562
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (562, 'BMW', 'X5', 2009);
563
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (563, 'BMW', 'X6', 2009);
564
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (564, 'BMW', 'Z4', 2009);
565
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (565, 'Buick', 'Enclave', 2009);
566
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (566, 'Buick', 'LaCrosse', 2009);
567
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (567, 'Buick', 'Lucerne', 2009);
568
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (568, 'Cadillac', 'CTS', 2009);
569
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (569, 'Cadillac', 'DTS', 2009);
570
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (570, 'Cadillac', 'Escalade', 2009);
571
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (571, 'Cadillac', 'Escalade ESV', 2009);
572
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (572, 'Cadillac', 'Escalade EXT', 2009);
573
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (573, 'Cadillac', 'SRX', 2009);
574
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (574, 'Cadillac', 'STS', 2009);
575
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (575, 'Cadillac', 'XLR', 2009);
576
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (576, 'Chevrolet', 'Avalanche', 2009);
577
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (577, 'Chevrolet', 'Aveo', 2009);
578
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (578, 'Chevrolet', 'Cobalt', 2009);
579
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (579, 'Chevrolet', 'Colorado Crew Cab', 2009);
580
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (580, 'Chevrolet', 'Colorado Extended Cab', 2009);
581
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (581, 'Chevrolet', 'Colorado Regular Cab', 2009);
582
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (582, 'Chevrolet', 'Corvette', 2009);
583
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (583, 'Chevrolet', 'Equinox', 2009);
584
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (584, 'Chevrolet', 'Express 1500 Cargo', 2009);
585
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (585, 'Chevrolet', 'Express 1500 Passenger', 2009);
586
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (586, 'Chevrolet', 'Express 2500 Cargo', 2009);
587
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (587, 'Chevrolet', 'Express 2500 Passenger', 2009);
588
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (588, 'Chevrolet', 'Express 3500 Cargo', 2009);
589
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (589, 'Chevrolet', 'Express 3500 Passenger', 2009);
590
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (590, 'Chevrolet', 'HHR', 2009);
591
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (591, 'Chevrolet', 'Impala', 2009);
592
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (592, 'Chevrolet', 'Malibu', 2009);
593
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (593, 'Chevrolet', 'Silverado 1500 Crew Cab', 2009);
594
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (594, 'Chevrolet', 'Silverado 1500 Extended Cab', 2009);
595
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (595, 'Chevrolet', 'Silverado 1500 Regular Cab', 2009);
596
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (596, 'Chevrolet', 'Silverado 2500 HD Crew Cab', 2009);
597
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (597, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2009);
598
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (598, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2009);
599
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (599, 'Chevrolet', 'Silverado 3500 HD Crew Cab', 2009);
600
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (600, 'Chevrolet', 'Silverado 3500 HD Extended Cab', 2009);
601
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (601, 'Chevrolet', 'Silverado 3500 HD Regular Cab', 2009);
602
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (602, 'Chevrolet', 'Suburban 1500', 2009);
603
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (603, 'Chevrolet', 'Suburban 2500', 2009);
604
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (604, 'Chevrolet', 'Tahoe', 2009);
605
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (605, 'Chevrolet', 'TrailBlazer', 2009);
606
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (606, 'Chevrolet', 'Traverse', 2009);
607
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (607, 'Chrysler', '300', 2009);
608
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (608, 'Chrysler', 'Aspen', 2009);
609
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (609, 'Chrysler', 'PT Cruiser', 2009);
610
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (610, 'Chrysler', 'Sebring', 2009);
611
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (611, 'Chrysler', 'Town & Country', 2009);
612
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (612, 'Dodge', 'Avenger', 2009);
613
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (613, 'Dodge', 'Caliber', 2009);
614
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (614, 'Dodge', 'Challenger', 2009);
615
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (615, 'Dodge', 'Charger', 2009);
616
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (616, 'Dodge', 'Dakota Crew Cab', 2009);
617
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (617, 'Dodge', 'Dakota Extended Cab', 2009);
618
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (618, 'Dodge', 'Durango', 2009);
619
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (619, 'Dodge', 'Grand Caravan Cargo', 2009);
620
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (620, 'Dodge', 'Grand Caravan Passenger', 2009);
621
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (621, 'Dodge', 'Journey', 2009);
622
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (622, 'Dodge', 'Nitro', 2009);
623
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (623, 'Dodge', 'Ram 1500 Crew Cab', 2009);
624
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (624, 'Dodge', 'Ram 1500 Quad Cab', 2009);
625
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (625, 'Dodge', 'Ram 1500 Regular Cab', 2009);
626
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (626, 'Dodge', 'Ram 2500 Mega Cab', 2009);
627
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (627, 'Dodge', 'Ram 2500 Quad Cab', 2009);
628
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (628, 'Dodge', 'Ram 2500 Regular Cab', 2009);
629
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (629, 'Dodge', 'Ram 3500 Mega Cab', 2009);
630
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (630, 'Dodge', 'Ram 3500 Quad Cab', 2009);
631
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (631, 'Dodge', 'Ram 3500 Regular Cab', 2009);
632
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (632, 'Dodge', 'Viper', 2009);
633
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (633, 'Ford', 'Crown Victoria', 2009);
634
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (634, 'Ford', 'E150 Cargo', 2009);
635
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (635, 'Ford', 'E150 Super Duty Passenger', 2009);
636
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (636, 'Ford', 'E250 Cargo', 2009);
637
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (637, 'Ford', 'E350 Super Duty Cargo', 2009);
638
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (638, 'Ford', 'E350 Super Duty Passenger', 2009);
639
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (639, 'Ford', 'Edge', 2009);
640
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (640, 'Ford', 'Escape', 2009);
641
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (641, 'Ford', 'Expedition', 2009);
642
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (642, 'Ford', 'Expedition EL', 2009);
643
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (643, 'Ford', 'Explorer', 2009);
644
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (644, 'Ford', 'Explorer Sport Trac', 2009);
645
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (645, 'Ford', 'F150 Regular Cab', 2009);
646
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (646, 'Ford', 'F150 Super Cab', 2009);
647
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (647, 'Ford', 'F150 SuperCrew Cab', 2009);
648
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (648, 'Ford', 'F250 Super Duty Crew Cab', 2009);
649
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (649, 'Ford', 'F250 Super Duty Regular Cab', 2009);
650
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (650, 'Ford', 'F250 Super Duty Super Cab', 2009);
651
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (651, 'Ford', 'F350 Super Duty Crew Cab', 2009);
652
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (652, 'Ford', 'F350 Super Duty Regular Cab', 2009);
653
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (653, 'Ford', 'F350 Super Duty Super Cab', 2009);
654
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (654, 'Ford', 'F450 Super Duty Crew Cab', 2009);
655
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (655, 'Ford', 'Flex', 2009);
656
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (656, 'Ford', 'Focus', 2009);
657
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (657, 'Ford', 'Fusion', 2009);
658
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (658, 'Ford', 'Mustang', 2009);
659
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (659, 'Ford', 'Ranger Regular Cab', 2009);
660
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (660, 'Ford', 'Ranger Super Cab', 2009);
661
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (661, 'Ford', 'Taurus', 2009);
662
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (662, 'Ford', 'Taurus X', 2009);
663
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (663, 'GMC', 'Acadia', 2009);
664
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (664, 'GMC', 'Canyon Crew Cab', 2009);
665
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (665, 'GMC', 'Canyon Extended Cab', 2009);
666
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (666, 'GMC', 'Canyon Regular Cab', 2009);
667
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (667, 'GMC', 'Envoy', 2009);
668
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (668, 'GMC', 'Savana 1500 Cargo', 2009);
669
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (669, 'GMC', 'Savana 1500 Passenger', 2009);
670
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (670, 'GMC', 'Savana 2500 Cargo', 2009);
671
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (671, 'GMC', 'Savana 2500 Passenger', 2009);
672
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (672, 'GMC', 'Savana 3500 Cargo', 2009);
673
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (673, 'GMC', 'Savana 3500 Passenger', 2009);
674
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (674, 'GMC', 'Sierra 1500 Crew Cab', 2009);
675
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (675, 'GMC', 'Sierra 1500 Extended Cab', 2009);
676
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (676, 'GMC', 'Sierra 1500 Regular Cab', 2009);
677
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (677, 'GMC', 'Sierra 2500 HD Crew Cab', 2009);
678
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (678, 'GMC', 'Sierra 2500 HD Extended Cab', 2009);
679
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (679, 'GMC', 'Sierra 2500 HD Regular Cab', 2009);
680
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (680, 'GMC', 'Sierra 3500 HD Crew Cab', 2009);
681
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (681, 'GMC', 'Sierra 3500 HD Extended Cab', 2009);
682
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (682, 'GMC', 'Sierra 3500 HD Regular Cab', 2009);
683
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (683, 'GMC', 'Yukon', 2009);
684
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (684, 'GMC', 'Yukon XL 1500', 2009);
685
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (685, 'GMC', 'Yukon XL 2500', 2009);
686
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (686, 'Honda', 'Accord', 2009);
687
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (687, 'Honda', 'Civic', 2009);
688
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (688, 'Honda', 'CR-V', 2009);
689
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (689, 'Honda', 'Element', 2009);
690
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (690, 'Honda', 'Fit', 2009);
691
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (691, 'Honda', 'Odyssey', 2009);
692
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (692, 'Honda', 'Pilot', 2009);
693
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (693, 'Honda', 'Ridgeline', 2009);
694
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (694, 'Honda', 'S2000', 2009);
695
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (695, 'HUMMER', 'H2', 2009);
696
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (696, 'HUMMER', 'H3', 2009);
697
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (697, 'HUMMER', 'H3T', 2009);
698
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (698, 'Hyundai', 'Accent', 2009);
699
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (699, 'Hyundai', 'Azera', 2009);
700
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (700, 'Hyundai', 'Elantra', 2009);
701
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (701, 'Hyundai', 'Genesis', 2009);
702
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (702, 'Hyundai', 'Santa Fe', 2009);
703
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (703, 'Hyundai', 'Sonata', 2009);
704
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (704, 'Hyundai', 'Tucson', 2009);
705
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (705, 'Hyundai', 'Veracruz', 2009);
706
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (706, 'Infiniti', 'EX', 2009);
707
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (707, 'Infiniti', 'FX', 2009);
708
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (708, 'Infiniti', 'G', 2009);
709
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (709, 'Infiniti', 'M', 2009);
710
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (710, 'Infiniti', 'QX', 2009);
711
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (711, 'Jaguar', 'XF', 2009);
712
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (712, 'Jaguar', 'XJ Series', 2009);
713
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (713, 'Jaguar', 'XK Series', 2009);
714
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (714, 'Jeep', 'Commander', 2009);
715
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (715, 'Jeep', 'Compass', 2009);
716
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (716, 'Jeep', 'Grand Cherokee', 2009);
717
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (717, 'Jeep', 'Liberty', 2009);
718
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (718, 'Jeep', 'Patriot', 2009);
719
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (719, 'Jeep', 'Wrangler', 2009);
720
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (720, 'Kia', 'Amanti', 2009);
721
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (721, 'Kia', 'Borrego', 2009);
722
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (722, 'Kia', 'Optima', 2009);
723
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (723, 'Kia', 'Rio', 2009);
724
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (724, 'Kia', 'Rondo', 2009);
725
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (725, 'Kia', 'Sedona', 2009);
726
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (726, 'Kia', 'Sorento', 2009);
727
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (727, 'Kia', 'Spectra', 2009);
728
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (728, 'Kia', 'Sportage', 2009);
729
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (729, 'Land Rover', 'LR2', 2009);
730
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (730, 'Land Rover', 'LR3', 2009);
731
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (731, 'Land Rover', 'Range Rover', 2009);
732
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (732, 'Land Rover', 'Range Rover Sport', 2009);
733
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (733, 'Lexus', 'ES', 2009);
734
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (734, 'Lexus', 'GS', 2009);
735
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (735, 'Lexus', 'GX', 2009);
736
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (736, 'Lexus', 'IS', 2009);
737
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (737, 'Lexus', 'IS F', 2009);
738
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (738, 'Lexus', 'LS', 2009);
739
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (739, 'Lexus', 'LX', 2009);
740
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (740, 'Lexus', 'RX', 2009);
741
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (741, 'Lexus', 'SC', 2009);
742
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (742, 'Lincoln', 'MKS', 2009);
743
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (743, 'Lincoln', 'MKX', 2009);
744
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (744, 'Lincoln', 'MKZ', 2009);
745
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (745, 'Lincoln', 'Navigator', 2009);
746
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (746, 'Lincoln', 'Navigator L', 2009);
747
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (747, 'Lincoln', 'Town Car', 2009);
748
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (748, 'Lotus', 'Elise', 2009);
749
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (749, 'Lotus', 'Exige', 2009);
750
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (750, 'Maybach', '57', 2009);
751
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (751, 'Maybach', '62', 2009);
752
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (752, 'Mazda', 'B-Series Extended Cab', 2009);
753
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (753, 'Mazda', 'B-Series Regular Cab', 2009);
754
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (754, 'Mazda', 'CX-7', 2009);
755
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (755, 'Mazda', 'CX-9', 2009);
756
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (756, 'Mazda', 'MAZDA3', 2009);
757
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (757, 'Mazda', 'MAZDA5', 2009);
758
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (758, 'Mazda', 'MAZDA6', 2009);
759
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (759, 'Mazda', 'Miata MX-5', 2009);
760
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (760, 'Mazda', 'RX-8', 2009);
761
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (761, 'Mazda', 'Tribute', 2009);
762
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (762, 'Mercedes-Benz', 'C-Class', 2009);
763
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (763, 'Mercedes-Benz', 'CL-Class', 2009);
764
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (764, 'Mercedes-Benz', 'CLK-Class', 2009);
765
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (765, 'Mercedes-Benz', 'CLS-Class', 2009);
766
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (766, 'Mercedes-Benz', 'E-Class', 2009);
767
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (767, 'Mercedes-Benz', 'G-Class', 2009);
768
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (768, 'Mercedes-Benz', 'GL-Class', 2009);
769
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (769, 'Mercedes-Benz', 'M-Class', 2009);
770
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (770, 'Mercedes-Benz', 'R-Class', 2009);
771
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (771, 'Mercedes-Benz', 'S-Class', 2009);
772
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (772, 'Mercedes-Benz', 'SL-Class', 2009);
773
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (773, 'Mercedes-Benz', 'SLK-Class', 2009);
774
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (774, 'Mercedes-Benz', 'SLR McLaren', 2009);
775
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (775, 'Mercury', 'Grand Marquis', 2009);
776
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (776, 'Mercury', 'Mariner', 2009);
777
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (777, 'Mercury', 'Milan', 2009);
778
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (778, 'Mercury', 'Mountaineer', 2009);
779
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (779, 'Mercury', 'Sable', 2009);
780
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (780, 'MINI', 'Cooper', 2009);
781
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (781, 'MINI', 'Cooper Clubman', 2009);
782
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (782, 'Mitsubishi', 'Eclipse', 2009);
783
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (783, 'Mitsubishi', 'Galant', 2009);
784
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (784, 'Mitsubishi', 'Lancer', 2009);
785
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (785, 'Mitsubishi', 'Outlander', 2009);
786
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (786, 'Mitsubishi', 'Raider Double Cab', 2009);
787
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (787, 'Mitsubishi', 'Raider Extended Cab', 2009);
788
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (788, 'Nissan', '350Z', 2009);
789
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (789, 'Nissan', '370Z', 2009);
790
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (790, 'Nissan', 'Altima', 2009);
791
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (791, 'Nissan', 'Armada', 2009);
792
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (792, 'Nissan', 'cube', 2009);
793
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (793, 'Nissan', 'Frontier Crew Cab', 2009);
794
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (794, 'Nissan', 'Frontier King Cab', 2009);
795
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (795, 'Nissan', 'GT-R', 2009);
796
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (796, 'Nissan', 'Maxima', 2009);
797
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (797, 'Nissan', 'Murano', 2009);
798
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (798, 'Nissan', 'Pathfinder', 2009);
799
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (799, 'Nissan', 'Quest', 2009);
800
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (800, 'Nissan', 'Rogue', 2009);
801
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (801, 'Nissan', 'Sentra', 2009);
802
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (802, 'Nissan', 'Titan Crew Cab', 2009);
803
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (803, 'Nissan', 'Titan King Cab', 2009);
804
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (804, 'Nissan', 'Versa', 2009);
805
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (805, 'Nissan', 'Xterra', 2009);
806
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (806, 'Pontiac', 'G3', 2009);
807
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (807, 'Pontiac', 'G5', 2009);
808
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (808, 'Pontiac', 'G6', 2009);
809
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (809, 'Pontiac', 'G6 (2009.5)', 2009);
810
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (810, 'Pontiac', 'G8', 2009);
811
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (811, 'Pontiac', 'Solstice', 2009);
812
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (812, 'Pontiac', 'Torrent', 2009);
813
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (813, 'Pontiac', 'Vibe', 2009);
814
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (814, 'Porsche', '911', 2009);
815
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (815, 'Porsche', 'Boxster', 2009);
816
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (816, 'Porsche', 'Cayenne', 2009);
817
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (817, 'Porsche', 'Cayman', 2009);
818
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (818, 'Rolls-Royce', 'Phantom', 2009);
819
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (819, 'Saab', '9-3', 2009);
820
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (820, 'Saab', '9-5', 2009);
821
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (821, 'Saab', '9-7X', 2009);
822
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (822, 'Saturn', 'Aura', 2009);
823
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (823, 'Saturn', 'Outlook', 2009);
824
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (824, 'Saturn', 'SKY', 2009);
825
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (825, 'Saturn', 'VUE', 2009);
826
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (826, 'Scion', 'tC', 2009);
827
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (827, 'Scion', 'xB', 2009);
828
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (828, 'Scion', 'xD', 2009);
829
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (829, 'Smart', 'fortwo', 2009);
830
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (830, 'Subaru', 'Forester', 2009);
831
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (831, 'Subaru', 'Impreza', 2009);
832
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (832, 'Subaru', 'Legacy', 2009);
833
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (833, 'Subaru', 'Outback', 2009);
834
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (834, 'Subaru', 'Tribeca', 2009);
835
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (835, 'Suzuki', 'Equator Crew Cab', 2009);
836
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (836, 'Suzuki', 'Equator Extended Cab', 2009);
837
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (837, 'Suzuki', 'Grand Vitara', 2009);
838
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (838, 'Suzuki', 'SX4', 2009);
839
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (839, 'Suzuki', 'XL7', 2009);
840
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (840, 'Toyota', '4Runner', 2009);
841
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (841, 'Toyota', 'Avalon', 2009);
842
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (842, 'Toyota', 'Camry', 2009);
843
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (843, 'Toyota', 'Corolla', 2009);
844
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (844, 'Toyota', 'FJ Cruiser', 2009);
845
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (845, 'Toyota', 'Highlander', 2009);
846
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (846, 'Toyota', 'Land Cruiser', 2009);
847
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (847, 'Toyota', 'Matrix', 2009);
848
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (848, 'Toyota', 'Prius', 2009);
849
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (849, 'Toyota', 'RAV4', 2009);
850
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (850, 'Toyota', 'Sequoia', 2009);
851
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (851, 'Toyota', 'Sienna', 2009);
852
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (852, 'Toyota', 'Tacoma Access Cab', 2009);
853
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (853, 'Toyota', 'Tacoma Double Cab', 2009);
854
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (854, 'Toyota', 'Tacoma Regular Cab', 2009);
855
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (855, 'Toyota', 'Tundra CrewMax', 2009);
856
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (856, 'Toyota', 'Tundra Double Cab', 2009);
857
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (857, 'Toyota', 'Tundra Regular Cab', 2009);
858
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (858, 'Toyota', 'Venza', 2009);
859
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (859, 'Toyota', 'Yaris', 2009);
860
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (860, 'Volkswagen', 'CC', 2009);
861
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (861, 'Volkswagen', 'Eos', 2009);
862
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (862, 'Volkswagen', 'GLI', 2009);
863
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (863, 'Volkswagen', 'GTI', 2009);
864
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (864, 'Volkswagen', 'Jetta', 2009);
865
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (865, 'Volkswagen', 'New Beetle', 2009);
866
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (866, 'Volkswagen', 'Passat', 2009);
867
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (867, 'Volkswagen', 'Rabbit', 2009);
868
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (868, 'Volkswagen', 'Routan', 2009);
869
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (869, 'Volkswagen', 'Tiguan', 2009);
870
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (870, 'Volkswagen', 'Touareg 2', 2009);
871
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (871, 'Volvo', 'C30', 2009);
872
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (872, 'Volvo', 'C70', 2009);
873
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (873, 'Volvo', 'S40', 2009);
874
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (874, 'Volvo', 'S60', 2009);
875
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (875, 'Volvo', 'S80', 2009);
876
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (876, 'Volvo', 'V50', 2009);
877
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (877, 'Volvo', 'V70', 2009);
878
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (878, 'Volvo', 'XC70', 2009);
879
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (879, 'Volvo', 'XC90', 2009);
880
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (880, 'Acura', 'MDX', 2008);
881
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (881, 'Acura', 'RDX', 2008);
882
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (882, 'Acura', 'RL', 2008);
883
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (883, 'Acura', 'TL', 2008);
884
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (884, 'Acura', 'TSX', 2008);
885
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (885, 'Aston Martin', 'DB9', 2008);
886
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (886, 'Aston Martin', 'DBS', 2008);
887
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (887, 'Aston Martin', 'Vantage', 2008);
888
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (888, 'Audi', 'A3', 2008);
889
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (889, 'Audi', 'A4', 2008);
890
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (890, 'Audi', 'A5', 2008);
891
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (891, 'Audi', 'A6', 2008);
892
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (892, 'Audi', 'A8', 2008);
893
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (893, 'Audi', 'Q7', 2008);
894
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (894, 'Audi', 'R8', 2008);
895
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (895, 'Audi', 'RS 4', 2008);
896
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (896, 'Audi', 'S4', 2008);
897
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (897, 'Audi', 'S5', 2008);
898
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (898, 'Audi', 'S6', 2008);
899
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (899, 'Audi', 'S8', 2008);
900
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (900, 'Audi', 'TT', 2008);
901
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (901, 'Bentley', 'Arnage', 2008);
902
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (902, 'Bentley', 'Azure', 2008);
903
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (903, 'Bentley', 'Continental', 2008);
904
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (904, 'BMW', '1 Series', 2008);
905
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (905, 'BMW', '3 Series', 2008);
906
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (906, 'BMW', '5 Series', 2008);
907
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (907, 'BMW', '6 Series', 2008);
908
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (908, 'BMW', '7 Series', 2008);
909
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (909, 'BMW', 'Alpina B7', 2008);
910
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (910, 'BMW', 'M3', 2008);
911
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (911, 'BMW', 'M5', 2008);
912
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (912, 'BMW', 'M6', 2008);
913
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (913, 'BMW', 'X3', 2008);
914
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (914, 'BMW', 'X5', 2008);
915
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (915, 'BMW', 'X6', 2008);
916
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (916, 'BMW', 'Z4', 2008);
917
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (917, 'BMW', 'Z4 M', 2008);
918
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (918, 'Buick', 'Enclave', 2008);
919
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (919, 'Buick', 'LaCrosse', 2008);
920
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (920, 'Buick', 'Lucerne', 2008);
921
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (921, 'Cadillac', 'CTS', 2008);
922
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (922, 'Cadillac', 'DTS', 2008);
923
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (923, 'Cadillac', 'Escalade', 2008);
924
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (924, 'Cadillac', 'Escalade ESV', 2008);
925
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (925, 'Cadillac', 'Escalade EXT', 2008);
926
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (926, 'Cadillac', 'SRX', 2008);
927
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (927, 'Cadillac', 'STS', 2008);
928
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (928, 'Cadillac', 'XLR', 2008);
929
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (929, 'Chevrolet', 'Avalanche', 2008);
930
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (930, 'Chevrolet', 'Aveo', 2008);
931
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (931, 'Chevrolet', 'Cobalt', 2008);
932
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (932, 'Chevrolet', 'Colorado Crew Cab', 2008);
933
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (933, 'Chevrolet', 'Colorado Extended Cab', 2008);
934
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (934, 'Chevrolet', 'Colorado Regular Cab', 2008);
935
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (935, 'Chevrolet', 'Corvette', 2008);
936
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (936, 'Chevrolet', 'Equinox', 2008);
937
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (937, 'Chevrolet', 'Express 1500 Cargo', 2008);
938
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (938, 'Chevrolet', 'Express 1500 Passenger', 2008);
939
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (939, 'Chevrolet', 'Express 2500 Cargo', 2008);
940
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (940, 'Chevrolet', 'Express 2500 Passenger', 2008);
941
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (941, 'Chevrolet', 'Express 3500 Cargo', 2008);
942
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (942, 'Chevrolet', 'Express 3500 Passenger', 2008);
943
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (943, 'Chevrolet', 'HHR', 2008);
944
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (944, 'Chevrolet', 'Impala', 2008);
945
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (945, 'Chevrolet', 'Malibu', 2008);
946
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (946, 'Chevrolet', 'Malibu (Classic)', 2008);
947
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (947, 'Chevrolet', 'Silverado 1500 Crew Cab', 2008);
948
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (948, 'Chevrolet', 'Silverado 1500 Extended Cab', 2008);
949
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (949, 'Chevrolet', 'Silverado 1500 Regular Cab', 2008);
950
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (950, 'Chevrolet', 'Silverado 2500 HD Crew Cab', 2008);
951
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (951, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2008);
952
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (952, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2008);
953
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (953, 'Chevrolet', 'Silverado 3500 HD Crew Cab', 2008);
954
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (954, 'Chevrolet', 'Silverado 3500 HD Extended Cab', 2008);
955
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (955, 'Chevrolet', 'Silverado 3500 HD Regular Cab', 2008);
956
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (956, 'Chevrolet', 'Suburban 1500', 2008);
957
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (957, 'Chevrolet', 'Suburban 2500', 2008);
958
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (958, 'Chevrolet', 'Tahoe', 2008);
959
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (959, 'Chevrolet', 'TrailBlazer', 2008);
960
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (960, 'Chevrolet', 'Uplander Cargo', 2008);
961
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (961, 'Chevrolet', 'Uplander Passenger', 2008);
962
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (962, 'Chrysler', '300', 2008);
963
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (963, 'Chrysler', 'Aspen', 2008);
964
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (964, 'Chrysler', 'Crossfire', 2008);
965
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (965, 'Chrysler', 'Pacifica', 2008);
966
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (966, 'Chrysler', 'PT Cruiser', 2008);
967
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (967, 'Chrysler', 'Sebring', 2008);
968
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (968, 'Chrysler', 'Town & Country', 2008);
969
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (969, 'Dodge', 'Avenger', 2008);
970
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (970, 'Dodge', 'Caliber', 2008);
971
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (971, 'Dodge', 'Challenger', 2008);
972
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (972, 'Dodge', 'Charger', 2008);
973
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (973, 'Dodge', 'Dakota Crew Cab', 2008);
974
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (974, 'Dodge', 'Dakota Extended Cab', 2008);
975
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (975, 'Dodge', 'Durango', 2008);
976
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (976, 'Dodge', 'Grand Caravan Cargo', 2008);
977
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (977, 'Dodge', 'Grand Caravan Passenger', 2008);
978
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (978, 'Dodge', 'Magnum', 2008);
979
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (979, 'Dodge', 'Nitro', 2008);
980
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (980, 'Dodge', 'Ram 1500 Mega Cab', 2008);
981
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (981, 'Dodge', 'Ram 1500 Quad Cab', 2008);
982
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (982, 'Dodge', 'Ram 1500 Regular Cab', 2008);
983
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (983, 'Dodge', 'Ram 2500 Mega Cab', 2008);
984
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (984, 'Dodge', 'Ram 2500 Quad Cab', 2008);
985
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (985, 'Dodge', 'Ram 2500 Regular Cab', 2008);
986
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (986, 'Dodge', 'Ram 3500 Mega Cab', 2008);
987
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (987, 'Dodge', 'Ram 3500 Quad Cab', 2008);
988
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (988, 'Dodge', 'Ram 3500 Regular Cab', 2008);
989
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (989, 'Dodge', 'Viper', 2008);
990
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (990, 'Ford', 'Crown Victoria', 2008);
991
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (991, 'Ford', 'E150 Cargo', 2008);
992
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (992, 'Ford', 'E150 Super Duty Passenger', 2008);
993
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (993, 'Ford', 'E250 Cargo', 2008);
994
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (994, 'Ford', 'E350 Super Duty Cargo', 2008);
995
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (995, 'Ford', 'E350 Super Duty Passenger', 2008);
996
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (996, 'Ford', 'Edge', 2008);
997
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (997, 'Ford', 'Escape', 2008);
998
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (998, 'Ford', 'Expedition', 2008);
999
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (999, 'Ford', 'Expedition EL', 2008);
1000
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1000, 'Ford', 'Explorer', 2008);
1001
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1001, 'Ford', 'Explorer Sport Trac', 2008);
1002
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1002, 'Ford', 'F150 Regular Cab', 2008);
1003
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1003, 'Ford', 'F150 Super Cab', 2008);
1004
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1004, 'Ford', 'F150 SuperCrew Cab', 2008);
1005
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1005, 'Ford', 'F250 Super Duty Crew Cab', 2008);
1006
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1006, 'Ford', 'F250 Super Duty Regular Cab', 2008);
1007
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1007, 'Ford', 'F250 Super Duty Super Cab', 2008);
1008
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1008, 'Ford', 'F350 Super Duty Crew Cab', 2008);
1009
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1009, 'Ford', 'F350 Super Duty Regular Cab', 2008);
1010
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1010, 'Ford', 'F350 Super Duty Super Cab', 2008);
1011
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1011, 'Ford', 'F450 Super Duty Crew Cab', 2008);
1012
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1012, 'Ford', 'Focus', 2008);
1013
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1013, 'Ford', 'Fusion', 2008);
1014
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1014, 'Ford', 'Mustang', 2008);
1015
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1015, 'Ford', 'Ranger Regular Cab', 2008);
1016
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1016, 'Ford', 'Ranger Super Cab', 2008);
1017
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1017, 'Ford', 'Taurus', 2008);
1018
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1018, 'Ford', 'Taurus X', 2008);
1019
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1019, 'GMC', 'Acadia', 2008);
1020
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1020, 'GMC', 'Canyon Crew Cab', 2008);
1021
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1021, 'GMC', 'Canyon Extended Cab', 2008);
1022
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1022, 'GMC', 'Canyon Regular Cab', 2008);
1023
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1023, 'GMC', 'Envoy', 2008);
1024
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1024, 'GMC', 'Savana 1500 Cargo', 2008);
1025
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1025, 'GMC', 'Savana 1500 Passenger', 2008);
1026
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1026, 'GMC', 'Savana 2500 Cargo', 2008);
1027
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1027, 'GMC', 'Savana 2500 Passenger', 2008);
1028
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1028, 'GMC', 'Savana 3500 Cargo', 2008);
1029
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1029, 'GMC', 'Savana 3500 Passenger', 2008);
1030
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1030, 'GMC', 'Sierra 1500 Crew Cab', 2008);
1031
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1031, 'GMC', 'Sierra 1500 Extended Cab', 2008);
1032
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1032, 'GMC', 'Sierra 1500 Regular Cab', 2008);
1033
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1033, 'GMC', 'Sierra 2500 HD Crew Cab', 2008);
1034
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1034, 'GMC', 'Sierra 2500 HD Extended Cab', 2008);
1035
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1035, 'GMC', 'Sierra 2500 HD Regular Cab', 2008);
1036
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1036, 'GMC', 'Sierra 3500 HD Crew Cab', 2008);
1037
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1037, 'GMC', 'Sierra 3500 HD Extended Cab', 2008);
1038
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1038, 'GMC', 'Sierra 3500 HD Regular Cab', 2008);
1039
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1039, 'GMC', 'Yukon', 2008);
1040
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1040, 'GMC', 'Yukon XL 1500', 2008);
1041
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1041, 'GMC', 'Yukon XL 2500', 2008);
1042
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1042, 'Honda', 'Accord', 2008);
1043
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1043, 'Honda', 'Civic', 2008);
1044
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1044, 'Honda', 'CR-V', 2008);
1045
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1045, 'Honda', 'Element', 2008);
1046
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1046, 'Honda', 'Fit', 2008);
1047
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1047, 'Honda', 'Odyssey', 2008);
1048
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1048, 'Honda', 'Pilot', 2008);
1049
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1049, 'Honda', 'Ridgeline', 2008);
1050
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1050, 'Honda', 'S2000', 2008);
1051
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1051, 'HUMMER', 'H2', 2008);
1052
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1052, 'HUMMER', 'H3', 2008);
1053
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1053, 'Hyundai', 'Accent', 2008);
1054
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1054, 'Hyundai', 'Azera', 2008);
1055
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1055, 'Hyundai', 'Elantra', 2008);
1056
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1056, 'Hyundai', 'Entourage', 2008);
1057
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1057, 'Hyundai', 'Santa Fe', 2008);
1058
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1058, 'Hyundai', 'Sonata', 2008);
1059
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1059, 'Hyundai', 'Tiburon', 2008);
1060
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1060, 'Hyundai', 'Tucson', 2008);
1061
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1061, 'Hyundai', 'Veracruz', 2008);
1062
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1062, 'Infiniti', 'EX', 2008);
1063
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1063, 'Infiniti', 'FX', 2008);
1064
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1064, 'Infiniti', 'G', 2008);
1065
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1065, 'Infiniti', 'M', 2008);
1066
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1066, 'Infiniti', 'QX', 2008);
1067
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1067, 'Isuzu', 'Ascender', 2008);
1068
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1068, 'Isuzu', 'i-290 Extended Cab', 2008);
1069
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1069, 'Isuzu', 'i-370 Crew Cab', 2008);
1070
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1070, 'Isuzu', 'i-370 Extended Cab', 2008);
1071
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1071, 'Jaguar', 'S-Type', 2008);
1072
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1072, 'Jaguar', 'XJ Series', 2008);
1073
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1073, 'Jaguar', 'XK Series', 2008);
1074
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1074, 'Jaguar', 'X-Type', 2008);
1075
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1075, 'Jeep', 'Commander', 2008);
1076
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1076, 'Jeep', 'Compass', 2008);
1077
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1077, 'Jeep', 'Grand Cherokee', 2008);
1078
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1078, 'Jeep', 'Liberty', 2008);
1079
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1079, 'Jeep', 'Patriot', 2008);
1080
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1080, 'Jeep', 'Wrangler', 2008);
1081
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1081, 'Kia', 'Amanti', 2008);
1082
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1082, 'Kia', 'Optima', 2008);
1083
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1083, 'Kia', 'Rio', 2008);
1084
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1084, 'Kia', 'Rondo', 2008);
1085
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1085, 'Kia', 'Sedona', 2008);
1086
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1086, 'Kia', 'Sorento', 2008);
1087
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1087, 'Kia', 'Spectra', 2008);
1088
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1088, 'Kia', 'Sportage', 2008);
1089
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1089, 'Land Rover', 'LR2', 2008);
1090
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1090, 'Land Rover', 'LR3', 2008);
1091
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1091, 'Land Rover', 'Range Rover', 2008);
1092
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1092, 'Land Rover', 'Range Rover Sport', 2008);
1093
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1093, 'Lexus', 'ES', 2008);
1094
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1094, 'Lexus', 'GS', 2008);
1095
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1095, 'Lexus', 'GX', 2008);
1096
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1096, 'Lexus', 'IS', 2008);
1097
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1097, 'Lexus', 'IS F', 2008);
1098
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1098, 'Lexus', 'LS', 2008);
1099
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1099, 'Lexus', 'LX', 2008);
1100
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1100, 'Lexus', 'RX', 2008);
1101
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1101, 'Lexus', 'SC', 2008);
1102
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1102, 'Lincoln', 'Mark LT', 2008);
1103
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1103, 'Lincoln', 'MKX', 2008);
1104
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1104, 'Lincoln', 'MKZ', 2008);
1105
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1105, 'Lincoln', 'Navigator', 2008);
1106
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1106, 'Lincoln', 'Navigator L', 2008);
1107
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1107, 'Lincoln', 'Town Car', 2008);
1108
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1108, 'Lotus', 'Elise', 2008);
1109
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1109, 'Lotus', 'Exige S', 2008);
1110
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1110, 'Maybach', '57', 2008);
1111
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1111, 'Maybach', '62', 2008);
1112
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1112, 'Mazda', 'B-Series Extended Cab', 2008);
1113
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1113, 'Mazda', 'B-Series Regular Cab', 2008);
1114
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1114, 'Mazda', 'CX-7', 2008);
1115
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1115, 'Mazda', 'CX-9', 2008);
1116
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1116, 'Mazda', 'MAZDA3', 2008);
1117
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1117, 'Mazda', 'MAZDA5', 2008);
1118
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1118, 'Mazda', 'MAZDA6', 2008);
1119
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1119, 'Mazda', 'Miata MX-5', 2008);
1120
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1120, 'Mazda', 'RX-8', 2008);
1121
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1121, 'Mazda', 'Tribute', 2008);
1122
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1122, 'Mercedes-Benz', 'C-Class', 2008);
1123
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1123, 'Mercedes-Benz', 'CL-Class', 2008);
1124
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1124, 'Mercedes-Benz', 'CLK-Class', 2008);
1125
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1125, 'Mercedes-Benz', 'CLS-Class', 2008);
1126
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1126, 'Mercedes-Benz', 'E-Class', 2008);
1127
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1127, 'Mercedes-Benz', 'G-Class', 2008);
1128
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1128, 'Mercedes-Benz', 'GL-Class', 2008);
1129
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1129, 'Mercedes-Benz', 'M-Class', 2008);
1130
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1130, 'Mercedes-Benz', 'R-Class', 2008);
1131
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1131, 'Mercedes-Benz', 'S-Class', 2008);
1132
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1132, 'Mercedes-Benz', 'SL-Class', 2008);
1133
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1133, 'Mercedes-Benz', 'SLK-Class', 2008);
1134
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1134, 'Mercedes-Benz', 'SLR McLaren', 2008);
1135
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1135, 'Mercury', 'Grand Marquis', 2008);
1136
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1136, 'Mercury', 'Mariner', 2008);
1137
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1137, 'Mercury', 'Milan', 2008);
1138
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1138, 'Mercury', 'Mountaineer', 2008);
1139
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1139, 'Mercury', 'Sable', 2008);
1140
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1140, 'MINI', 'Cooper', 2008);
1141
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1141, 'MINI', 'Cooper Clubman', 2008);
1142
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1142, 'Mitsubishi', 'Eclipse', 2008);
1143
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1143, 'Mitsubishi', 'Endeavor', 2008);
1144
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1144, 'Mitsubishi', 'Galant', 2008);
1145
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1145, 'Mitsubishi', 'Lancer', 2008);
1146
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1146, 'Mitsubishi', 'Outlander', 2008);
1147
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1147, 'Mitsubishi', 'Raider Double Cab', 2008);
1148
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1148, 'Mitsubishi', 'Raider Extended Cab', 2008);
1149
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1149, 'Nissan', '350Z', 2008);
1150
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1150, 'Nissan', 'Altima', 2008);
1151
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1151, 'Nissan', 'Armada', 2008);
1152
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1152, 'Nissan', 'Frontier Crew Cab', 2008);
1153
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1153, 'Nissan', 'Frontier King Cab', 2008);
1154
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1154, 'Nissan', 'Maxima', 2008);
1155
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1155, 'Nissan', 'Pathfinder', 2008);
1156
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1156, 'Nissan', 'Quest', 2008);
1157
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1157, 'Nissan', 'Rogue', 2008);
1158
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1158, 'Nissan', 'Sentra', 2008);
1159
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1159, 'Nissan', 'Titan Crew Cab', 2008);
1160
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1160, 'Nissan', 'Titan King Cab', 2008);
1161
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1161, 'Nissan', 'Versa', 2008);
1162
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1162, 'Nissan', 'Xterra', 2008);
1163
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1163, 'Pontiac', 'G5', 2008);
1164
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1164, 'Pontiac', 'G6', 2008);
1165
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1165, 'Pontiac', 'G8', 2008);
1166
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1166, 'Pontiac', 'Grand Prix', 2008);
1167
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1167, 'Pontiac', 'Solstice', 2008);
1168
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1168, 'Pontiac', 'Torrent', 2008);
1169
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1169, 'Pontiac', 'Vibe', 2008);
1170
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1170, 'Porsche', '911', 2008);
1171
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1171, 'Porsche', 'Boxster', 2008);
1172
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1172, 'Porsche', 'Cayenne', 2008);
1173
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1173, 'Porsche', 'Cayman', 2008);
1174
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1174, 'Rolls-Royce', 'Phantom', 2008);
1175
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1175, 'Saab', '9-3', 2008);
1176
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1176, 'Saab', '9-5', 2008);
1177
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1177, 'Saab', '9-7X', 2008);
1178
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1178, 'Saturn', 'Astra', 2008);
1179
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1179, 'Saturn', 'Aura', 2008);
1180
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1180, 'Saturn', 'Outlook', 2008);
1181
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1181, 'Saturn', 'SKY', 2008);
1182
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1182, 'Saturn', 'VUE', 2008);
1183
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1183, 'Scion', 'tC', 2008);
1184
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1184, 'Scion', 'xB', 2008);
1185
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1185, 'Scion', 'xD', 2008);
1186
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1186, 'Smart', 'fortwo', 2008);
1187
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1187, 'Subaru', 'Forester', 2008);
1188
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1188, 'Subaru', 'Impreza', 2008);
1189
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1189, 'Subaru', 'Legacy', 2008);
1190
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1190, 'Subaru', 'Outback', 2008);
1191
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1191, 'Subaru', 'Tribeca', 2008);
1192
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1192, 'Suzuki', 'Forenza', 2008);
1193
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1193, 'Suzuki', 'Grand Vitara', 2008);
1194
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1194, 'Suzuki', 'Reno', 2008);
1195
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1195, 'Suzuki', 'SX4', 2008);
1196
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1196, 'Suzuki', 'XL7', 2008);
1197
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1197, 'Toyota', '4Runner', 2008);
1198
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1198, 'Toyota', 'Avalon', 2008);
1199
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1199, 'Toyota', 'Camry', 2008);
1200
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1200, 'Toyota', 'Corolla', 2008);
1201
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1201, 'Toyota', 'FJ Cruiser', 2008);
1202
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1202, 'Toyota', 'Highlander', 2008);
1203
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1203, 'Toyota', 'Land Cruiser', 2008);
1204
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1204, 'Toyota', 'Matrix', 2008);
1205
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1205, 'Toyota', 'Prius', 2008);
1206
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1206, 'Toyota', 'RAV4', 2008);
1207
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1207, 'Toyota', 'Sequoia', 2008);
1208
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1208, 'Toyota', 'Sienna', 2008);
1209
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1209, 'Toyota', 'Solara', 2008);
1210
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1210, 'Toyota', 'Tacoma Access Cab', 2008);
1211
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1211, 'Toyota', 'Tacoma Double Cab', 2008);
1212
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1212, 'Toyota', 'Tacoma Regular Cab', 2008);
1213
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1213, 'Toyota', 'Tundra CrewMax', 2008);
1214
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1214, 'Toyota', 'Tundra Double Cab', 2008);
1215
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1215, 'Toyota', 'Tundra Regular Cab', 2008);
1216
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1216, 'Toyota', 'Yaris', 2008);
1217
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1217, 'Volkswagen', 'Eos', 2008);
1218
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1218, 'Volkswagen', 'GLI', 2008);
1219
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1219, 'Volkswagen', 'GTI', 2008);
1220
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1220, 'Volkswagen', 'Jetta', 2008);
1221
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1221, 'Volkswagen', 'New Beetle', 2008);
1222
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1222, 'Volkswagen', 'Passat', 2008);
1223
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1223, 'Volkswagen', 'R32', 2008);
1224
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1224, 'Volkswagen', 'Rabbit', 2008);
1225
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1225, 'Volkswagen', 'Touareg 2', 2008);
1226
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1226, 'Volvo', 'C30', 2008);
1227
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1227, 'Volvo', 'C70', 2008);
1228
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1228, 'Volvo', 'S40', 2008);
1229
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1229, 'Volvo', 'S60', 2008);
1230
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1230, 'Volvo', 'S80', 2008);
1231
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1231, 'Volvo', 'V50', 2008);
1232
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1232, 'Volvo', 'V70', 2008);
1233
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1233, 'Volvo', 'XC70', 2008);
1234
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1234, 'Volvo', 'XC90', 2008);
1235
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1235, 'Acura', 'MDX', 2007);
1236
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1236, 'Acura', 'RDX', 2007);
1237
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1237, 'Acura', 'RL', 2007);
1238
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1238, 'Acura', 'TL', 2007);
1239
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1239, 'Acura', 'TSX', 2007);
1240
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1240, 'Aston Martin', 'DB9', 2007);
1241
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1241, 'Aston Martin', 'Vantage', 2007);
1242
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1242, 'Audi', 'A3', 2007);
1243
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1243, 'Audi', 'A4', 2007);
1244
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1244, 'Audi', 'A6', 2007);
1245
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1245, 'Audi', 'A8', 2007);
1246
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1246, 'Audi', 'Q7', 2007);
1247
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1247, 'Audi', 'RS 4', 2007);
1248
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1248, 'Audi', 'S4', 2007);
1249
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1249, 'Audi', 'S6', 2007);
1250
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1250, 'Audi', 'S8', 2007);
1251
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1251, 'Bentley', 'Arnage', 2007);
1252
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1252, 'Bentley', 'Azure', 2007);
1253
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1253, 'Bentley', 'Continental', 2007);
1254
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1254, 'BMW', '3 Series', 2007);
1255
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1255, 'BMW', '5 Series', 2007);
1256
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1256, 'BMW', '6 Series', 2007);
1257
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1257, 'BMW', '7 Series', 2007);
1258
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1258, 'BMW', 'Alpina B7', 2007);
1259
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1259, 'BMW', 'M5', 2007);
1260
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1260, 'BMW', 'M6', 2007);
1261
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1261, 'BMW', 'X3', 2007);
1262
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1262, 'BMW', 'X5', 2007);
1263
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1263, 'BMW', 'Z4', 2007);
1264
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1264, 'BMW', 'Z4 M', 2007);
1265
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1265, 'Buick', 'LaCrosse', 2007);
1266
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1266, 'Buick', 'Lucerne', 2007);
1267
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1267, 'Buick', 'Rainier', 2007);
1268
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1268, 'Buick', 'Rendezvous', 2007);
1269
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1269, 'Buick', 'Terraza', 2007);
1270
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1270, 'Cadillac', 'CTS', 2007);
1271
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1271, 'Cadillac', 'DTS', 2007);
1272
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1272, 'Cadillac', 'Escalade', 2007);
1273
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1273, 'Cadillac', 'Escalade ESV', 2007);
1274
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1274, 'Cadillac', 'Escalade EXT', 2007);
1275
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1275, 'Cadillac', 'SRX', 2007);
1276
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1276, 'Cadillac', 'STS', 2007);
1277
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1277, 'Cadillac', 'XLR', 2007);
1278
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1278, 'Chevrolet', 'Avalanche', 2007);
1279
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1279, 'Chevrolet', 'Aveo', 2007);
1280
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1280, 'Chevrolet', 'Cobalt', 2007);
1281
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1281, 'Chevrolet', 'Colorado Crew Cab', 2007);
1282
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1282, 'Chevrolet', 'Colorado Extended Cab', 2007);
1283
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1283, 'Chevrolet', 'Colorado Regular Cab', 2007);
1284
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1284, 'Chevrolet', 'Corvette', 2007);
1285
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1285, 'Chevrolet', 'Equinox', 2007);
1286
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1286, 'Chevrolet', 'Express 1500 Cargo', 2007);
1287
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1287, 'Chevrolet', 'Express 1500 Passenger', 2007);
1288
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1288, 'Chevrolet', 'Express 2500 Cargo', 2007);
1289
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1289, 'Chevrolet', 'Express 2500 Passenger', 2007);
1290
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1290, 'Chevrolet', 'Express 3500 Cargo', 2007);
1291
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1291, 'Chevrolet', 'Express 3500 Passenger', 2007);
1292
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1292, 'Chevrolet', 'HHR', 2007);
1293
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1293, 'Chevrolet', 'Impala', 2007);
1294
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1294, 'Chevrolet', 'Malibu', 2007);
1295
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1295, 'Chevrolet', 'Monte Carlo', 2007);
1296
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1296, 'Chevrolet', 'Silverado (Classic) 1500 Crew Cab', 2007);
1297
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1297, 'Chevrolet', 'Silverado (Classic) 1500 Extended Cab', 2007);
1298
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1298, 'Chevrolet', 'Silverado (Classic) 1500 HD Crew Cab', 2007);
1299
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1299, 'Chevrolet', 'Silverado (Classic) 1500 Regular Cab', 2007);
1300
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1300, 'Chevrolet', 'Silverado (Classic) 2500 HD Crew Cab', 2007);
1301
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1301, 'Chevrolet', 'Silverado (Classic) 2500 HD Extended Cab', 2007);
1302
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1302, 'Chevrolet', 'Silverado (Classic) 2500 HD Regular Cab', 2007);
1303
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1303, 'Chevrolet', 'Silverado (Classic) 3500 Crew Cab', 2007);
1304
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1304, 'Chevrolet', 'Silverado (Classic) 3500 Extended Cab', 2007);
1305
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1305, 'Chevrolet', 'Silverado (Classic) 3500 Regular Cab', 2007);
1306
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1306, 'Chevrolet', 'Silverado 1500 Crew Cab', 2007);
1307
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1307, 'Chevrolet', 'Silverado 1500 Extended Cab', 2007);
1308
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1308, 'Chevrolet', 'Silverado 1500 Regular Cab', 2007);
1309
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1309, 'Chevrolet', 'Silverado 2500 HD Crew Cab', 2007);
1310
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1310, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2007);
1311
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1311, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2007);
1312
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1312, 'Chevrolet', 'Silverado 3500 HD Crew Cab', 2007);
1313
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1313, 'Chevrolet', 'Silverado 3500 HD Extended Cab', 2007);
1314
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1314, 'Chevrolet', 'Silverado 3500 HD Regular Cab', 2007);
1315
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1315, 'Chevrolet', 'Suburban 1500', 2007);
1316
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1316, 'Chevrolet', 'Suburban 2500', 2007);
1317
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1317, 'Chevrolet', 'Tahoe', 2007);
1318
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1318, 'Chevrolet', 'TrailBlazer', 2007);
1319
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1319, 'Chevrolet', 'Uplander Cargo', 2007);
1320
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1320, 'Chevrolet', 'Uplander Passenger', 2007);
1321
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1321, 'Chrysler', '300', 2007);
1322
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1322, 'Chrysler', 'Aspen', 2007);
1323
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1323, 'Chrysler', 'Crossfire', 2007);
1324
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1324, 'Chrysler', 'Pacifica', 2007);
1325
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1325, 'Chrysler', 'PT Cruiser', 2007);
1326
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1326, 'Chrysler', 'Sebring', 2007);
1327
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1327, 'Chrysler', 'Town & Country', 2007);
1328
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1328, 'Dodge', 'Caliber', 2007);
1329
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1329, 'Dodge', 'Caravan Cargo', 2007);
1330
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1330, 'Dodge', 'Caravan Passenger', 2007);
1331
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1331, 'Dodge', 'Charger', 2007);
1332
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1332, 'Dodge', 'Dakota Club Cab', 2007);
1333
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1333, 'Dodge', 'Dakota Quad Cab', 2007);
1334
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1334, 'Dodge', 'Durango', 2007);
1335
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1335, 'Dodge', 'Grand Caravan Cargo', 2007);
1336
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1336, 'Dodge', 'Grand Caravan Passenger', 2007);
1337
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1337, 'Dodge', 'Magnum', 2007);
1338
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1338, 'Dodge', 'Nitro', 2007);
1339
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1339, 'Dodge', 'Ram 1500 Mega Cab', 2007);
1340
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1340, 'Dodge', 'Ram 1500 Quad Cab', 2007);
1341
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1341, 'Dodge', 'Ram 1500 Regular Cab', 2007);
1342
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1342, 'Dodge', 'Ram 2500 Mega Cab', 2007);
1343
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1343, 'Dodge', 'Ram 2500 Quad Cab', 2007);
1344
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1344, 'Dodge', 'Ram 2500 Regular Cab', 2007);
1345
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1345, 'Dodge', 'Ram 3500 Mega Cab', 2007);
1346
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1346, 'Dodge', 'Ram 3500 Quad Cab', 2007);
1347
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1347, 'Dodge', 'Ram 3500 Regular Cab', 2007);
1348
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1348, 'Ford', 'Crown Victoria', 2007);
1349
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1349, 'Ford', 'E150 Super Duty Cargo', 2007);
1350
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1350, 'Ford', 'E150 Super Duty Passenger', 2007);
1351
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1351, 'Ford', 'E250 Super Duty Cargo', 2007);
1352
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1352, 'Ford', 'E350 Super Duty Cargo', 2007);
1353
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1353, 'Ford', 'E350 Super Duty Passenger', 2007);
1354
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1354, 'Ford', 'Edge', 2007);
1355
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1355, 'Ford', 'Escape', 2007);
1356
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1356, 'Ford', 'Expedition', 2007);
1357
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1357, 'Ford', 'Expedition EL', 2007);
1358
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1358, 'Ford', 'Explorer', 2007);
1359
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1359, 'Ford', 'Explorer Sport Trac', 2007);
1360
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1360, 'Ford', 'F150 Regular Cab', 2007);
1361
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1361, 'Ford', 'F150 Super Cab', 2007);
1362
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1362, 'Ford', 'F150 SuperCrew Cab', 2007);
1363
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1363, 'Ford', 'F250 Super Duty Crew Cab', 2007);
1364
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1364, 'Ford', 'F250 Super Duty Regular Cab', 2007);
1365
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1365, 'Ford', 'F250 Super Duty Super Cab', 2007);
1366
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1366, 'Ford', 'F350 Super Duty Crew Cab', 2007);
1367
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1367, 'Ford', 'F350 Super Duty Regular Cab', 2007);
1368
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1368, 'Ford', 'F350 Super Duty Super Cab', 2007);
1369
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1369, 'Ford', 'Five Hundred', 2007);
1370
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1370, 'Ford', 'Focus', 2007);
1371
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1371, 'Ford', 'Freestar Cargo', 2007);
1372
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1372, 'Ford', 'Freestar Passenger', 2007);
1373
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1373, 'Ford', 'Freestyle', 2007);
1374
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1374, 'Ford', 'Fusion', 2007);
1375
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1375, 'Ford', 'Mustang', 2007);
1376
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1376, 'Ford', 'Ranger Regular Cab', 2007);
1377
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1377, 'Ford', 'Ranger Super Cab', 2007);
1378
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1378, 'Ford', 'Taurus', 2007);
1379
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1379, 'GMC', 'Acadia', 2007);
1380
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1380, 'GMC', 'Canyon Crew Cab', 2007);
1381
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1381, 'GMC', 'Canyon Extended Cab', 2007);
1382
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1382, 'GMC', 'Canyon Regular Cab', 2007);
1383
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1383, 'GMC', 'Envoy', 2007);
1384
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1384, 'GMC', 'Savana 1500 Cargo', 2007);
1385
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1385, 'GMC', 'Savana 1500 Passenger', 2007);
1386
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1386, 'GMC', 'Savana 2500 Cargo', 2007);
1387
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1387, 'GMC', 'Savana 2500 Passenger', 2007);
1388
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1388, 'GMC', 'Savana 3500 Cargo', 2007);
1389
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1389, 'GMC', 'Savana 3500 Passenger', 2007);
1390
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1390, 'GMC', 'Sierra (Classic) 1500 Crew Cab', 2007);
1391
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1391, 'GMC', 'Sierra (Classic) 1500 Extended Cab', 2007);
1392
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1392, 'GMC', 'Sierra (Classic) 1500 HD Crew Cab', 2007);
1393
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1393, 'GMC', 'Sierra (Classic) 1500 Regular Cab', 2007);
1394
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1394, 'GMC', 'Sierra (Classic) 2500 HD Crew Cab', 2007);
1395
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1395, 'GMC', 'Sierra (Classic) 2500 HD Extended Cab', 2007);
1396
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1396, 'GMC', 'Sierra (Classic) 2500 HD Regular Cab', 2007);
1397
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1397, 'GMC', 'Sierra (Classic) 3500 Crew Cab', 2007);
1398
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1398, 'GMC', 'Sierra (Classic) 3500 Extended Cab', 2007);
1399
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1399, 'GMC', 'Sierra (Classic) 3500 Regular Cab', 2007);
1400
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1400, 'GMC', 'Sierra 1500 Crew Cab', 2007);
1401
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1401, 'GMC', 'Sierra 1500 Extended Cab', 2007);
1402
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1402, 'GMC', 'Sierra 1500 Regular Cab', 2007);
1403
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1403, 'GMC', 'Sierra 2500 HD Crew Cab', 2007);
1404
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1404, 'GMC', 'Sierra 2500 HD Extended Cab', 2007);
1405
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1405, 'GMC', 'Sierra 2500 HD Regular Cab', 2007);
1406
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1406, 'GMC', 'Sierra 3500 HD Crew Cab', 2007);
1407
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1407, 'GMC', 'Sierra 3500 HD Extended Cab', 2007);
1408
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1408, 'GMC', 'Sierra 3500 HD Regular Cab', 2007);
1409
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1409, 'GMC', 'Yukon', 2007);
1410
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1410, 'GMC', 'Yukon XL 1500', 2007);
1411
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1411, 'GMC', 'Yukon XL 2500', 2007);
1412
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1412, 'Honda', 'Accord', 2007);
1413
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1413, 'Honda', 'Civic', 2007);
1414
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1414, 'Honda', 'CR-V', 2007);
1415
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1415, 'Honda', 'Element', 2007);
1416
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1416, 'Honda', 'Fit', 2007);
1417
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1417, 'Honda', 'Odyssey', 2007);
1418
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1418, 'Honda', 'Pilot', 2007);
1419
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1419, 'Honda', 'Ridgeline', 2007);
1420
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1420, 'Honda', 'S2000', 2007);
1421
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1421, 'HUMMER', 'H2', 2007);
1422
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1422, 'HUMMER', 'H3', 2007);
1423
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1423, 'Hyundai', 'Accent', 2007);
1424
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1424, 'Hyundai', 'Azera', 2007);
1425
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1425, 'Hyundai', 'Elantra', 2007);
1426
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1426, 'Hyundai', 'Entourage', 2007);
1427
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1427, 'Hyundai', 'Santa Fe', 2007);
1428
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1428, 'Hyundai', 'Sonata', 2007);
1429
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1429, 'Hyundai', 'Tiburon', 2007);
1430
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1430, 'Hyundai', 'Tucson', 2007);
1431
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1431, 'Hyundai', 'Veracruz', 2007);
1432
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1432, 'Infiniti', 'FX', 2007);
1433
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1433, 'Infiniti', 'G', 2007);
1434
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1434, 'Infiniti', 'M', 2007);
1435
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1435, 'Infiniti', 'QX', 2007);
1436
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1436, 'Isuzu', 'Ascender', 2007);
1437
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1437, 'Isuzu', 'i-290 Extended Cab', 2007);
1438
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1438, 'Isuzu', 'i-370 Crew Cab', 2007);
1439
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1439, 'Isuzu', 'i-370 Extended Cab', 2007);
1440
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1440, 'Jaguar', 'S-Type', 2007);
1441
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1441, 'Jaguar', 'XJ Series', 2007);
1442
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1442, 'Jaguar', 'XK Series', 2007);
1443
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1443, 'Jaguar', 'X-Type', 2007);
1444
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1444, 'Jeep', 'Commander', 2007);
1445
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1445, 'Jeep', 'Compass', 2007);
1446
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1446, 'Jeep', 'Grand Cherokee', 2007);
1447
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1447, 'Jeep', 'Liberty', 2007);
1448
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1448, 'Jeep', 'Patriot', 2007);
1449
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1449, 'Jeep', 'Wrangler', 2007);
1450
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1450, 'Kia', 'Amanti', 2007);
1451
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1451, 'Kia', 'Optima', 2007);
1452
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1452, 'Kia', 'Rio', 2007);
1453
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1453, 'Kia', 'Rondo', 2007);
1454
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1454, 'Kia', 'Sedona', 2007);
1455
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1455, 'Kia', 'Sorento', 2007);
1456
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1456, 'Kia', 'Spectra', 2007);
1457
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1457, 'Kia', 'Sportage', 2007);
1458
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1458, 'Land Rover', 'LR3', 2007);
1459
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1459, 'Land Rover', 'Range Rover', 2007);
1460
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1460, 'Land Rover', 'Range Rover Sport', 2007);
1461
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1461, 'Lexus', 'ES', 2007);
1462
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1462, 'Lexus', 'GS', 2007);
1463
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1463, 'Lexus', 'GX', 2007);
1464
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1464, 'Lexus', 'IS', 2007);
1465
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1465, 'Lexus', 'LS', 2007);
1466
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1466, 'Lexus', 'LX', 2007);
1467
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1467, 'Lexus', 'RX', 2007);
1468
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1468, 'Lexus', 'SC', 2007);
1469
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1469, 'Lincoln', 'Mark LT', 2007);
1470
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1470, 'Lincoln', 'MKX', 2007);
1471
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1471, 'Lincoln', 'MKZ', 2007);
1472
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1472, 'Lincoln', 'Navigator', 2007);
1473
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1473, 'Lincoln', 'Navigator L', 2007);
1474
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1474, 'Lincoln', 'Town Car', 2007);
1475
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1475, 'Lotus', 'Elise', 2007);
1476
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1476, 'Lotus', 'Exige S', 2007);
1477
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1477, 'Maybach', '57', 2007);
1478
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1478, 'Maybach', '62', 2007);
1479
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1479, 'Mazda', 'B-Series Extended Cab', 2007);
1480
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1480, 'Mazda', 'B-Series Regular Cab', 2007);
1481
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1481, 'Mazda', 'CX-7', 2007);
1482
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1482, 'Mazda', 'CX-9', 2007);
1483
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1483, 'Mazda', 'MAZDA3', 2007);
1484
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1484, 'Mazda', 'MAZDA5', 2007);
1485
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1485, 'Mazda', 'MAZDA6', 2007);
1486
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1486, 'Mazda', 'Miata MX-5', 2007);
1487
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1487, 'Mazda', 'RX-8', 2007);
1488
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1488, 'Mercedes-Benz', 'C-Class', 2007);
1489
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1489, 'Mercedes-Benz', 'CL-Class', 2007);
1490
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1490, 'Mercedes-Benz', 'CLK-Class', 2007);
1491
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1491, 'Mercedes-Benz', 'CLS-Class', 2007);
1492
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1492, 'Mercedes-Benz', 'E-Class', 2007);
1493
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1493, 'Mercedes-Benz', 'G-Class', 2007);
1494
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1494, 'Mercedes-Benz', 'GL-Class', 2007);
1495
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1495, 'Mercedes-Benz', 'M-Class', 2007);
1496
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1496, 'Mercedes-Benz', 'R-Class', 2007);
1497
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1497, 'Mercedes-Benz', 'S-Class', 2007);
1498
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1498, 'Mercedes-Benz', 'SL-Class', 2007);
1499
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1499, 'Mercedes-Benz', 'SLK-Class', 2007);
1500
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1500, 'Mercedes-Benz', 'SLR McLaren', 2007);
1501
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1501, 'Mercury', 'Grand Marquis', 2007);
1502
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1502, 'Mercury', 'Mariner', 2007);
1503
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1503, 'Mercury', 'Milan', 2007);
1504
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1504, 'Mercury', 'Montego', 2007);
1505
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1505, 'Mercury', 'Monterey', 2007);
1506
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1506, 'Mercury', 'Mountaineer', 2007);
1507
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1507, 'MINI', 'Cooper', 2007);
1508
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1508, 'Mitsubishi', 'Eclipse', 2007);
1509
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1509, 'Mitsubishi', 'Endeavor', 2007);
1510
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1510, 'Mitsubishi', 'Galant', 2007);
1511
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1511, 'Mitsubishi', 'Lancer', 2007);
1512
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1512, 'Mitsubishi', 'Outlander', 2007);
1513
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1513, 'Mitsubishi', 'Raider Double Cab', 2007);
1514
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1514, 'Mitsubishi', 'Raider Extended Cab', 2007);
1515
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1515, 'Nissan', '350Z', 2007);
1516
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1516, 'Nissan', 'Altima', 2007);
1517
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1517, 'Nissan', 'Armada', 2007);
1518
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1518, 'Nissan', 'Frontier Crew Cab', 2007);
1519
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1519, 'Nissan', 'Frontier King Cab', 2007);
1520
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1520, 'Nissan', 'Maxima', 2007);
1521
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1521, 'Nissan', 'Murano', 2007);
1522
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1522, 'Nissan', 'Pathfinder', 2007);
1523
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1523, 'Nissan', 'Quest', 2007);
1524
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1524, 'Nissan', 'Sentra', 2007);
1525
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1525, 'Nissan', 'Titan Crew Cab', 2007);
1526
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1526, 'Nissan', 'Titan King Cab', 2007);
1527
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1527, 'Nissan', 'Versa', 2007);
1528
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1528, 'Nissan', 'Xterra', 2007);
1529
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1529, 'Pontiac', 'G5', 2007);
1530
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1530, 'Pontiac', 'G6', 2007);
1531
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1531, 'Pontiac', 'Grand Prix', 2007);
1532
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1532, 'Pontiac', 'Solstice', 2007);
1533
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1533, 'Pontiac', 'Torrent', 2007);
1534
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1534, 'Pontiac', 'Vibe', 2007);
1535
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1535, 'Porsche', '911', 2007);
1536
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1536, 'Porsche', 'Boxster', 2007);
1537
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1537, 'Porsche', 'Cayman', 2007);
1538
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1538, 'Rolls-Royce', 'Phantom', 2007);
1539
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1539, 'Saab', '9-3', 2007);
1540
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1540, 'Saab', '9-5', 2007);
1541
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1541, 'Saab', '9-7X', 2007);
1542
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1542, 'Saturn', 'Aura', 2007);
1543
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1543, 'Saturn', 'Ion', 2007);
1544
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1544, 'Saturn', 'Outlook', 2007);
1545
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1545, 'Saturn', 'Relay', 2007);
1546
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1546, 'Saturn', 'SKY', 2007);
1547
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1547, 'Saturn', 'VUE', 2007);
1548
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1548, 'Scion', 'tC', 2007);
1549
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1549, 'Subaru', 'B9 Tribeca', 2007);
1550
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1550, 'Subaru', 'Forester', 2007);
1551
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1551, 'Subaru', 'Impreza', 2007);
1552
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1552, 'Subaru', 'Legacy', 2007);
1553
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1553, 'Subaru', 'Outback', 2007);
1554
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1554, 'Suzuki', 'Aerio', 2007);
1555
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1555, 'Suzuki', 'Forenza', 2007);
1556
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1556, 'Suzuki', 'Grand Vitara', 2007);
1557
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1557, 'Suzuki', 'Reno', 2007);
1558
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1558, 'Suzuki', 'SX4', 2007);
1559
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1559, 'Suzuki', 'XL7', 2007);
1560
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1560, 'Toyota', '4Runner', 2007);
1561
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1561, 'Toyota', 'Avalon', 2007);
1562
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1562, 'Toyota', 'Camry', 2007);
1563
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1563, 'Toyota', 'Corolla', 2007);
1564
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1564, 'Toyota', 'FJ Cruiser', 2007);
1565
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1565, 'Toyota', 'Highlander', 2007);
1566
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1566, 'Toyota', 'Land Cruiser', 2007);
1567
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1567, 'Toyota', 'Matrix', 2007);
1568
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1568, 'Toyota', 'Prius', 2007);
1569
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1569, 'Toyota', 'RAV4', 2007);
1570
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1570, 'Toyota', 'Sequoia', 2007);
1571
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1571, 'Toyota', 'Sienna', 2007);
1572
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1572, 'Toyota', 'Solara', 2007);
1573
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1573, 'Toyota', 'Tacoma Access Cab', 2007);
1574
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1574, 'Toyota', 'Tacoma Double Cab', 2007);
1575
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1575, 'Toyota', 'Tacoma Regular Cab', 2007);
1576
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1576, 'Toyota', 'Tundra CrewMax', 2007);
1577
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1577, 'Toyota', 'Tundra Double Cab', 2007);
1578
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1578, 'Toyota', 'Tundra Regular Cab', 2007);
1579
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1579, 'Toyota', 'Yaris', 2007);
1580
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1580, 'Volkswagen', 'Eos', 2007);
1581
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1581, 'Volkswagen', 'GTI', 2007);
1582
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1582, 'Volkswagen', 'Jetta', 2007);
1583
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1583, 'Volkswagen', 'New Beetle', 2007);
1584
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1584, 'Volkswagen', 'Passat', 2007);
1585
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1585, 'Volkswagen', 'Rabbit', 2007);
1586
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1586, 'Volkswagen', 'Touareg', 2007);
1587
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1587, 'Volvo', 'C70', 2007);
1588
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1588, 'Volvo', 'S40', 2007);
1589
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1589, 'Volvo', 'S60', 2007);
1590
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1590, 'Volvo', 'S80', 2007);
1591
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1591, 'Volvo', 'V50', 2007);
1592
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1592, 'Volvo', 'V70', 2007);
1593
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1593, 'Volvo', 'XC70', 2007);
1594
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1594, 'Volvo', 'XC90', 2007);
1595
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1595, 'Acura', 'MDX', 2006);
1596
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1596, 'Acura', 'RL', 2006);
1597
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1597, 'Acura', 'RSX', 2006);
1598
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1598, 'Acura', 'TL', 2006);
1599
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1599, 'Acura', 'TSX', 2006);
1600
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1600, 'Aston Martin', 'DB9', 2006);
1601
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1601, 'Aston Martin', 'Vanquish S', 2006);
1602
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1602, 'Aston Martin', 'Vantage', 2006);
1603
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1603, 'Audi', 'A3', 2006);
1604
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1604, 'Audi', 'A4', 2006);
1605
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1605, 'Audi', 'A6', 2006);
1606
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1606, 'Audi', 'A8', 2006);
1607
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1607, 'Audi', 'S4', 2006);
1608
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1608, 'Audi', 'TT', 2006);
1609
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1609, 'Bentley', 'Arnage', 2006);
1610
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1610, 'Bentley', 'Continental', 2006);
1611
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1611, 'BMW', '3 Series', 2006);
1612
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1612, 'BMW', '5 Series', 2006);
1613
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1613, 'BMW', '6 Series', 2006);
1614
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1614, 'BMW', '7 Series', 2006);
1615
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1615, 'BMW', 'M3', 2006);
1616
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1616, 'BMW', 'M5', 2006);
1617
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1617, 'BMW', 'M6', 2006);
1618
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1618, 'BMW', 'X3', 2006);
1619
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1619, 'BMW', 'X5', 2006);
1620
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1620, 'BMW', 'Z4', 2006);
1621
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1621, 'BMW', 'Z4 M', 2006);
1622
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1622, 'Buick', 'LaCrosse', 2006);
1623
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1623, 'Buick', 'Lucerne', 2006);
1624
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1624, 'Buick', 'Rainier', 2006);
1625
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1625, 'Buick', 'Rendezvous', 2006);
1626
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1626, 'Buick', 'Terraza', 2006);
1627
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1627, 'Cadillac', 'CTS', 2006);
1628
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1628, 'Cadillac', 'DTS', 2006);
1629
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1629, 'Cadillac', 'Escalade', 2006);
1630
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1630, 'Cadillac', 'Escalade ESV', 2006);
1631
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1631, 'Cadillac', 'Escalade EXT', 2006);
1632
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1632, 'Cadillac', 'SRX', 2006);
1633
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1633, 'Cadillac', 'STS', 2006);
1634
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1634, 'Cadillac', 'XLR', 2006);
1635
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1635, 'Chevrolet', 'Avalanche 1500', 2006);
1636
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1636, 'Chevrolet', 'Avalanche 2500', 2006);
1637
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1637, 'Chevrolet', 'Aveo', 2006);
1638
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1638, 'Chevrolet', 'Cobalt', 2006);
1639
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1639, 'Chevrolet', 'Colorado Crew Cab', 2006);
1640
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1640, 'Chevrolet', 'Colorado Extended Cab', 2006);
1641
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1641, 'Chevrolet', 'Colorado Regular Cab', 2006);
1642
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1642, 'Chevrolet', 'Corvette', 2006);
1643
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1643, 'Chevrolet', 'Equinox', 2006);
1644
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1644, 'Chevrolet', 'Express 1500 Cargo', 2006);
1645
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1645, 'Chevrolet', 'Express 1500 Passenger', 2006);
1646
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1646, 'Chevrolet', 'Express 2500 Cargo', 2006);
1647
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1647, 'Chevrolet', 'Express 2500 Passenger', 2006);
1648
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1648, 'Chevrolet', 'Express 3500 Cargo', 2006);
1649
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1649, 'Chevrolet', 'Express 3500 Passenger', 2006);
1650
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1650, 'Chevrolet', 'HHR', 2006);
1651
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1651, 'Chevrolet', 'Impala', 2006);
1652
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1652, 'Chevrolet', 'Malibu', 2006);
1653
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1653, 'Chevrolet', 'Monte Carlo', 2006);
1654
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1654, 'Chevrolet', 'Silverado 1500 Crew Cab', 2006);
1655
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1655, 'Chevrolet', 'Silverado 1500 Extended Cab', 2006);
1656
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1656, 'Chevrolet', 'Silverado 1500 HD Crew Cab', 2006);
1657
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1657, 'Chevrolet', 'Silverado 1500 Regular Cab', 2006);
1658
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1658, 'Chevrolet', 'Silverado 2500 HD Crew Cab', 2006);
1659
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1659, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2006);
1660
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1660, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2006);
1661
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1661, 'Chevrolet', 'Silverado 3500 Crew Cab', 2006);
1662
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1662, 'Chevrolet', 'Silverado 3500 Extended Cab', 2006);
1663
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1663, 'Chevrolet', 'Silverado 3500 Regular Cab', 2006);
1664
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1664, 'Chevrolet', 'SSR', 2006);
1665
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1665, 'Chevrolet', 'Suburban 1500', 2006);
1666
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1666, 'Chevrolet', 'Suburban 2500', 2006);
1667
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1667, 'Chevrolet', 'Tahoe', 2006);
1668
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1668, 'Chevrolet', 'TrailBlazer', 2006);
1669
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1669, 'Chevrolet', 'Uplander Cargo', 2006);
1670
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1670, 'Chevrolet', 'Uplander Passenger', 2006);
1671
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1671, 'Chrysler', '300', 2006);
1672
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1672, 'Chrysler', 'Crossfire', 2006);
1673
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1673, 'Chrysler', 'Pacifica', 2006);
1674
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1674, 'Chrysler', 'PT Cruiser', 2006);
1675
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1675, 'Chrysler', 'Sebring', 2006);
1676
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1676, 'Chrysler', 'Town & Country', 2006);
1677
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1677, 'Dodge', 'Caravan Cargo', 2006);
1678
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1678, 'Dodge', 'Caravan Passenger', 2006);
1679
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1679, 'Dodge', 'Charger', 2006);
1680
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1680, 'Dodge', 'Dakota Club Cab', 2006);
1681
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1681, 'Dodge', 'Dakota Quad Cab', 2006);
1682
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1682, 'Dodge', 'Durango', 2006);
1683
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1683, 'Dodge', 'Grand Caravan Cargo', 2006);
1684
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1684, 'Dodge', 'Grand Caravan Passenger', 2006);
1685
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1685, 'Dodge', 'Magnum', 2006);
1686
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1686, 'Dodge', 'Ram 1500 Mega Cab', 2006);
1687
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1687, 'Dodge', 'Ram 1500 Quad Cab', 2006);
1688
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1688, 'Dodge', 'Ram 1500 Regular Cab', 2006);
1689
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1689, 'Dodge', 'Ram 2500 Mega Cab', 2006);
1690
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1690, 'Dodge', 'Ram 2500 Quad Cab', 2006);
1691
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1691, 'Dodge', 'Ram 2500 Regular Cab', 2006);
1692
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1692, 'Dodge', 'Ram 3500 Mega Cab', 2006);
1693
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1693, 'Dodge', 'Ram 3500 Quad Cab', 2006);
1694
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1694, 'Dodge', 'Ram 3500 Regular Cab', 2006);
1695
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1695, 'Dodge', 'Stratus', 2006);
1696
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1696, 'Dodge', 'Viper', 2006);
1697
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1697, 'Ford', 'Crown Victoria', 2006);
1698
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1698, 'Ford', 'E150 Super Duty Cargo', 2006);
1699
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1699, 'Ford', 'E150 Super Duty Passenger', 2006);
1700
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1700, 'Ford', 'E250 Super Duty Cargo', 2006);
1701
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1701, 'Ford', 'E350 Super Duty Cargo', 2006);
1702
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1702, 'Ford', 'E350 Super Duty Passenger', 2006);
1703
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1703, 'Ford', 'Escape', 2006);
1704
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1704, 'Ford', 'Expedition', 2006);
1705
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1705, 'Ford', 'Explorer', 2006);
1706
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1706, 'Ford', 'F150 Regular Cab', 2006);
1707
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1707, 'Ford', 'F150 Super Cab', 2006);
1708
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1708, 'Ford', 'F150 SuperCrew Cab', 2006);
1709
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1709, 'Ford', 'F250 Super Duty Crew Cab', 2006);
1710
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1710, 'Ford', 'F250 Super Duty Regular Cab', 2006);
1711
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1711, 'Ford', 'F250 Super Duty Super Cab', 2006);
1712
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1712, 'Ford', 'F350 Super Duty Crew Cab', 2006);
1713
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1713, 'Ford', 'F350 Super Duty Regular Cab', 2006);
1714
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1714, 'Ford', 'F350 Super Duty Super Cab', 2006);
1715
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1715, 'Ford', 'Five Hundred', 2006);
1716
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1716, 'Ford', 'Focus', 2006);
1717
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1717, 'Ford', 'Freestar Cargo', 2006);
1718
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1718, 'Ford', 'Freestar Passenger', 2006);
1719
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1719, 'Ford', 'Freestyle', 2006);
1720
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1720, 'Ford', 'Fusion', 2006);
1721
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1721, 'Ford', 'GT', 2006);
1722
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1722, 'Ford', 'Mustang', 2006);
1723
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1723, 'Ford', 'Ranger Regular Cab', 2006);
1724
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1724, 'Ford', 'Ranger Super Cab', 2006);
1725
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1725, 'Ford', 'Taurus', 2006);
1726
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1726, 'GMC', 'Canyon Crew Cab', 2006);
1727
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1727, 'GMC', 'Canyon Extended Cab', 2006);
1728
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1728, 'GMC', 'Canyon Regular Cab', 2006);
1729
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1729, 'GMC', 'Envoy', 2006);
1730
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1730, 'GMC', 'Envoy XL', 2006);
1731
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1731, 'GMC', 'Savana 1500 Cargo', 2006);
1732
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1732, 'GMC', 'Savana 1500 Passenger', 2006);
1733
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1733, 'GMC', 'Savana 2500 Cargo', 2006);
1734
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1734, 'GMC', 'Savana 2500 Passenger', 2006);
1735
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1735, 'GMC', 'Savana 3500 Cargo', 2006);
1736
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1736, 'GMC', 'Savana 3500 Passenger', 2006);
1737
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1737, 'GMC', 'Sierra 1500 Crew Cab', 2006);
1738
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1738, 'GMC', 'Sierra 1500 Extended Cab', 2006);
1739
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1739, 'GMC', 'Sierra 1500 HD Crew Cab', 2006);
1740
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1740, 'GMC', 'Sierra 1500 Regular Cab', 2006);
1741
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1741, 'GMC', 'Sierra 2500 HD Crew Cab', 2006);
1742
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1742, 'GMC', 'Sierra 2500 HD Extended Cab', 2006);
1743
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1743, 'GMC', 'Sierra 2500 HD Regular Cab', 2006);
1744
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1744, 'GMC', 'Sierra 3500 Crew Cab', 2006);
1745
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1745, 'GMC', 'Sierra 3500 Extended Cab', 2006);
1746
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1746, 'GMC', 'Sierra 3500 Regular Cab', 2006);
1747
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1747, 'GMC', 'Yukon', 2006);
1748
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1748, 'GMC', 'Yukon XL 1500', 2006);
1749
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1749, 'GMC', 'Yukon XL 2500', 2006);
1750
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1750, 'Honda', 'Accord', 2006);
1751
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1751, 'Honda', 'Civic', 2006);
1752
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1752, 'Honda', 'CR-V', 2006);
1753
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1753, 'Honda', 'Element', 2006);
1754
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1754, 'Honda', 'Insight', 2006);
1755
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1755, 'Honda', 'Odyssey', 2006);
1756
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1756, 'Honda', 'Pilot', 2006);
1757
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1757, 'Honda', 'Ridgeline', 2006);
1758
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1758, 'Honda', 'S2000', 2006);
1759
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1759, 'HUMMER', 'H1', 2006);
1760
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1760, 'HUMMER', 'H2', 2006);
1761
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1761, 'HUMMER', 'H3', 2006);
1762
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1762, 'Hyundai', 'Accent', 2006);
1763
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1763, 'Hyundai', 'Azera', 2006);
1764
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1764, 'Hyundai', 'Elantra', 2006);
1765
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1765, 'Hyundai', 'Santa Fe', 2006);
1766
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1766, 'Hyundai', 'Sonata', 2006);
1767
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1767, 'Hyundai', 'Tiburon', 2006);
1768
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1768, 'Hyundai', 'Tucson', 2006);
1769
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1769, 'Infiniti', 'FX', 2006);
1770
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1770, 'Infiniti', 'G', 2006);
1771
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1771, 'Infiniti', 'M', 2006);
1772
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1772, 'Infiniti', 'Q', 2006);
1773
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1773, 'Infiniti', 'QX', 2006);
1774
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1774, 'Isuzu', 'Ascender', 2006);
1775
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1775, 'Isuzu', 'i-280 Extended Cab', 2006);
1776
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1776, 'Isuzu', 'i-350 Crew Cab', 2006);
1777
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1777, 'Jaguar', 'S-Type', 2006);
1778
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1778, 'Jaguar', 'XJ Series', 2006);
1779
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1779, 'Jaguar', 'XK Series', 2006);
1780
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1780, 'Jaguar', 'X-Type', 2006);
1781
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1781, 'Jeep', 'Commander', 2006);
1782
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1782, 'Jeep', 'Grand Cherokee', 2006);
1783
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1783, 'Jeep', 'Liberty', 2006);
1784
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1784, 'Jeep', 'Wrangler', 2006);
1785
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1785, 'Kia', 'Amanti', 2006);
1786
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1786, 'Kia', 'Optima', 2006);
1787
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1787, 'Kia', 'Optima (2006.5)', 2006);
1788
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1788, 'Kia', 'Rio', 2006);
1789
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1789, 'Kia', 'Sedona', 2006);
1790
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1790, 'Kia', 'Sorento', 2006);
1791
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1791, 'Kia', 'Spectra', 2006);
1792
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1792, 'Kia', 'Sportage', 2006);
1793
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1793, 'Land Rover', 'LR3', 2006);
1794
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1794, 'Land Rover', 'Range Rover', 2006);
1795
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1795, 'Land Rover', 'Range Rover Sport', 2006);
1796
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1796, 'Lexus', 'ES', 2006);
1797
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1797, 'Lexus', 'GS', 2006);
1798
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1798, 'Lexus', 'GX', 2006);
1799
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1799, 'Lexus', 'IS', 2006);
1800
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1800, 'Lexus', 'LS', 2006);
1801
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1801, 'Lexus', 'LX', 2006);
1802
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1802, 'Lexus', 'RX', 2006);
1803
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1803, 'Lexus', 'SC', 2006);
1804
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1804, 'Lincoln', 'LS', 2006);
1805
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1805, 'Lincoln', 'Mark LT', 2006);
1806
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1806, 'Lincoln', 'Navigator', 2006);
1807
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1807, 'Lincoln', 'Town Car', 2006);
1808
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1808, 'Lincoln', 'Zephyr', 2006);
1809
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1809, 'Lotus', 'Elise', 2006);
1810
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1810, 'Lotus', 'Exige', 2006);
1811
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1811, 'Maybach', '57', 2006);
1812
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1812, 'Maybach', '62', 2006);
1813
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1813, 'Mazda', 'B-Series Extended Cab', 2006);
1814
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1814, 'Mazda', 'B-Series Regular Cab', 2006);
1815
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1815, 'Mazda', 'MAZDA3', 2006);
1816
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1816, 'Mazda', 'MAZDA5', 2006);
1817
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1817, 'Mazda', 'MAZDA6', 2006);
1818
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1818, 'Mazda', 'Miata MX-5', 2006);
1819
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1819, 'Mazda', 'MPV', 2006);
1820
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1820, 'Mazda', 'RX-8', 2006);
1821
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1821, 'Mazda', 'Tribute', 2006);
1822
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1822, 'Mercedes-Benz', 'C-Class', 2006);
1823
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1823, 'Mercedes-Benz', 'CL-Class', 2006);
1824
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1824, 'Mercedes-Benz', 'CLK-Class', 2006);
1825
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1825, 'Mercedes-Benz', 'CLS-Class', 2006);
1826
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1826, 'Mercedes-Benz', 'E-Class', 2006);
1827
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1827, 'Mercedes-Benz', 'G-Class', 2006);
1828
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1828, 'Mercedes-Benz', 'M-Class', 2006);
1829
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1829, 'Mercedes-Benz', 'R-Class', 2006);
1830
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1830, 'Mercedes-Benz', 'S-Class', 2006);
1831
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1831, 'Mercedes-Benz', 'SL-Class', 2006);
1832
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1832, 'Mercedes-Benz', 'SLK-Class', 2006);
1833
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1833, 'Mercedes-Benz', 'SLR McLaren', 2006);
1834
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1834, 'Mercury', 'Grand Marquis', 2006);
1835
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1835, 'Mercury', 'Mariner', 2006);
1836
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1836, 'Mercury', 'Milan', 2006);
1837
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1837, 'Mercury', 'Montego', 2006);
1838
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1838, 'Mercury', 'Monterey', 2006);
1839
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1839, 'Mercury', 'Mountaineer', 2006);
1840
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1840, 'MINI', 'Cooper', 2006);
1841
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1841, 'Mitsubishi', 'Eclipse', 2006);
1842
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1842, 'Mitsubishi', 'Endeavor', 2006);
1843
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1843, 'Mitsubishi', 'Galant', 2006);
1844
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1844, 'Mitsubishi', 'Lancer', 2006);
1845
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1845, 'Mitsubishi', 'Montero', 2006);
1846
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1846, 'Mitsubishi', 'Outlander', 2006);
1847
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1847, 'Mitsubishi', 'Raider Double Cab', 2006);
1848
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1848, 'Mitsubishi', 'Raider Extended Cab', 2006);
1849
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1849, 'Nissan', '350Z', 2006);
1850
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1850, 'Nissan', 'Altima', 2006);
1851
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1851, 'Nissan', 'Armada', 2006);
1852
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1852, 'Nissan', 'Frontier Crew Cab', 2006);
1853
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1853, 'Nissan', 'Frontier King Cab', 2006);
1854
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1854, 'Nissan', 'Maxima', 2006);
1855
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1855, 'Nissan', 'Murano', 2006);
1856
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1856, 'Nissan', 'Pathfinder', 2006);
1857
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1857, 'Nissan', 'Quest', 2006);
1858
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1858, 'Nissan', 'Sentra', 2006);
1859
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1859, 'Nissan', 'Titan Crew Cab', 2006);
1860
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1860, 'Nissan', 'Titan King Cab', 2006);
1861
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1861, 'Nissan', 'Xterra', 2006);
1862
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1862, 'Panoz', 'Esperante', 2006);
1863
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1863, 'Pontiac', 'G6', 2006);
1864
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1864, 'Pontiac', 'Grand Prix', 2006);
1865
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1865, 'Pontiac', 'GTO', 2006);
1866
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1866, 'Pontiac', 'Montana SV6', 2006);
1867
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1867, 'Pontiac', 'Solstice', 2006);
1868
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1868, 'Pontiac', 'Torrent', 2006);
1869
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1869, 'Pontiac', 'Vibe', 2006);
1870
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1870, 'Porsche', '911', 2006);
1871
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1871, 'Porsche', 'Boxster', 2006);
1872
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1872, 'Porsche', 'Cayenne', 2006);
1873
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1873, 'Porsche', 'Cayman', 2006);
1874
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1874, 'Rolls-Royce', 'Phantom', 2006);
1875
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1875, 'Saab', '9-2X', 2006);
1876
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1876, 'Saab', '9-3', 2006);
1877
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1877, 'Saab', '9-5', 2006);
1878
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1878, 'Saab', '9-7X', 2006);
1879
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1879, 'Saturn', 'Ion', 2006);
1880
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1880, 'Saturn', 'Relay', 2006);
1881
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1881, 'Saturn', 'VUE', 2006);
1882
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1882, 'Scion', 'tC', 2006);
1883
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1883, 'Scion', 'xA', 2006);
1884
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1884, 'Scion', 'xB', 2006);
1885
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1885, 'Subaru', 'B9 Tribeca', 2006);
1886
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1886, 'Subaru', 'Baja', 2006);
1887
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1887, 'Subaru', 'Forester', 2006);
1888
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1888, 'Subaru', 'Impreza', 2006);
1889
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1889, 'Subaru', 'Legacy', 2006);
1890
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1890, 'Subaru', 'Outback', 2006);
1891
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1891, 'Suzuki', 'Aerio', 2006);
1892
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1892, 'Suzuki', 'Forenza', 2006);
1893
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1893, 'Suzuki', 'Grand Vitara', 2006);
1894
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1894, 'Suzuki', 'Reno', 2006);
1895
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1895, 'Suzuki', 'Verona', 2006);
1896
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1896, 'Suzuki', 'XL-7', 2006);
1897
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1897, 'Toyota', '4Runner', 2006);
1898
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1898, 'Toyota', 'Avalon', 2006);
1899
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1899, 'Toyota', 'Camry', 2006);
1900
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1900, 'Toyota', 'Corolla', 2006);
1901
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1901, 'Toyota', 'Highlander', 2006);
1902
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1902, 'Toyota', 'Land Cruiser', 2006);
1903
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1903, 'Toyota', 'Matrix', 2006);
1904
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1904, 'Toyota', 'Prius', 2006);
1905
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1905, 'Toyota', 'RAV4', 2006);
1906
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1906, 'Toyota', 'Sequoia', 2006);
1907
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1907, 'Toyota', 'Sienna', 2006);
1908
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1908, 'Toyota', 'Solara', 2006);
1909
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1909, 'Toyota', 'Tacoma Access Cab', 2006);
1910
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1910, 'Toyota', 'Tacoma Double Cab', 2006);
1911
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1911, 'Toyota', 'Tacoma Regular Cab', 2006);
1912
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1912, 'Toyota', 'Tundra Access Cab', 2006);
1913
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1913, 'Toyota', 'Tundra Double Cab', 2006);
1914
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1914, 'Toyota', 'Tundra Regular Cab', 2006);
1915
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1915, 'Volkswagen', 'Golf', 2006);
1916
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1916, 'Volkswagen', 'GTI', 2006);
1917
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1917, 'Volkswagen', 'Jetta', 2006);
1918
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1918, 'Volkswagen', 'New Beetle', 2006);
1919
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1919, 'Volkswagen', 'Passat', 2006);
1920
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1920, 'Volkswagen', 'Phaeton', 2006);
1921
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1921, 'Volkswagen', 'Rabbit', 2006);
1922
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1922, 'Volkswagen', 'Touareg', 2006);
1923
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1923, 'Volvo', 'C70', 2006);
1924
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1924, 'Volvo', 'S40', 2006);
1925
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1925, 'Volvo', 'S60', 2006);
1926
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1926, 'Volvo', 'S80', 2006);
1927
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1927, 'Volvo', 'V50', 2006);
1928
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1928, 'Volvo', 'V70', 2006);
1929
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1929, 'Volvo', 'XC70', 2006);
1930
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1930, 'Volvo', 'XC90', 2006);
1931
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1931, 'Acura', 'MDX', 2005);
1932
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1932, 'Acura', 'NSX', 2005);
1933
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1933, 'Acura', 'RL', 2005);
1934
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1934, 'Acura', 'RSX', 2005);
1935
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1935, 'Acura', 'TL', 2005);
1936
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1936, 'Acura', 'TSX', 2005);
1937
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1937, 'Aston Martin', 'DB9', 2005);
1938
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1938, 'Aston Martin', 'Vanquish S', 2005);
1939
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1939, 'Audi', 'A4', 2005);
1940
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1940, 'Audi', 'A4 (2005.5)', 2005);
1941
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1941, 'Audi', 'A6', 2005);
1942
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1942, 'Audi', 'A8', 2005);
1943
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1943, 'Audi', 'allroad', 2005);
1944
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1944, 'Audi', 'S4', 2005);
1945
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1945, 'Audi', 'S4 (2005.5)', 2005);
1946
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1946, 'Audi', 'TT', 2005);
1947
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1947, 'Bentley', 'Arnage', 2005);
1948
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1948, 'Bentley', 'Continental', 2005);
1949
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1949, 'BMW', '3 Series', 2005);
1950
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1950, 'BMW', '5 Series', 2005);
1951
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1951, 'BMW', '6 Series', 2005);
1952
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1952, 'BMW', '7 Series', 2005);
1953
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1953, 'BMW', 'M3', 2005);
1954
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1954, 'BMW', 'X3', 2005);
1955
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1955, 'BMW', 'X5', 2005);
1956
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1956, 'BMW', 'Z4', 2005);
1957
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1957, 'Buick', 'Century', 2005);
1958
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1958, 'Buick', 'LaCrosse', 2005);
1959
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1959, 'Buick', 'LeSabre', 2005);
1960
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1960, 'Buick', 'Park Avenue', 2005);
1961
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1961, 'Buick', 'Rainier', 2005);
1962
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1962, 'Buick', 'Rendezvous', 2005);
1963
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1963, 'Buick', 'Terraza', 2005);
1964
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1964, 'Cadillac', 'CTS', 2005);
1965
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1965, 'Cadillac', 'DeVille', 2005);
1966
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1966, 'Cadillac', 'Escalade', 2005);
1967
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1967, 'Cadillac', 'Escalade ESV', 2005);
1968
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1968, 'Cadillac', 'Escalade EXT', 2005);
1969
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1969, 'Cadillac', 'SRX', 2005);
1970
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1970, 'Cadillac', 'STS', 2005);
1971
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1971, 'Cadillac', 'XLR', 2005);
1972
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1972, 'Chevrolet', 'Astro Cargo', 2005);
1973
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1973, 'Chevrolet', 'Astro Passenger', 2005);
1974
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1974, 'Chevrolet', 'Avalanche 1500', 2005);
1975
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1975, 'Chevrolet', 'Avalanche 2500', 2005);
1976
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1976, 'Chevrolet', 'Aveo', 2005);
1977
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1977, 'Chevrolet', 'Blazer', 2005);
1978
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1978, 'Chevrolet', 'Cavalier', 2005);
1979
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1979, 'Chevrolet', 'Classic', 2005);
1980
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1980, 'Chevrolet', 'Cobalt', 2005);
1981
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1981, 'Chevrolet', 'Colorado Crew Cab', 2005);
1982
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1982, 'Chevrolet', 'Colorado Extended Cab', 2005);
1983
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1983, 'Chevrolet', 'Colorado Regular Cab', 2005);
1984
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1984, 'Chevrolet', 'Corvette', 2005);
1985
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1985, 'Chevrolet', 'Equinox', 2005);
1986
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1986, 'Chevrolet', 'Express 1500 Cargo', 2005);
1987
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1987, 'Chevrolet', 'Express 1500 Passenger', 2005);
1988
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1988, 'Chevrolet', 'Express 2500 Cargo', 2005);
1989
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1989, 'Chevrolet', 'Express 2500 Passenger', 2005);
1990
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1990, 'Chevrolet', 'Express 3500 Cargo', 2005);
1991
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1991, 'Chevrolet', 'Express 3500 Passenger', 2005);
1992
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1992, 'Chevrolet', 'Impala', 2005);
1993
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1993, 'Chevrolet', 'Malibu', 2005);
1994
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1994, 'Chevrolet', 'Monte Carlo', 2005);
1995
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1995, 'Chevrolet', 'Silverado 1500 Crew Cab', 2005);
1996
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1996, 'Chevrolet', 'Silverado 1500 Extended Cab', 2005);
1997
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1997, 'Chevrolet', 'Silverado 1500 HD Crew Cab', 2005);
1998
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1998, 'Chevrolet', 'Silverado 1500 Regular Cab', 2005);
1999
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (1999, 'Chevrolet', 'Silverado 2500 HD Crew Cab', 2005);
2000
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2000, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2005);
2001
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2001, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2005);
2002
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2002, 'Chevrolet', 'Silverado 3500 Crew Cab', 2005);
2003
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2003, 'Chevrolet', 'Silverado 3500 Extended Cab', 2005);
2004
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2004, 'Chevrolet', 'Silverado 3500 Regular Cab', 2005);
2005
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2005, 'Chevrolet', 'SSR', 2005);
2006
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2006, 'Chevrolet', 'Suburban 1500', 2005);
2007
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2007, 'Chevrolet', 'Suburban 2500', 2005);
2008
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2008, 'Chevrolet', 'Tahoe', 2005);
2009
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2009, 'Chevrolet', 'TrailBlazer', 2005);
2010
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2010, 'Chevrolet', 'Uplander Cargo', 2005);
2011
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2011, 'Chevrolet', 'Uplander Passenger', 2005);
2012
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2012, 'Chevrolet', 'Venture Cargo', 2005);
2013
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2013, 'Chevrolet', 'Venture Passenger', 2005);
2014
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2014, 'Chrysler', '300', 2005);
2015
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2015, 'Chrysler', 'Crossfire', 2005);
2016
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2016, 'Chrysler', 'Pacifica', 2005);
2017
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2017, 'Chrysler', 'PT Cruiser', 2005);
2018
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2018, 'Chrysler', 'Sebring', 2005);
2019
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2019, 'Chrysler', 'Town & Country', 2005);
2020
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2020, 'Dodge', 'Caravan Cargo', 2005);
2021
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2021, 'Dodge', 'Caravan Passenger', 2005);
2022
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2022, 'Dodge', 'Dakota Club Cab', 2005);
2023
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2023, 'Dodge', 'Dakota Quad Cab', 2005);
2024
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2024, 'Dodge', 'Durango', 2005);
2025
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2025, 'Dodge', 'Grand Caravan Cargo', 2005);
2026
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2026, 'Dodge', 'Grand Caravan Passenger', 2005);
2027
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2027, 'Dodge', 'Magnum', 2005);
2028
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2028, 'Dodge', 'Neon', 2005);
2029
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2029, 'Dodge', 'Ram 1500 Quad Cab', 2005);
2030
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2030, 'Dodge', 'Ram 1500 Regular Cab', 2005);
2031
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2031, 'Dodge', 'Ram 2500 Quad Cab', 2005);
2032
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2032, 'Dodge', 'Ram 2500 Regular Cab', 2005);
2033
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2033, 'Dodge', 'Ram 3500 Quad Cab', 2005);
2034
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2034, 'Dodge', 'Ram 3500 Regular Cab', 2005);
2035
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2035, 'Dodge', 'Stratus', 2005);
2036
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2036, 'Dodge', 'Viper', 2005);
2037
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2037, 'Ford', 'Crown Victoria', 2005);
2038
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2038, 'Ford', 'E150 Super Duty Cargo', 2005);
2039
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2039, 'Ford', 'E150 Super Duty Passenger', 2005);
2040
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2040, 'Ford', 'E250 Super Duty Cargo', 2005);
2041
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2041, 'Ford', 'E350 Super Duty Cargo', 2005);
2042
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2042, 'Ford', 'E350 Super Duty Passenger', 2005);
2043
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2043, 'Ford', 'Escape', 2005);
2044
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2044, 'Ford', 'Excursion', 2005);
2045
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2045, 'Ford', 'Expedition', 2005);
2046
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2046, 'Ford', 'Explorer', 2005);
2047
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2047, 'Ford', 'Explorer Sport Trac', 2005);
2048
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2048, 'Ford', 'F150 Regular Cab', 2005);
2049
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2049, 'Ford', 'F150 Super Cab', 2005);
2050
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2050, 'Ford', 'F150 SuperCrew Cab', 2005);
2051
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2051, 'Ford', 'F250 Super Duty Crew Cab', 2005);
2052
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2052, 'Ford', 'F250 Super Duty Regular Cab', 2005);
2053
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2053, 'Ford', 'F250 Super Duty Super Cab', 2005);
2054
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2054, 'Ford', 'F350 Super Duty Crew Cab', 2005);
2055
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2055, 'Ford', 'F350 Super Duty Regular Cab', 2005);
2056
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2056, 'Ford', 'F350 Super Duty Super Cab', 2005);
2057
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2057, 'Ford', 'Five Hundred', 2005);
2058
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2058, 'Ford', 'Focus', 2005);
2059
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2059, 'Ford', 'Freestar Cargo', 2005);
2060
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2060, 'Ford', 'Freestar Passenger', 2005);
2061
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2061, 'Ford', 'Freestyle', 2005);
2062
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2062, 'Ford', 'GT', 2005);
2063
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2063, 'Ford', 'Mustang', 2005);
2064
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2064, 'Ford', 'Ranger Regular Cab', 2005);
2065
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2065, 'Ford', 'Ranger Super Cab', 2005);
2066
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2066, 'Ford', 'Taurus', 2005);
2067
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2067, 'Ford', 'Thunderbird', 2005);
2068
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2068, 'GMC', 'Canyon Crew Cab', 2005);
2069
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2069, 'GMC', 'Canyon Extended Cab', 2005);
2070
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2070, 'GMC', 'Canyon Regular Cab', 2005);
2071
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2071, 'GMC', 'Envoy', 2005);
2072
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2072, 'GMC', 'Envoy XL', 2005);
2073
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2073, 'GMC', 'Envoy XUV', 2005);
2074
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2074, 'GMC', 'Safari Cargo', 2005);
2075
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2075, 'GMC', 'Safari Passenger', 2005);
2076
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2076, 'GMC', 'Savana 1500 Cargo', 2005);
2077
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2077, 'GMC', 'Savana 1500 Passenger', 2005);
2078
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2078, 'GMC', 'Savana 2500 Cargo', 2005);
2079
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2079, 'GMC', 'Savana 2500 Passenger', 2005);
2080
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2080, 'GMC', 'Savana 3500 Cargo', 2005);
2081
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2081, 'GMC', 'Savana 3500 Passenger', 2005);
2082
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2082, 'GMC', 'Sierra 1500 Crew Cab', 2005);
2083
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2083, 'GMC', 'Sierra 1500 Extended Cab', 2005);
2084
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2084, 'GMC', 'Sierra 1500 HD Crew Cab', 2005);
2085
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2085, 'GMC', 'Sierra 1500 Regular Cab', 2005);
2086
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2086, 'GMC', 'Sierra 2500 HD Crew Cab', 2005);
2087
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2087, 'GMC', 'Sierra 2500 HD Extended Cab', 2005);
2088
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2088, 'GMC', 'Sierra 2500 HD Regular Cab', 2005);
2089
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2089, 'GMC', 'Sierra 3500 Crew Cab', 2005);
2090
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2090, 'GMC', 'Sierra 3500 Extended Cab', 2005);
2091
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2091, 'GMC', 'Sierra 3500 Regular Cab', 2005);
2092
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2092, 'GMC', 'Yukon', 2005);
2093
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2093, 'GMC', 'Yukon XL 1500', 2005);
2094
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2094, 'GMC', 'Yukon XL 2500', 2005);
2095
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2095, 'Honda', 'Accord', 2005);
2096
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2096, 'Honda', 'Civic', 2005);
2097
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2097, 'Honda', 'CR-V', 2005);
2098
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2098, 'Honda', 'Element', 2005);
2099
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2099, 'Honda', 'Insight', 2005);
2100
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2100, 'Honda', 'Odyssey', 2005);
2101
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2101, 'Honda', 'Pilot', 2005);
2102
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2102, 'Honda', 'S2000', 2005);
2103
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2103, 'HUMMER', 'H2', 2005);
2104
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2104, 'Hyundai', 'Accent', 2005);
2105
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2105, 'Hyundai', 'Elantra', 2005);
2106
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2106, 'Hyundai', 'Santa Fe', 2005);
2107
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2107, 'Hyundai', 'Sonata', 2005);
2108
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2108, 'Hyundai', 'Tiburon', 2005);
2109
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2109, 'Hyundai', 'Tucson', 2005);
2110
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2110, 'Hyundai', 'XG350', 2005);
2111
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2111, 'Infiniti', 'FX', 2005);
2112
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2112, 'Infiniti', 'G', 2005);
2113
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2113, 'Infiniti', 'Q', 2005);
2114
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2114, 'Infiniti', 'QX', 2005);
2115
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2115, 'Isuzu', 'Ascender', 2005);
2116
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2116, 'Jaguar', 'S-Type', 2005);
2117
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2117, 'Jaguar', 'XJ Series', 2005);
2118
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2118, 'Jaguar', 'XK Series', 2005);
2119
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2119, 'Jaguar', 'X-Type', 2005);
2120
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2120, 'Jeep', 'Grand Cherokee', 2005);
2121
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2121, 'Jeep', 'Liberty', 2005);
2122
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2122, 'Jeep', 'Wrangler', 2005);
2123
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2123, 'Kia', 'Amanti', 2005);
2124
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2124, 'Kia', 'Optima', 2005);
2125
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2125, 'Kia', 'Rio', 2005);
2126
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2126, 'Kia', 'Sedona', 2005);
2127
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2127, 'Kia', 'Sorento', 2005);
2128
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2128, 'Kia', 'Spectra', 2005);
2129
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2129, 'Kia', 'Sportage', 2005);
2130
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2130, 'Land Rover', 'Freelander', 2005);
2131
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2131, 'Land Rover', 'LR3', 2005);
2132
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2132, 'Land Rover', 'Range Rover', 2005);
2133
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2133, 'Lexus', 'ES', 2005);
2134
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2134, 'Lexus', 'GS', 2005);
2135
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2135, 'Lexus', 'GX', 2005);
2136
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2136, 'Lexus', 'IS', 2005);
2137
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2137, 'Lexus', 'LS', 2005);
2138
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2138, 'Lexus', 'LX', 2005);
2139
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2139, 'Lexus', 'RX', 2005);
2140
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2140, 'Lexus', 'SC', 2005);
2141
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2141, 'Lincoln', 'Aviator', 2005);
2142
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2142, 'Lincoln', 'LS', 2005);
2143
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2143, 'Lincoln', 'Navigator', 2005);
2144
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2144, 'Lincoln', 'Town Car', 2005);
2145
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2145, 'Lotus', 'Elise', 2005);
2146
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2146, 'Maybach', '57', 2005);
2147
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2147, 'Maybach', '62', 2005);
2148
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2148, 'Mazda', 'B-Series Extended Cab', 2005);
2149
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2149, 'Mazda', 'B-Series Regular Cab', 2005);
2150
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2150, 'Mazda', 'MAZDA3', 2005);
2151
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2151, 'Mazda', 'MAZDA6', 2005);
2152
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2152, 'Mazda', 'Miata MX-5', 2005);
2153
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2153, 'Mazda', 'MPV', 2005);
2154
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2154, 'Mazda', 'RX-8', 2005);
2155
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2155, 'Mazda', 'Tribute', 2005);
2156
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2156, 'Mercedes-Benz', 'C-Class', 2005);
2157
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2157, 'Mercedes-Benz', 'CL-Class', 2005);
2158
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2158, 'Mercedes-Benz', 'CLK-Class', 2005);
2159
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2159, 'Mercedes-Benz', 'E-Class', 2005);
2160
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2160, 'Mercedes-Benz', 'G-Class', 2005);
2161
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2161, 'Mercedes-Benz', 'M-Class', 2005);
2162
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2162, 'Mercedes-Benz', 'S-Class', 2005);
2163
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2163, 'Mercedes-Benz', 'SL-Class', 2005);
2164
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2164, 'Mercedes-Benz', 'SLK-Class', 2005);
2165
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2165, 'Mercedes-Benz', 'SLR McLaren', 2005);
2166
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2166, 'Mercury', 'Grand Marquis', 2005);
2167
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2167, 'Mercury', 'Mariner', 2005);
2168
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2168, 'Mercury', 'Montego', 2005);
2169
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2169, 'Mercury', 'Monterey', 2005);
2170
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2170, 'Mercury', 'Mountaineer', 2005);
2171
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2171, 'Mercury', 'Sable', 2005);
2172
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2172, 'MINI', 'Cooper', 2005);
2173
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2173, 'Mitsubishi', 'Eclipse', 2005);
2174
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2174, 'Mitsubishi', 'Endeavor', 2005);
2175
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2175, 'Mitsubishi', 'Galant', 2005);
2176
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2176, 'Mitsubishi', 'Lancer', 2005);
2177
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2177, 'Mitsubishi', 'Montero', 2005);
2178
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2178, 'Mitsubishi', 'Outlander', 2005);
2179
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2179, 'Nissan', '350Z', 2005);
2180
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2180, 'Nissan', 'Altima', 2005);
2181
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2181, 'Nissan', 'Armada', 2005);
2182
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2182, 'Nissan', 'Frontier Crew Cab', 2005);
2183
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2183, 'Nissan', 'Frontier King Cab', 2005);
2184
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2184, 'Nissan', 'Maxima', 2005);
2185
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2185, 'Nissan', 'Murano', 2005);
2186
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2186, 'Nissan', 'Pathfinder', 2005);
2187
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2187, 'Nissan', 'Quest', 2005);
2188
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2188, 'Nissan', 'Sentra', 2005);
2189
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2189, 'Nissan', 'Titan Crew Cab', 2005);
2190
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2190, 'Nissan', 'Titan King Cab', 2005);
2191
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2191, 'Nissan', 'Xterra', 2005);
2192
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2192, 'Panoz', 'Esperante', 2005);
2193
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2193, 'Pontiac', 'Aztek', 2005);
2194
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2194, 'Pontiac', 'Bonneville', 2005);
2195
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2195, 'Pontiac', 'G6', 2005);
2196
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2196, 'Pontiac', 'Grand Am', 2005);
2197
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2197, 'Pontiac', 'Grand Prix', 2005);
2198
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2198, 'Pontiac', 'GTO', 2005);
2199
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2199, 'Pontiac', 'Montana', 2005);
2200
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2200, 'Pontiac', 'Montana SV6', 2005);
2201
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2201, 'Pontiac', 'Sunfire', 2005);
2202
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2202, 'Pontiac', 'Vibe', 2005);
2203
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2203, 'Porsche', '911', 2005);
2204
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2204, 'Porsche', 'Boxster', 2005);
2205
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2205, 'Porsche', 'Carrera GT', 2005);
2206
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2206, 'Porsche', 'Cayenne', 2005);
2207
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2207, 'Rolls-Royce', 'Phantom', 2005);
2208
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2208, 'Saab', '9-2X', 2005);
2209
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2209, 'Saab', '9-3', 2005);
2210
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2210, 'Saab', '9-5', 2005);
2211
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2211, 'Saab', '9-7X', 2005);
2212
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2212, 'Saturn', 'Ion', 2005);
2213
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2213, 'Saturn', 'L-Series', 2005);
2214
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2214, 'Saturn', 'Relay', 2005);
2215
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2215, 'Saturn', 'VUE', 2005);
2216
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2216, 'Scion', 'tC', 2005);
2217
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2217, 'Scion', 'xA', 2005);
2218
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2218, 'Scion', 'xB', 2005);
2219
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2219, 'Subaru', 'Baja', 2005);
2220
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2220, 'Subaru', 'Forester', 2005);
2221
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2221, 'Subaru', 'Impreza', 2005);
2222
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2222, 'Subaru', 'Legacy', 2005);
2223
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2223, 'Subaru', 'Outback', 2005);
2224
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2224, 'Suzuki', 'Aerio', 2005);
2225
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2225, 'Suzuki', 'Forenza', 2005);
2226
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2226, 'Suzuki', 'Grand Vitara', 2005);
2227
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2227, 'Suzuki', 'Reno', 2005);
2228
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2228, 'Suzuki', 'Verona', 2005);
2229
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2229, 'Suzuki', 'XL-7', 2005);
2230
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2230, 'Toyota', '4Runner', 2005);
2231
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2231, 'Toyota', 'Avalon', 2005);
2232
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2232, 'Toyota', 'Camry', 2005);
2233
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2233, 'Toyota', 'Celica', 2005);
2234
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2234, 'Toyota', 'Corolla', 2005);
2235
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2235, 'Toyota', 'Echo', 2005);
2236
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2236, 'Toyota', 'Highlander', 2005);
2237
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2237, 'Toyota', 'Land Cruiser', 2005);
2238
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2238, 'Toyota', 'Matrix', 2005);
2239
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2239, 'Toyota', 'MR2', 2005);
2240
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2240, 'Toyota', 'Prius', 2005);
2241
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2241, 'Toyota', 'RAV4', 2005);
2242
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2242, 'Toyota', 'Sequoia', 2005);
2243
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2243, 'Toyota', 'Sienna', 2005);
2244
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2244, 'Toyota', 'Solara', 2005);
2245
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2245, 'Toyota', 'Tacoma Access Cab', 2005);
2246
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2246, 'Toyota', 'Tacoma Double Cab', 2005);
2247
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2247, 'Toyota', 'Tacoma Regular Cab', 2005);
2248
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2248, 'Toyota', 'Tundra Access Cab', 2005);
2249
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2249, 'Toyota', 'Tundra Double Cab', 2005);
2250
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2250, 'Toyota', 'Tundra Regular Cab', 2005);
2251
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2251, 'Volkswagen', 'Golf', 2005);
2252
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2252, 'Volkswagen', 'GTI', 2005);
2253
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2253, 'Volkswagen', 'Jetta', 2005);
2254
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2254, 'Volkswagen', 'Jetta (New)', 2005);
2255
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2255, 'Volkswagen', 'New Beetle', 2005);
2256
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2256, 'Volkswagen', 'Passat', 2005);
2257
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2257, 'Volkswagen', 'Phaeton', 2005);
2258
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2258, 'Volkswagen', 'Touareg', 2005);
2259
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2259, 'Volvo', 'S40', 2005);
2260
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2260, 'Volvo', 'S60', 2005);
2261
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2261, 'Volvo', 'S80', 2005);
2262
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2262, 'Volvo', 'V50', 2005);
2263
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2263, 'Volvo', 'V70', 2005);
2264
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2264, 'Volvo', 'XC70', 2005);
2265
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2265, 'Volvo', 'XC90', 2005);
2266
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2266, 'Acura', 'MDX', 2004);
2267
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2267, 'Acura', 'NSX', 2004);
2268
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2268, 'Acura', 'RL', 2004);
2269
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2269, 'Acura', 'RSX', 2004);
2270
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2270, 'Acura', 'TL', 2004);
2271
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2271, 'Acura', 'TSX', 2004);
2272
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2272, 'Audi', 'A4', 2004);
2273
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2273, 'Audi', 'A6', 2004);
2274
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2274, 'Audi', 'A8', 2004);
2275
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2275, 'Audi', 'allroad', 2004);
2276
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2276, 'Audi', 'S4', 2004);
2277
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2277, 'Audi', 'TT', 2004);
2278
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2278, 'BMW', '3 Series', 2004);
2279
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2279, 'BMW', '5 Series', 2004);
2280
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2280, 'BMW', '6 Series', 2004);
2281
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2281, 'BMW', '7 Series', 2004);
2282
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2282, 'BMW', 'M3', 2004);
2283
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2283, 'BMW', 'X3', 2004);
2284
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2284, 'BMW', 'X5', 2004);
2285
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2285, 'BMW', 'Z4', 2004);
2286
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2286, 'Buick', 'Century', 2004);
2287
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2287, 'Buick', 'LeSabre', 2004);
2288
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2288, 'Buick', 'Park Avenue', 2004);
2289
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2289, 'Buick', 'Rainier', 2004);
2290
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2290, 'Buick', 'Regal', 2004);
2291
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2291, 'Buick', 'Rendezvous', 2004);
2292
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2292, 'Cadillac', 'CTS', 2004);
2293
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2293, 'Cadillac', 'DeVille', 2004);
2294
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2294, 'Cadillac', 'Escalade', 2004);
2295
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2295, 'Cadillac', 'Escalade ESV', 2004);
2296
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2296, 'Cadillac', 'Escalade EXT', 2004);
2297
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2297, 'Cadillac', 'Seville', 2004);
2298
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2298, 'Cadillac', 'SRX', 2004);
2299
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2299, 'Cadillac', 'XLR', 2004);
2300
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2300, 'Chevrolet', 'Astro Cargo', 2004);
2301
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2301, 'Chevrolet', 'Astro Passenger', 2004);
2302
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2302, 'Chevrolet', 'Avalanche 1500', 2004);
2303
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2303, 'Chevrolet', 'Avalanche 2500', 2004);
2304
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2304, 'Chevrolet', 'Aveo', 2004);
2305
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2305, 'Chevrolet', 'Blazer', 2004);
2306
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2306, 'Chevrolet', 'Cavalier', 2004);
2307
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2307, 'Chevrolet', 'Classic', 2004);
2308
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2308, 'Chevrolet', 'Colorado Crew Cab', 2004);
2309
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2309, 'Chevrolet', 'Colorado Extended Cab', 2004);
2310
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2310, 'Chevrolet', 'Colorado Regular Cab', 2004);
2311
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2311, 'Chevrolet', 'Corvette', 2004);
2312
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2312, 'Chevrolet', 'Express 1500 Cargo', 2004);
2313
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2313, 'Chevrolet', 'Express 1500 Passenger', 2004);
2314
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2314, 'Chevrolet', 'Express 2500 Cargo', 2004);
2315
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2315, 'Chevrolet', 'Express 2500 Passenger', 2004);
2316
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2316, 'Chevrolet', 'Express 3500 Cargo', 2004);
2317
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2317, 'Chevrolet', 'Express 3500 Passenger', 2004);
2318
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2318, 'Chevrolet', 'Impala', 2004);
2319
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2319, 'Chevrolet', 'Malibu', 2004);
2320
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2320, 'Chevrolet', 'Monte Carlo', 2004);
2321
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2321, 'Chevrolet', 'S10 Crew Cab', 2004);
2322
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2322, 'Chevrolet', 'Silverado 1500 Crew Cab', 2004);
2323
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2323, 'Chevrolet', 'Silverado 1500 Extended Cab', 2004);
2324
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2324, 'Chevrolet', 'Silverado 1500 Regular Cab', 2004);
2325
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2325, 'Chevrolet', 'Silverado 2500 Crew Cab', 2004);
2326
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2326, 'Chevrolet', 'Silverado 2500 Extended Cab', 2004);
2327
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2327, 'Chevrolet', 'Silverado 2500 HD Crew Cab', 2004);
2328
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2328, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2004);
2329
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2329, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2004);
2330
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2330, 'Chevrolet', 'Silverado 2500 Regular Cab', 2004);
2331
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2331, 'Chevrolet', 'Silverado 3500 Crew Cab', 2004);
2332
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2332, 'Chevrolet', 'Silverado 3500 Extended Cab', 2004);
2333
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2333, 'Chevrolet', 'Silverado 3500 Regular Cab', 2004);
2334
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2334, 'Chevrolet', 'SSR', 2004);
2335
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2335, 'Chevrolet', 'Suburban 1500', 2004);
2336
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2336, 'Chevrolet', 'Suburban 2500', 2004);
2337
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2337, 'Chevrolet', 'Tahoe', 2004);
2338
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2338, 'Chevrolet', 'Tracker', 2004);
2339
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2339, 'Chevrolet', 'TrailBlazer', 2004);
2340
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2340, 'Chevrolet', 'Venture Cargo', 2004);
2341
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2341, 'Chevrolet', 'Venture Passenger', 2004);
2342
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2342, 'Chrysler', '300M', 2004);
2343
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2343, 'Chrysler', 'Concorde', 2004);
2344
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2344, 'Chrysler', 'Crossfire', 2004);
2345
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2345, 'Chrysler', 'Pacifica', 2004);
2346
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2346, 'Chrysler', 'PT Cruiser', 2004);
2347
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2347, 'Chrysler', 'Sebring', 2004);
2348
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2348, 'Chrysler', 'Town & Country', 2004);
2349
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2349, 'Dodge', 'Caravan Cargo', 2004);
2350
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2350, 'Dodge', 'Caravan Passenger', 2004);
2351
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2351, 'Dodge', 'Dakota Club Cab', 2004);
2352
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2352, 'Dodge', 'Dakota Quad Cab', 2004);
2353
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2353, 'Dodge', 'Dakota Regular Cab', 2004);
2354
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2354, 'Dodge', 'Durango', 2004);
2355
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2355, 'Dodge', 'Grand Caravan Cargo', 2004);
2356
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2356, 'Dodge', 'Grand Caravan Passenger', 2004);
2357
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2357, 'Dodge', 'Intrepid', 2004);
2358
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2358, 'Dodge', 'Neon', 2004);
2359
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2359, 'Dodge', 'Ram 1500 Quad Cab', 2004);
2360
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2360, 'Dodge', 'Ram 1500 Regular Cab', 2004);
2361
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2361, 'Dodge', 'Ram 2500 Quad Cab', 2004);
2362
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2362, 'Dodge', 'Ram 2500 Regular Cab', 2004);
2363
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2363, 'Dodge', 'Ram 3500 Quad Cab', 2004);
2364
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2364, 'Dodge', 'Ram 3500 Regular Cab', 2004);
2365
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2365, 'Dodge', 'Stratus', 2004);
2366
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2366, 'Dodge', 'Viper', 2004);
2367
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2367, 'Ford', 'Crown Victoria', 2004);
2368
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2368, 'Ford', 'E150 Passenger', 2004);
2369
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2369, 'Ford', 'E150 Super Duty Cargo', 2004);
2370
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2370, 'Ford', 'E250 Super Duty Cargo', 2004);
2371
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2371, 'Ford', 'E350 Super Duty Cargo', 2004);
2372
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2372, 'Ford', 'E350 Super Duty Passenger', 2004);
2373
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2373, 'Ford', 'Escape', 2004);
2374
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2374, 'Ford', 'Excursion', 2004);
2375
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2375, 'Ford', 'Expedition', 2004);
2376
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2376, 'Ford', 'Explorer', 2004);
2377
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2377, 'Ford', 'Explorer Sport Trac', 2004);
2378
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2378, 'Ford', 'F150 (Heritage) Regular Cab', 2004);
2379
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2379, 'Ford', 'F150 (Heritage) Super Cab', 2004);
2380
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2380, 'Ford', 'F150 Regular Cab', 2004);
2381
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2381, 'Ford', 'F150 Super Cab', 2004);
2382
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2382, 'Ford', 'F150 SuperCrew Cab', 2004);
2383
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2383, 'Ford', 'F250 Super Duty Crew Cab', 2004);
2384
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2384, 'Ford', 'F250 Super Duty Regular Cab', 2004);
2385
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2385, 'Ford', 'F250 Super Duty Super Cab', 2004);
2386
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2386, 'Ford', 'F350 Super Duty Crew Cab', 2004);
2387
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2387, 'Ford', 'F350 Super Duty Regular Cab', 2004);
2388
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2388, 'Ford', 'F350 Super Duty Super Cab', 2004);
2389
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2389, 'Ford', 'Focus', 2004);
2390
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2390, 'Ford', 'Freestar Cargo', 2004);
2391
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2391, 'Ford', 'Freestar Passenger', 2004);
2392
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2392, 'Ford', 'Mustang', 2004);
2393
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2393, 'Ford', 'Ranger Regular Cab', 2004);
2394
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2394, 'Ford', 'Ranger Super Cab', 2004);
2395
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2395, 'Ford', 'Taurus', 2004);
2396
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2396, 'Ford', 'Thunderbird', 2004);
2397
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2397, 'GMC', 'Canyon Crew Cab', 2004);
2398
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2398, 'GMC', 'Canyon Extended Cab', 2004);
2399
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2399, 'GMC', 'Canyon Regular Cab', 2004);
2400
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2400, 'GMC', 'Envoy', 2004);
2401
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2401, 'GMC', 'Envoy XL', 2004);
2402
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2402, 'GMC', 'Envoy XUV', 2004);
2403
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2403, 'GMC', 'Safari Cargo', 2004);
2404
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2404, 'GMC', 'Safari Passenger', 2004);
2405
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2405, 'GMC', 'Savana 1500 Cargo', 2004);
2406
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2406, 'GMC', 'Savana 1500 Passenger', 2004);
2407
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2407, 'GMC', 'Savana 2500 Cargo', 2004);
2408
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2408, 'GMC', 'Savana 2500 Passenger', 2004);
2409
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2409, 'GMC', 'Savana 3500 Cargo', 2004);
2410
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2410, 'GMC', 'Savana 3500 Passenger', 2004);
2411
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2411, 'GMC', 'Sierra 1500 Crew Cab', 2004);
2412
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2412, 'GMC', 'Sierra 1500 Extended Cab', 2004);
2413
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2413, 'GMC', 'Sierra 1500 Regular Cab', 2004);
2414
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2414, 'GMC', 'Sierra 2500 Crew Cab', 2004);
2415
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2415, 'GMC', 'Sierra 2500 Extended Cab', 2004);
2416
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2416, 'GMC', 'Sierra 2500 HD Crew Cab', 2004);
2417
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2417, 'GMC', 'Sierra 2500 HD Extended Cab', 2004);
2418
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2418, 'GMC', 'Sierra 2500 HD Regular Cab', 2004);
2419
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2419, 'GMC', 'Sierra 2500 Regular Cab', 2004);
2420
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2420, 'GMC', 'Sierra 3500 Crew Cab', 2004);
2421
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2421, 'GMC', 'Sierra 3500 Extended Cab', 2004);
2422
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2422, 'GMC', 'Sierra 3500 Regular Cab', 2004);
2423
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2423, 'GMC', 'Sonoma Crew Cab', 2004);
2424
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2424, 'GMC', 'Yukon', 2004);
2425
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2425, 'GMC', 'Yukon XL 1500', 2004);
2426
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2426, 'GMC', 'Yukon XL 2500', 2004);
2427
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2427, 'Honda', 'Accord', 2004);
2428
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2428, 'Honda', 'Civic', 2004);
2429
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2429, 'Honda', 'CR-V', 2004);
2430
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2430, 'Honda', 'Element', 2004);
2431
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2431, 'Honda', 'Insight', 2004);
2432
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2432, 'Honda', 'Odyssey', 2004);
2433
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2433, 'Honda', 'Pilot', 2004);
2434
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2434, 'Honda', 'S2000', 2004);
2435
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2435, 'HUMMER', 'H1', 2004);
2436
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2436, 'HUMMER', 'H2', 2004);
2437
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2437, 'Hyundai', 'Accent', 2004);
2438
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2438, 'Hyundai', 'Elantra', 2004);
2439
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2439, 'Hyundai', 'Santa Fe', 2004);
2440
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2440, 'Hyundai', 'Sonata', 2004);
2441
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2441, 'Hyundai', 'Tiburon', 2004);
2442
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2442, 'Hyundai', 'XG350', 2004);
2443
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2443, 'Infiniti', 'FX', 2004);
2444
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2444, 'Infiniti', 'G', 2004);
2445
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2445, 'Infiniti', 'I', 2004);
2446
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2446, 'Infiniti', 'M', 2004);
2447
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2447, 'Infiniti', 'Q', 2004);
2448
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2448, 'Infiniti', 'QX', 2004);
2449
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2449, 'Isuzu', 'Ascender', 2004);
2450
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2450, 'Isuzu', 'Axiom', 2004);
2451
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2451, 'Isuzu', 'Rodeo', 2004);
2452
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2452, 'Jaguar', 'S-Type', 2004);
2453
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2453, 'Jaguar', 'XJ Series', 2004);
2454
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2454, 'Jaguar', 'XK Series', 2004);
2455
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2455, 'Jaguar', 'X-Type', 2004);
2456
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2456, 'Jeep', 'Grand Cherokee', 2004);
2457
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2457, 'Jeep', 'Liberty', 2004);
2458
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2458, 'Jeep', 'Wrangler', 2004);
2459
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2459, 'Kia', 'Amanti', 2004);
2460
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2460, 'Kia', 'Optima', 2004);
2461
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2461, 'Kia', 'Rio', 2004);
2462
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2462, 'Kia', 'Sedona', 2004);
2463
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2463, 'Kia', 'Sorento', 2004);
2464
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2464, 'Kia', 'Spectra', 2004);
2465
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2465, 'Land Rover', 'Discovery', 2004);
2466
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2466, 'Land Rover', 'Freelander', 2004);
2467
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2467, 'Land Rover', 'Range Rover', 2004);
2468
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2468, 'Lexus', 'ES', 2004);
2469
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2469, 'Lexus', 'GS', 2004);
2470
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2470, 'Lexus', 'GX', 2004);
2471
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2471, 'Lexus', 'IS', 2004);
2472
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2472, 'Lexus', 'LS', 2004);
2473
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2473, 'Lexus', 'LX', 2004);
2474
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2474, 'Lexus', 'RX', 2004);
2475
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2475, 'Lexus', 'SC', 2004);
2476
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2476, 'Lincoln', 'Aviator', 2004);
2477
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2477, 'Lincoln', 'LS', 2004);
2478
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2478, 'Lincoln', 'Navigator', 2004);
2479
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2479, 'Lincoln', 'Town Car', 2004);
2480
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2480, 'Mazda', 'B-Series Cab Plus', 2004);
2481
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2481, 'Mazda', 'B-Series Regular Cab', 2004);
2482
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2482, 'Mazda', 'MAZDA3', 2004);
2483
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2483, 'Mazda', 'MAZDA6', 2004);
2484
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2484, 'Mazda', 'Miata MX-5', 2004);
2485
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2485, 'Mazda', 'MPV', 2004);
2486
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2486, 'Mazda', 'RX-8', 2004);
2487
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2487, 'Mazda', 'Tribute', 2004);
2488
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2488, 'Mercedes-Benz', 'C-Class', 2004);
2489
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2489, 'Mercedes-Benz', 'CL-Class', 2004);
2490
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2490, 'Mercedes-Benz', 'CLK-Class', 2004);
2491
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2491, 'Mercedes-Benz', 'E-Class', 2004);
2492
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2492, 'Mercedes-Benz', 'G-Class', 2004);
2493
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2493, 'Mercedes-Benz', 'M-Class', 2004);
2494
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2494, 'Mercedes-Benz', 'S-Class', 2004);
2495
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2495, 'Mercedes-Benz', 'SL-Class', 2004);
2496
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2496, 'Mercedes-Benz', 'SLK-Class', 2004);
2497
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2497, 'Mercury', 'Grand Marquis', 2004);
2498
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2498, 'Mercury', 'Marauder', 2004);
2499
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2499, 'Mercury', 'Monterey', 2004);
2500
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2500, 'Mercury', 'Mountaineer', 2004);
2501
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2501, 'Mercury', 'Sable', 2004);
2502
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2502, 'MINI', 'Cooper', 2004);
2503
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2503, 'Mitsubishi', 'Diamante', 2004);
2504
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2504, 'Mitsubishi', 'Eclipse', 2004);
2505
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2505, 'Mitsubishi', 'Endeavor', 2004);
2506
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2506, 'Mitsubishi', 'Galant', 2004);
2507
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2507, 'Mitsubishi', 'Lancer', 2004);
2508
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2508, 'Mitsubishi', 'Montero', 2004);
2509
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2509, 'Mitsubishi', 'Montero Sport', 2004);
2510
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2510, 'Mitsubishi', 'Outlander', 2004);
2511
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2511, 'Nissan', '350Z', 2004);
2512
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2512, 'Nissan', 'Altima', 2004);
2513
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2513, 'Nissan', 'Frontier Crew Cab', 2004);
2514
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2514, 'Nissan', 'Frontier King Cab', 2004);
2515
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2515, 'Nissan', 'Maxima', 2004);
2516
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2516, 'Nissan', 'Murano', 2004);
2517
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2517, 'Nissan', 'Pathfinder', 2004);
2518
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2518, 'Nissan', 'Pathfinder Armada', 2004);
2519
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2519, 'Nissan', 'Quest', 2004);
2520
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2520, 'Nissan', 'Sentra', 2004);
2521
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2521, 'Nissan', 'Titan Crew Cab', 2004);
2522
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2522, 'Nissan', 'Titan King Cab', 2004);
2523
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2523, 'Nissan', 'Xterra', 2004);
2524
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2524, 'Oldsmobile', 'Alero', 2004);
2525
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2525, 'Oldsmobile', 'Bravada', 2004);
2526
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2526, 'Oldsmobile', 'Silhouette', 2004);
2527
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2527, 'Pontiac', 'Aztek', 2004);
2528
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2528, 'Pontiac', 'Bonneville', 2004);
2529
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2529, 'Pontiac', 'Grand Am', 2004);
2530
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2530, 'Pontiac', 'Grand Prix', 2004);
2531
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2531, 'Pontiac', 'GTO', 2004);
2532
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2532, 'Pontiac', 'Montana', 2004);
2533
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2533, 'Pontiac', 'Sunfire', 2004);
2534
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2534, 'Pontiac', 'Vibe', 2004);
2535
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2535, 'Porsche', '911', 2004);
2536
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2536, 'Porsche', 'Boxster', 2004);
2537
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2537, 'Porsche', 'Carrera GT', 2004);
2538
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2538, 'Porsche', 'Cayenne', 2004);
2539
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2539, 'Saab', '9-3', 2004);
2540
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2540, 'Saab', '9-5', 2004);
2541
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2541, 'Saturn', 'Ion', 2004);
2542
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2542, 'Saturn', 'L-Series', 2004);
2543
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2543, 'Saturn', 'VUE', 2004);
2544
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2544, 'Scion', 'xA', 2004);
2545
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2545, 'Scion', 'xB', 2004);
2546
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2546, 'Subaru', 'Baja', 2004);
2547
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2547, 'Subaru', 'Forester', 2004);
2548
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2548, 'Subaru', 'Impreza', 2004);
2549
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2549, 'Subaru', 'Legacy', 2004);
2550
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2550, 'Subaru', 'Outback', 2004);
2551
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2551, 'Suzuki', 'Aerio', 2004);
2552
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2552, 'Suzuki', 'Forenza', 2004);
2553
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2553, 'Suzuki', 'Grand Vitara', 2004);
2554
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2554, 'Suzuki', 'Verona', 2004);
2555
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2555, 'Suzuki', 'Vitara', 2004);
2556
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2556, 'Suzuki', 'XL-7', 2004);
2557
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2557, 'Toyota', '4Runner', 2004);
2558
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2558, 'Toyota', 'Avalon', 2004);
2559
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2559, 'Toyota', 'Camry', 2004);
2560
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2560, 'Toyota', 'Celica', 2004);
2561
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2561, 'Toyota', 'Corolla', 2004);
2562
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2562, 'Toyota', 'Echo', 2004);
2563
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2563, 'Toyota', 'Highlander', 2004);
2564
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2564, 'Toyota', 'Land Cruiser', 2004);
2565
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2565, 'Toyota', 'Matrix', 2004);
2566
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2566, 'Toyota', 'MR2', 2004);
2567
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2567, 'Toyota', 'Prius', 2004);
2568
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2568, 'Toyota', 'RAV4', 2004);
2569
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2569, 'Toyota', 'Sequoia', 2004);
2570
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2570, 'Toyota', 'Sienna', 2004);
2571
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2571, 'Toyota', 'Solara', 2004);
2572
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2572, 'Toyota', 'Tacoma Double Cab', 2004);
2573
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2573, 'Toyota', 'Tacoma Regular Cab', 2004);
2574
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2574, 'Toyota', 'Tacoma Xtracab', 2004);
2575
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2575, 'Toyota', 'Tundra Access Cab', 2004);
2576
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2576, 'Toyota', 'Tundra Double Cab', 2004);
2577
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2577, 'Toyota', 'Tundra Regular Cab', 2004);
2578
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2578, 'Volkswagen', 'Golf', 2004);
2579
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2579, 'Volkswagen', 'GTI', 2004);
2580
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2580, 'Volkswagen', 'Jetta', 2004);
2581
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2581, 'Volkswagen', 'New Beetle', 2004);
2582
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2582, 'Volkswagen', 'Passat', 2004);
2583
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2583, 'Volkswagen', 'Phaeton', 2004);
2584
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2584, 'Volkswagen', 'R32', 2004);
2585
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2585, 'Volkswagen', 'Touareg', 2004);
2586
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2586, 'Volvo', 'C70', 2004);
2587
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2587, 'Volvo', 'S40', 2004);
2588
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2588, 'Volvo', 'S40 (New)', 2004);
2589
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2589, 'Volvo', 'S60', 2004);
2590
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2590, 'Volvo', 'S80', 2004);
2591
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2591, 'Volvo', 'V40', 2004);
2592
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2592, 'Volvo', 'V70', 2004);
2593
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2593, 'Volvo', 'XC70', 2004);
2594
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2594, 'Volvo', 'XC90', 2004);
2595
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2595, 'Acura', 'CL', 2003);
2596
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2596, 'Acura', 'MDX', 2003);
2597
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2597, 'Acura', 'NSX', 2003);
2598
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2598, 'Acura', 'RL', 2003);
2599
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2599, 'Acura', 'RSX', 2003);
2600
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2600, 'Acura', 'TL', 2003);
2601
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2601, 'Audi', 'A4', 2003);
2602
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2602, 'Audi', 'A6', 2003);
2603
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2603, 'Audi', 'A8', 2003);
2604
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2604, 'Audi', 'allroad', 2003);
2605
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2605, 'Audi', 'RS 6', 2003);
2606
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2606, 'Audi', 'S6', 2003);
2607
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2607, 'Audi', 'S8', 2003);
2608
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2608, 'Audi', 'TT', 2003);
2609
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2609, 'BMW', '3 Series', 2003);
2610
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2610, 'BMW', '5 Series', 2003);
2611
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2611, 'BMW', '7 Series', 2003);
2612
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2612, 'BMW', 'M3', 2003);
2613
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2613, 'BMW', 'M5', 2003);
2614
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2614, 'BMW', 'X5', 2003);
2615
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2615, 'BMW', 'Z4', 2003);
2616
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2616, 'BMW', 'Z8', 2003);
2617
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2617, 'Buick', 'Century', 2003);
2618
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2618, 'Buick', 'LeSabre', 2003);
2619
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2619, 'Buick', 'Park Avenue', 2003);
2620
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2620, 'Buick', 'Regal', 2003);
2621
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2621, 'Buick', 'Rendezvous', 2003);
2622
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2622, 'Cadillac', 'CTS', 2003);
2623
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2623, 'Cadillac', 'DeVille', 2003);
2624
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2624, 'Cadillac', 'Escalade', 2003);
2625
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2625, 'Cadillac', 'Escalade ESV', 2003);
2626
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2626, 'Cadillac', 'Escalade EXT', 2003);
2627
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2627, 'Cadillac', 'Seville', 2003);
2628
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2628, 'Chevrolet', 'Astro Cargo', 2003);
2629
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2629, 'Chevrolet', 'Astro Passenger', 2003);
2630
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2630, 'Chevrolet', 'Avalanche 1500', 2003);
2631
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2631, 'Chevrolet', 'Avalanche 2500', 2003);
2632
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2632, 'Chevrolet', 'Blazer', 2003);
2633
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2633, 'Chevrolet', 'Cavalier', 2003);
2634
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2634, 'Chevrolet', 'Corvette', 2003);
2635
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2635, 'Chevrolet', 'Express 1500 Cargo', 2003);
2636
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2636, 'Chevrolet', 'Express 1500 Passenger', 2003);
2637
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2637, 'Chevrolet', 'Express 2500 Cargo', 2003);
2638
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2638, 'Chevrolet', 'Express 2500 Passenger', 2003);
2639
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2639, 'Chevrolet', 'Express 3500 Cargo', 2003);
2640
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2640, 'Chevrolet', 'Express 3500 Passenger', 2003);
2641
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2641, 'Chevrolet', 'Impala', 2003);
2642
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2642, 'Chevrolet', 'Malibu', 2003);
2643
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2643, 'Chevrolet', 'Monte Carlo', 2003);
2644
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2644, 'Chevrolet', 'S10 Crew Cab', 2003);
2645
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2645, 'Chevrolet', 'S10 Extended Cab', 2003);
2646
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2646, 'Chevrolet', 'S10 Regular Cab', 2003);
2647
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2647, 'Chevrolet', 'Silverado 1500 Extended Cab', 2003);
2648
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2648, 'Chevrolet', 'Silverado 1500 HD Crew Cab', 2003);
2649
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2649, 'Chevrolet', 'Silverado 1500 Regular Cab', 2003);
2650
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2650, 'Chevrolet', 'Silverado 2500 Extended Cab', 2003);
2651
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2651, 'Chevrolet', 'Silverado 2500 HD Crew Cab', 2003);
2652
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2652, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2003);
2653
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2653, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2003);
2654
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2654, 'Chevrolet', 'Silverado 2500 Regular Cab', 2003);
2655
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2655, 'Chevrolet', 'Silverado 3500 Crew Cab', 2003);
2656
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2656, 'Chevrolet', 'Silverado 3500 Extended Cab', 2003);
2657
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2657, 'Chevrolet', 'Silverado 3500 Regular Cab', 2003);
2658
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2658, 'Chevrolet', 'SSR', 2003);
2659
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2659, 'Chevrolet', 'Suburban 1500', 2003);
2660
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2660, 'Chevrolet', 'Suburban 2500', 2003);
2661
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2661, 'Chevrolet', 'Tahoe', 2003);
2662
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2662, 'Chevrolet', 'Tracker', 2003);
2663
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2663, 'Chevrolet', 'TrailBlazer', 2003);
2664
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2664, 'Chevrolet', 'Venture Cargo', 2003);
2665
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2665, 'Chevrolet', 'Venture Passenger', 2003);
2666
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2666, 'Chrysler', '300M', 2003);
2667
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2667, 'Chrysler', 'Concorde', 2003);
2668
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2668, 'Chrysler', 'PT Cruiser', 2003);
2669
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2669, 'Chrysler', 'Sebring', 2003);
2670
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2670, 'Chrysler', 'Town & Country', 2003);
2671
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2671, 'Chrysler', 'Voyager', 2003);
2672
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2672, 'Dodge', 'Caravan Cargo', 2003);
2673
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2673, 'Dodge', 'Caravan Passenger', 2003);
2674
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2674, 'Dodge', 'Dakota Club Cab', 2003);
2675
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2675, 'Dodge', 'Dakota Quad Cab', 2003);
2676
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2676, 'Dodge', 'Dakota Regular Cab', 2003);
2677
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2677, 'Dodge', 'Durango', 2003);
2678
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2678, 'Dodge', 'Grand Caravan Cargo', 2003);
2679
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2679, 'Dodge', 'Grand Caravan Passenger', 2003);
2680
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2680, 'Dodge', 'Intrepid', 2003);
2681
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2681, 'Dodge', 'Neon', 2003);
2682
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2682, 'Dodge', 'Ram 1500 Quad Cab', 2003);
2683
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2683, 'Dodge', 'Ram 1500 Regular Cab', 2003);
2684
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2684, 'Dodge', 'Ram 2500 Quad Cab', 2003);
2685
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2685, 'Dodge', 'Ram 2500 Regular Cab', 2003);
2686
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2686, 'Dodge', 'Ram 3500 Quad Cab', 2003);
2687
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2687, 'Dodge', 'Ram 3500 Regular Cab', 2003);
2688
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2688, 'Dodge', 'Ram Van 1500', 2003);
2689
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2689, 'Dodge', 'Ram Van 2500', 2003);
2690
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2690, 'Dodge', 'Ram Van 3500', 2003);
2691
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2691, 'Dodge', 'Stratus', 2003);
2692
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2692, 'Dodge', 'Viper', 2003);
2693
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2693, 'Ford', 'Crown Victoria', 2003);
2694
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2694, 'Ford', 'E150 Passenger', 2003);
2695
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2695, 'Ford', 'E150 Super Duty Cargo', 2003);
2696
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2696, 'Ford', 'E250 Super Duty Cargo', 2003);
2697
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2697, 'Ford', 'E350 Super Duty Cargo', 2003);
2698
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2698, 'Ford', 'E350 Super Duty Passenger', 2003);
2699
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2699, 'Ford', 'Escape', 2003);
2700
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2700, 'Ford', 'Excursion', 2003);
2701
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2701, 'Ford', 'Expedition', 2003);
2702
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2702, 'Ford', 'Explorer', 2003);
2703
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2703, 'Ford', 'Explorer Sport', 2003);
2704
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2704, 'Ford', 'Explorer Sport Trac', 2003);
2705
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2705, 'Ford', 'F150 Regular Cab', 2003);
2706
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2706, 'Ford', 'F150 Super Cab', 2003);
2707
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2707, 'Ford', 'F150 SuperCrew Cab', 2003);
2708
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2708, 'Ford', 'F250 Super Duty Crew Cab', 2003);
2709
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2709, 'Ford', 'F250 Super Duty Regular Cab', 2003);
2710
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2710, 'Ford', 'F250 Super Duty Super Cab', 2003);
2711
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2711, 'Ford', 'F350 Super Duty Crew Cab', 2003);
2712
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2712, 'Ford', 'F350 Super Duty Regular Cab', 2003);
2713
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2713, 'Ford', 'F350 Super Duty Super Cab', 2003);
2714
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2714, 'Ford', 'Focus', 2003);
2715
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2715, 'Ford', 'Mustang', 2003);
2716
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2716, 'Ford', 'Ranger Regular Cab', 2003);
2717
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2717, 'Ford', 'Ranger Super Cab', 2003);
2718
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2718, 'Ford', 'Taurus', 2003);
2719
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2719, 'Ford', 'Thunderbird', 2003);
2720
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2720, 'Ford', 'Windstar Cargo', 2003);
2721
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2721, 'Ford', 'Windstar Passenger', 2003);
2722
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2722, 'Ford', 'ZX2', 2003);
2723
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2723, 'GMC', 'Envoy', 2003);
2724
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2724, 'GMC', 'Envoy XL', 2003);
2725
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2725, 'GMC', 'Safari Cargo', 2003);
2726
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2726, 'GMC', 'Safari Passenger', 2003);
2727
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2727, 'GMC', 'Savana 1500 Cargo', 2003);
2728
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2728, 'GMC', 'Savana 1500 Passenger', 2003);
2729
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2729, 'GMC', 'Savana 2500 Cargo', 2003);
2730
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2730, 'GMC', 'Savana 2500 Passenger', 2003);
2731
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2731, 'GMC', 'Savana 3500 Cargo', 2003);
2732
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2732, 'GMC', 'Savana 3500 Passenger', 2003);
2733
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2733, 'GMC', 'Sierra 1500 Extended Cab', 2003);
2734
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2734, 'GMC', 'Sierra 1500 HD Crew Cab', 2003);
2735
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2735, 'GMC', 'Sierra 1500 Regular Cab', 2003);
2736
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2736, 'GMC', 'Sierra 2500 Extended Cab', 2003);
2737
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2737, 'GMC', 'Sierra 2500 HD Crew Cab', 2003);
2738
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2738, 'GMC', 'Sierra 2500 HD Extended Cab', 2003);
2739
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2739, 'GMC', 'Sierra 2500 HD Regular Cab', 2003);
2740
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2740, 'GMC', 'Sierra 2500 Regular Cab', 2003);
2741
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2741, 'GMC', 'Sierra 3500 Crew Cab', 2003);
2742
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2742, 'GMC', 'Sierra 3500 Extended Cab', 2003);
2743
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2743, 'GMC', 'Sierra 3500 Regular Cab', 2003);
2744
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2744, 'GMC', 'Sonoma Crew Cab', 2003);
2745
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2745, 'GMC', 'Sonoma Extended Cab', 2003);
2746
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2746, 'GMC', 'Sonoma Regular Cab', 2003);
2747
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2747, 'GMC', 'Yukon', 2003);
2748
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2748, 'GMC', 'Yukon XL 1500', 2003);
2749
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2749, 'GMC', 'Yukon XL 2500', 2003);
2750
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2750, 'Honda', 'Accord', 2003);
2751
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2751, 'Honda', 'Civic', 2003);
2752
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2752, 'Honda', 'CR-V', 2003);
2753
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2753, 'Honda', 'Element', 2003);
2754
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2754, 'Honda', 'Insight', 2003);
2755
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2755, 'Honda', 'Odyssey', 2003);
2756
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2756, 'Honda', 'Pilot', 2003);
2757
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2757, 'Honda', 'S2000', 2003);
2758
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2758, 'HUMMER', 'H1', 2003);
2759
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2759, 'HUMMER', 'H2', 2003);
2760
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2760, 'Hyundai', 'Accent', 2003);
2761
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2761, 'Hyundai', 'Elantra', 2003);
2762
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2762, 'Hyundai', 'Santa Fe', 2003);
2763
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2763, 'Hyundai', 'Sonata', 2003);
2764
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2764, 'Hyundai', 'Tiburon', 2003);
2765
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2765, 'Hyundai', 'XG350', 2003);
2766
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2766, 'Infiniti', 'FX', 2003);
2767
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2767, 'Infiniti', 'G', 2003);
2768
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2768, 'Infiniti', 'I', 2003);
2769
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2769, 'Infiniti', 'M', 2003);
2770
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2770, 'Infiniti', 'Q', 2003);
2771
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2771, 'Infiniti', 'QX', 2003);
2772
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2772, 'Isuzu', 'Ascender', 2003);
2773
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2773, 'Isuzu', 'Axiom', 2003);
2774
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2774, 'Isuzu', 'Rodeo', 2003);
2775
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2775, 'Isuzu', 'Rodeo Sport', 2003);
2776
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2776, 'Jaguar', 'S-Type', 2003);
2777
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2777, 'Jaguar', 'XJ Series', 2003);
2778
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2778, 'Jaguar', 'XK Series', 2003);
2779
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2779, 'Jaguar', 'X-Type', 2003);
2780
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2780, 'Jeep', 'Grand Cherokee', 2003);
2781
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2781, 'Jeep', 'Liberty', 2003);
2782
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2782, 'Jeep', 'Wrangler', 2003);
2783
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2783, 'Kia', 'Optima', 2003);
2784
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2784, 'Kia', 'Rio', 2003);
2785
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2785, 'Kia', 'Sedona', 2003);
2786
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2786, 'Kia', 'Sorento', 2003);
2787
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2787, 'Kia', 'Spectra', 2003);
2788
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2788, 'Land Rover', 'Discovery', 2003);
2789
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2789, 'Land Rover', 'Freelander', 2003);
2790
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2790, 'Land Rover', 'Range Rover', 2003);
2791
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2791, 'Lexus', 'ES', 2003);
2792
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2792, 'Lexus', 'GS', 2003);
2793
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2793, 'Lexus', 'GX', 2003);
2794
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2794, 'Lexus', 'IS', 2003);
2795
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2795, 'Lexus', 'LS', 2003);
2796
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2796, 'Lexus', 'LX', 2003);
2797
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2797, 'Lexus', 'RX', 2003);
2798
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2798, 'Lexus', 'SC', 2003);
2799
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2799, 'Lincoln', 'Aviator', 2003);
2800
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2800, 'Lincoln', 'LS', 2003);
2801
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2801, 'Lincoln', 'Navigator', 2003);
2802
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2802, 'Lincoln', 'Town Car', 2003);
2803
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2803, 'Mazda', 'B-Series Cab Plus', 2003);
2804
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2804, 'Mazda', 'B-Series Regular Cab', 2003);
2805
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2805, 'Mazda', 'MAZDA6', 2003);
2806
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2806, 'Mazda', 'Miata MX-5', 2003);
2807
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2807, 'Mazda', 'MPV', 2003);
2808
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2808, 'Mazda', 'Protege', 2003);
2809
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2809, 'Mazda', 'Protege5', 2003);
2810
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2810, 'Mazda', 'Tribute', 2003);
2811
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2811, 'Mercedes-Benz', 'C-Class', 2003);
2812
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2812, 'Mercedes-Benz', 'CL-Class', 2003);
2813
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2813, 'Mercedes-Benz', 'CLK-Class', 2003);
2814
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2814, 'Mercedes-Benz', 'E-Class', 2003);
2815
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2815, 'Mercedes-Benz', 'G-Class', 2003);
2816
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2816, 'Mercedes-Benz', 'M-Class', 2003);
2817
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2817, 'Mercedes-Benz', 'S-Class', 2003);
2818
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2818, 'Mercedes-Benz', 'SL-Class', 2003);
2819
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2819, 'Mercedes-Benz', 'SLK-Class', 2003);
2820
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2820, 'Mercury', 'Grand Marquis', 2003);
2821
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2821, 'Mercury', 'Marauder', 2003);
2822
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2822, 'Mercury', 'Mountaineer', 2003);
2823
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2823, 'Mercury', 'Sable', 2003);
2824
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2824, 'MINI', 'Cooper', 2003);
2825
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2825, 'Mitsubishi', 'Diamante', 2003);
2826
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2826, 'Mitsubishi', 'Eclipse', 2003);
2827
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2827, 'Mitsubishi', 'Galant', 2003);
2828
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2828, 'Mitsubishi', 'Lancer', 2003);
2829
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2829, 'Mitsubishi', 'Montero', 2003);
2830
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2830, 'Mitsubishi', 'Montero Sport', 2003);
2831
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2831, 'Mitsubishi', 'Outlander', 2003);
2832
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2832, 'Nissan', '350Z', 2003);
2833
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2833, 'Nissan', 'Altima', 2003);
2834
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2834, 'Nissan', 'Frontier Crew Cab', 2003);
2835
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2835, 'Nissan', 'Frontier King Cab', 2003);
2836
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2836, 'Nissan', 'Maxima', 2003);
2837
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2837, 'Nissan', 'Murano', 2003);
2838
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2838, 'Nissan', 'Pathfinder', 2003);
2839
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2839, 'Nissan', 'Sentra', 2003);
2840
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2840, 'Nissan', 'Xterra', 2003);
2841
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2841, 'Oldsmobile', 'Alero', 2003);
2842
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2842, 'Oldsmobile', 'Aurora', 2003);
2843
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2843, 'Oldsmobile', 'Bravada', 2003);
2844
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2844, 'Oldsmobile', 'Silhouette', 2003);
2845
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2845, 'Pontiac', 'Aztek', 2003);
2846
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2846, 'Pontiac', 'Bonneville', 2003);
2847
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2847, 'Pontiac', 'Grand Am', 2003);
2848
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2848, 'Pontiac', 'Grand Prix', 2003);
2849
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2849, 'Pontiac', 'Montana', 2003);
2850
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2850, 'Pontiac', 'Sunfire', 2003);
2851
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2851, 'Pontiac', 'Vibe', 2003);
2852
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2852, 'Porsche', '911', 2003);
2853
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2853, 'Porsche', 'Boxster', 2003);
2854
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2854, 'Porsche', 'Cayenne', 2003);
2855
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2855, 'Saab', '9-3', 2003);
2856
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2856, 'Saab', '9-5', 2003);
2857
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2857, 'Saturn', 'Ion', 2003);
2858
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2858, 'Saturn', 'L-Series', 2003);
2859
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2859, 'Saturn', 'VUE', 2003);
2860
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2860, 'Subaru', 'Baja', 2003);
2861
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2861, 'Subaru', 'Forester', 2003);
2862
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2862, 'Subaru', 'Impreza', 2003);
2863
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2863, 'Subaru', 'Legacy', 2003);
2864
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2864, 'Subaru', 'Outback', 2003);
2865
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2865, 'Suzuki', 'Aerio', 2003);
2866
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2866, 'Suzuki', 'Grand Vitara', 2003);
2867
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2867, 'Suzuki', 'Vitara', 2003);
2868
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2868, 'Suzuki', 'XL-7', 2003);
2869
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2869, 'Toyota', '4Runner', 2003);
2870
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2870, 'Toyota', 'Avalon', 2003);
2871
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2871, 'Toyota', 'Camry', 2003);
2872
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2872, 'Toyota', 'Celica', 2003);
2873
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2873, 'Toyota', 'Corolla', 2003);
2874
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2874, 'Toyota', 'Echo', 2003);
2875
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2875, 'Toyota', 'Highlander', 2003);
2876
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2876, 'Toyota', 'Land Cruiser', 2003);
2877
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2877, 'Toyota', 'Matrix', 2003);
2878
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2878, 'Toyota', 'MR2', 2003);
2879
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2879, 'Toyota', 'Prius', 2003);
2880
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2880, 'Toyota', 'RAV4', 2003);
2881
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2881, 'Toyota', 'Sequoia', 2003);
2882
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2882, 'Toyota', 'Sienna', 2003);
2883
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2883, 'Toyota', 'Solara', 2003);
2884
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2884, 'Toyota', 'Tacoma Double Cab', 2003);
2885
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2885, 'Toyota', 'Tacoma Regular Cab', 2003);
2886
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2886, 'Toyota', 'Tacoma Xtracab', 2003);
2887
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2887, 'Toyota', 'Tundra Access Cab', 2003);
2888
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2888, 'Toyota', 'Tundra Regular Cab', 2003);
2889
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2889, 'Volkswagen', 'Eurovan', 2003);
2890
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2890, 'Volkswagen', 'Golf', 2003);
2891
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2891, 'Volkswagen', 'GTI', 2003);
2892
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2892, 'Volkswagen', 'Jetta', 2003);
2893
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2893, 'Volkswagen', 'New Beetle', 2003);
2894
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2894, 'Volkswagen', 'Passat', 2003);
2895
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2895, 'Volvo', 'C70', 2003);
2896
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2896, 'Volvo', 'S40', 2003);
2897
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2897, 'Volvo', 'S60', 2003);
2898
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2898, 'Volvo', 'S80', 2003);
2899
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2899, 'Volvo', 'V40', 2003);
2900
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2900, 'Volvo', 'V70', 2003);
2901
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2901, 'Volvo', 'XC70', 2003);
2902
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2902, 'Volvo', 'XC90', 2003);
2903
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2903, 'Acura', 'CL', 2002);
2904
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2904, 'Acura', 'MDX', 2002);
2905
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2905, 'Acura', 'NSX', 2002);
2906
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2906, 'Acura', 'RL', 2002);
2907
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2907, 'Acura', 'RSX', 2002);
2908
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2908, 'Acura', 'TL', 2002);
2909
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2909, 'Audi', 'A4', 2002);
2910
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2910, 'Audi', 'A6', 2002);
2911
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2911, 'Audi', 'A8', 2002);
2912
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2912, 'Audi', 'allroad', 2002);
2913
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2913, 'Audi', 'S4', 2002);
2914
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2914, 'Audi', 'S6', 2002);
2915
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2915, 'Audi', 'S8', 2002);
2916
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2916, 'Audi', 'TT', 2002);
2917
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2917, 'BMW', '3 Series', 2002);
2918
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2918, 'BMW', '5 Series', 2002);
2919
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2919, 'BMW', '7 Series', 2002);
2920
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2920, 'BMW', 'M', 2002);
2921
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2921, 'BMW', 'M3', 2002);
2922
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2922, 'BMW', 'M5', 2002);
2923
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2923, 'BMW', 'X5', 2002);
2924
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2924, 'BMW', 'Z3', 2002);
2925
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2925, 'BMW', 'Z8', 2002);
2926
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2926, 'Buick', 'Century', 2002);
2927
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2927, 'Buick', 'LeSabre', 2002);
2928
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2928, 'Buick', 'Park Avenue', 2002);
2929
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2929, 'Buick', 'Regal', 2002);
2930
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2930, 'Buick', 'Rendezvous', 2002);
2931
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2931, 'Cadillac', 'DeVille', 2002);
2932
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2932, 'Cadillac', 'Eldorado', 2002);
2933
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2933, 'Cadillac', 'Escalade', 2002);
2934
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2934, 'Cadillac', 'Escalade EXT', 2002);
2935
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2935, 'Cadillac', 'Seville', 2002);
2936
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2936, 'Chevrolet', 'Astro Cargo', 2002);
2937
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2937, 'Chevrolet', 'Astro Passenger', 2002);
2938
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2938, 'Chevrolet', 'Avalanche 1500', 2002);
2939
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2939, 'Chevrolet', 'Avalanche 2500', 2002);
2940
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2940, 'Chevrolet', 'Blazer', 2002);
2941
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2941, 'Chevrolet', 'Camaro', 2002);
2942
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2942, 'Chevrolet', 'Cavalier', 2002);
2943
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2943, 'Chevrolet', 'Corvette', 2002);
2944
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2944, 'Chevrolet', 'Express 1500 Cargo', 2002);
2945
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2945, 'Chevrolet', 'Express 1500 Passenger', 2002);
2946
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2946, 'Chevrolet', 'Express 2500 Cargo', 2002);
2947
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2947, 'Chevrolet', 'Express 2500 Passenger', 2002);
2948
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2948, 'Chevrolet', 'Express 3500 Cargo', 2002);
2949
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2949, 'Chevrolet', 'Express 3500 Passenger', 2002);
2950
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2950, 'Chevrolet', 'Impala', 2002);
2951
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2951, 'Chevrolet', 'Malibu', 2002);
2952
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2952, 'Chevrolet', 'Monte Carlo', 2002);
2953
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2953, 'Chevrolet', 'Prizm', 2002);
2954
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2954, 'Chevrolet', 'S10 Crew Cab', 2002);
2955
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2955, 'Chevrolet', 'S10 Extended Cab', 2002);
2956
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2956, 'Chevrolet', 'S10 Regular Cab', 2002);
2957
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2957, 'Chevrolet', 'Silverado 1500 Extended Cab', 2002);
2958
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2958, 'Chevrolet', 'Silverado 1500 HD Crew Cab', 2002);
2959
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2959, 'Chevrolet', 'Silverado 1500 Regular Cab', 2002);
2960
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2960, 'Chevrolet', 'Silverado 2500 Extended Cab', 2002);
2961
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2961, 'Chevrolet', 'Silverado 2500 HD Crew Cab', 2002);
2962
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2962, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2002);
2963
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2963, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2002);
2964
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2964, 'Chevrolet', 'Silverado 2500 Regular Cab', 2002);
2965
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2965, 'Chevrolet', 'Silverado 3500 Crew Cab', 2002);
2966
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2966, 'Chevrolet', 'Silverado 3500 Extended Cab', 2002);
2967
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2967, 'Chevrolet', 'Silverado 3500 Regular Cab', 2002);
2968
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2968, 'Chevrolet', 'Suburban 1500', 2002);
2969
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2969, 'Chevrolet', 'Suburban 2500', 2002);
2970
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2970, 'Chevrolet', 'Tahoe', 2002);
2971
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2971, 'Chevrolet', 'Tracker', 2002);
2972
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2972, 'Chevrolet', 'TrailBlazer', 2002);
2973
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2973, 'Chevrolet', 'Venture Cargo', 2002);
2974
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2974, 'Chevrolet', 'Venture Passenger', 2002);
2975
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2975, 'Chrysler', '300M', 2002);
2976
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2976, 'Chrysler', 'Concorde', 2002);
2977
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2977, 'Chrysler', 'Prowler', 2002);
2978
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2978, 'Chrysler', 'PT Cruiser', 2002);
2979
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2979, 'Chrysler', 'Sebring', 2002);
2980
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2980, 'Chrysler', 'Town & Country', 2002);
2981
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2981, 'Chrysler', 'Voyager', 2002);
2982
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2982, 'Daewoo', 'Lanos', 2002);
2983
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2983, 'Daewoo', 'Leganza', 2002);
2984
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2984, 'Daewoo', 'Nubira', 2002);
2985
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2985, 'Dodge', 'Caravan Passenger', 2002);
2986
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2986, 'Dodge', 'Dakota Club Cab', 2002);
2987
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2987, 'Dodge', 'Dakota Quad Cab', 2002);
2988
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2988, 'Dodge', 'Dakota Regular Cab', 2002);
2989
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2989, 'Dodge', 'Durango', 2002);
2990
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2990, 'Dodge', 'Grand Caravan Passenger', 2002);
2991
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2991, 'Dodge', 'Intrepid', 2002);
2992
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2992, 'Dodge', 'Neon', 2002);
2993
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2993, 'Dodge', 'Ram 1500 Quad Cab', 2002);
2994
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2994, 'Dodge', 'Ram 1500 Regular Cab', 2002);
2995
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2995, 'Dodge', 'Ram 2500 Quad Cab', 2002);
2996
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2996, 'Dodge', 'Ram 2500 Regular Cab', 2002);
2997
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2997, 'Dodge', 'Ram 3500 Quad Cab', 2002);
2998
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2998, 'Dodge', 'Ram 3500 Regular Cab', 2002);
2999
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (2999, 'Dodge', 'Ram Van 1500', 2002);
3000
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3000, 'Dodge', 'Ram Van 2500', 2002);
3001
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3001, 'Dodge', 'Ram Van 3500', 2002);
3002
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3002, 'Dodge', 'Ram Wagon 1500', 2002);
3003
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3003, 'Dodge', 'Ram Wagon 2500', 2002);
3004
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3004, 'Dodge', 'Ram Wagon 3500', 2002);
3005
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3005, 'Dodge', 'Stratus', 2002);
3006
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3006, 'Dodge', 'Viper', 2002);
3007
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3007, 'Ford', 'Crown Victoria', 2002);
3008
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3008, 'Ford', 'Econoline E150 Cargo', 2002);
3009
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3009, 'Ford', 'Econoline E150 Passenger', 2002);
3010
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3010, 'Ford', 'Econoline E250 Cargo', 2002);
3011
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3011, 'Ford', 'Econoline E350 Super Duty Cargo', 2002);
3012
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3012, 'Ford', 'Econoline E350 Super Duty Passenger', 2002);
3013
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3013, 'Ford', 'Escape', 2002);
3014
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3014, 'Ford', 'Escort', 2002);
3015
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3015, 'Ford', 'Excursion', 2002);
3016
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3016, 'Ford', 'Expedition', 2002);
3017
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3017, 'Ford', 'Explorer', 2002);
3018
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3018, 'Ford', 'Explorer Sport', 2002);
3019
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3019, 'Ford', 'Explorer Sport Trac', 2002);
3020
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3020, 'Ford', 'F150 Regular Cab', 2002);
3021
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3021, 'Ford', 'F150 Super Cab', 2002);
3022
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3022, 'Ford', 'F150 SuperCrew Cab', 2002);
3023
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3023, 'Ford', 'F250 Super Duty Crew Cab', 2002);
3024
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3024, 'Ford', 'F250 Super Duty Regular Cab', 2002);
3025
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3025, 'Ford', 'F250 Super Duty Super Cab', 2002);
3026
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3026, 'Ford', 'F350 Super Duty Crew Cab', 2002);
3027
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3027, 'Ford', 'F350 Super Duty Regular Cab', 2002);
3028
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3028, 'Ford', 'F350 Super Duty Super Cab', 2002);
3029
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3029, 'Ford', 'Focus', 2002);
3030
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3030, 'Ford', 'Mustang', 2002);
3031
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3031, 'Ford', 'Ranger Regular Cab', 2002);
3032
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3032, 'Ford', 'Ranger Super Cab', 2002);
3033
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3033, 'Ford', 'Taurus', 2002);
3034
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3034, 'Ford', 'Thunderbird', 2002);
3035
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3035, 'Ford', 'Windstar Cargo', 2002);
3036
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3036, 'Ford', 'Windstar Passenger', 2002);
3037
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3037, 'Ford', 'ZX2', 2002);
3038
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3038, 'GMC', 'Envoy', 2002);
3039
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3039, 'GMC', 'Envoy XL', 2002);
3040
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3040, 'GMC', 'Safari Cargo', 2002);
3041
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3041, 'GMC', 'Safari Passenger', 2002);
3042
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3042, 'GMC', 'Savana 1500 Cargo', 2002);
3043
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3043, 'GMC', 'Savana 1500 Passenger', 2002);
3044
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3044, 'GMC', 'Savana 2500 Cargo', 2002);
3045
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3045, 'GMC', 'Savana 2500 Passenger', 2002);
3046
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3046, 'GMC', 'Savana 3500 Cargo', 2002);
3047
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3047, 'GMC', 'Savana 3500 Passenger', 2002);
3048
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3048, 'GMC', 'Sierra 1500 Extended Cab', 2002);
3049
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3049, 'GMC', 'Sierra 1500 HD Crew Cab', 2002);
3050
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3050, 'GMC', 'Sierra 1500 Regular Cab', 2002);
3051
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3051, 'GMC', 'Sierra 2500 Extended Cab', 2002);
3052
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3052, 'GMC', 'Sierra 2500 HD Crew Cab', 2002);
3053
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3053, 'GMC', 'Sierra 2500 HD Extended Cab', 2002);
3054
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3054, 'GMC', 'Sierra 2500 HD Regular Cab', 2002);
3055
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3055, 'GMC', 'Sierra 2500 Regular Cab', 2002);
3056
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3056, 'GMC', 'Sierra 3500 Crew Cab', 2002);
3057
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3057, 'GMC', 'Sierra 3500 Extended Cab', 2002);
3058
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3058, 'GMC', 'Sierra 3500 Regular Cab', 2002);
3059
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3059, 'GMC', 'Sonoma Crew Cab', 2002);
3060
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3060, 'GMC', 'Sonoma Extended Cab', 2002);
3061
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3061, 'GMC', 'Sonoma Regular Cab', 2002);
3062
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3062, 'GMC', 'Yukon', 2002);
3063
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3063, 'GMC', 'Yukon XL 1500', 2002);
3064
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3064, 'GMC', 'Yukon XL 2500', 2002);
3065
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3065, 'Honda', 'Accord', 2002);
3066
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3066, 'Honda', 'Civic', 2002);
3067
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3067, 'Honda', 'CR-V', 2002);
3068
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3068, 'Honda', 'Insight', 2002);
3069
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3069, 'Honda', 'Odyssey', 2002);
3070
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3070, 'Honda', 'Passport', 2002);
3071
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3071, 'Honda', 'S2000', 2002);
3072
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3072, 'HUMMER', 'H1', 2002);
3073
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3073, 'Hyundai', 'Accent', 2002);
3074
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3074, 'Hyundai', 'Elantra', 2002);
3075
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3075, 'Hyundai', 'Santa Fe', 2002);
3076
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3076, 'Hyundai', 'Sonata', 2002);
3077
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3077, 'Hyundai', 'XG350', 2002);
3078
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3078, 'Infiniti', 'G', 2002);
3079
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3079, 'Infiniti', 'I', 2002);
3080
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3080, 'Infiniti', 'Q', 2002);
3081
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3081, 'Infiniti', 'QX', 2002);
3082
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3082, 'Isuzu', 'Axiom', 2002);
3083
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3083, 'Isuzu', 'Rodeo', 2002);
3084
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3084, 'Isuzu', 'Rodeo Sport', 2002);
3085
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3085, 'Isuzu', 'Trooper', 2002);
3086
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3086, 'Jaguar', 'S-Type', 2002);
3087
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3087, 'Jaguar', 'XJ Series', 2002);
3088
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3088, 'Jaguar', 'XK Series', 2002);
3089
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3089, 'Jaguar', 'X-Type', 2002);
3090
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3090, 'Jeep', 'Grand Cherokee', 2002);
3091
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3091, 'Jeep', 'Liberty', 2002);
3092
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3092, 'Jeep', 'Wrangler', 2002);
3093
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3093, 'Kia', 'Optima', 2002);
3094
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3094, 'Kia', 'Rio', 2002);
3095
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3095, 'Kia', 'Sedona', 2002);
3096
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3096, 'Kia', 'Spectra', 2002);
3097
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3097, 'Kia', 'Sportage', 2002);
3098
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3098, 'Land Rover', 'Discovery Series II', 2002);
3099
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3099, 'Land Rover', 'Freelander', 2002);
3100
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3100, 'Land Rover', 'Range Rover', 2002);
3101
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3101, 'Lexus', 'ES', 2002);
3102
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3102, 'Lexus', 'GS', 2002);
3103
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3103, 'Lexus', 'IS', 2002);
3104
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3104, 'Lexus', 'LS', 2002);
3105
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3105, 'Lexus', 'LX', 2002);
3106
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3106, 'Lexus', 'RX', 2002);
3107
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3107, 'Lexus', 'SC', 2002);
3108
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3108, 'Lincoln', 'Blackwood', 2002);
3109
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3109, 'Lincoln', 'Continental', 2002);
3110
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3110, 'Lincoln', 'LS', 2002);
3111
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3111, 'Lincoln', 'Navigator', 2002);
3112
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3112, 'Lincoln', 'Town Car', 2002);
3113
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3113, 'Mazda', '626', 2002);
3114
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3114, 'Mazda', 'B-Series Cab Plus', 2002);
3115
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3115, 'Mazda', 'B-Series Regular Cab', 2002);
3116
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3116, 'Mazda', 'Miata MX-5', 2002);
3117
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3117, 'Mazda', 'Millenia', 2002);
3118
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3118, 'Mazda', 'MPV', 2002);
3119
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3119, 'Mazda', 'Protege', 2002);
3120
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3120, 'Mazda', 'Protege5', 2002);
3121
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3121, 'Mazda', 'Tribute', 2002);
3122
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3122, 'Mercedes-Benz', 'C-Class', 2002);
3123
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3123, 'Mercedes-Benz', 'CL-Class', 2002);
3124
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3124, 'Mercedes-Benz', 'CLK-Class', 2002);
3125
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3125, 'Mercedes-Benz', 'E-Class', 2002);
3126
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3126, 'Mercedes-Benz', 'G-Class', 2002);
3127
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3127, 'Mercedes-Benz', 'M-Class', 2002);
3128
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3128, 'Mercedes-Benz', 'S-Class', 2002);
3129
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3129, 'Mercedes-Benz', 'SL-Class', 2002);
3130
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3130, 'Mercedes-Benz', 'SLK-Class', 2002);
3131
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3131, 'Mercury', 'Cougar', 2002);
3132
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3132, 'Mercury', 'Grand Marquis', 2002);
3133
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3133, 'Mercury', 'Mountaineer', 2002);
3134
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3134, 'Mercury', 'Sable', 2002);
3135
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3135, 'Mercury', 'Villager', 2002);
3136
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3136, 'MINI', 'Cooper', 2002);
3137
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3137, 'Mitsubishi', 'Diamante', 2002);
3138
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3138, 'Mitsubishi', 'Eclipse', 2002);
3139
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3139, 'Mitsubishi', 'Galant', 2002);
3140
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3140, 'Mitsubishi', 'Lancer', 2002);
3141
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3141, 'Mitsubishi', 'Mirage', 2002);
3142
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3142, 'Mitsubishi', 'Montero', 2002);
3143
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3143, 'Mitsubishi', 'Montero Sport', 2002);
3144
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3144, 'Nissan', 'Altima', 2002);
3145
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3145, 'Nissan', 'Frontier Crew Cab', 2002);
3146
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3146, 'Nissan', 'Frontier King Cab', 2002);
3147
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3147, 'Nissan', 'Maxima', 2002);
3148
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3148, 'Nissan', 'Pathfinder', 2002);
3149
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3149, 'Nissan', 'Quest', 2002);
3150
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3150, 'Nissan', 'Sentra', 2002);
3151
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3151, 'Nissan', 'Xterra', 2002);
3152
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3152, 'Oldsmobile', 'Alero', 2002);
3153
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3153, 'Oldsmobile', 'Aurora', 2002);
3154
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3154, 'Oldsmobile', 'Bravada', 2002);
3155
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3155, 'Oldsmobile', 'Intrigue', 2002);
3156
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3156, 'Oldsmobile', 'Silhouette', 2002);
3157
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3157, 'Pontiac', 'Aztek', 2002);
3158
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3158, 'Pontiac', 'Bonneville', 2002);
3159
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3159, 'Pontiac', 'Firebird', 2002);
3160
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3160, 'Pontiac', 'Grand Am', 2002);
3161
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3161, 'Pontiac', 'Grand Prix', 2002);
3162
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3162, 'Pontiac', 'Montana', 2002);
3163
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3163, 'Pontiac', 'Sunfire', 2002);
3164
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3164, 'Porsche', '911', 2002);
3165
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3165, 'Porsche', 'Boxster', 2002);
3166
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3166, 'Saab', '9-3', 2002);
3167
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3167, 'Saab', '9-5', 2002);
3168
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3168, 'Saturn', 'L-Series', 2002);
3169
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3169, 'Saturn', 'S-Series', 2002);
3170
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3170, 'Saturn', 'VUE', 2002);
3171
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3171, 'Subaru', 'Forester', 2002);
3172
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3172, 'Subaru', 'Impreza', 2002);
3173
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3173, 'Subaru', 'Legacy', 2002);
3174
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3174, 'Subaru', 'Outback', 2002);
3175
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3175, 'Suzuki', 'Aerio', 2002);
3176
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3176, 'Suzuki', 'Esteem', 2002);
3177
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3177, 'Suzuki', 'Grand Vitara', 2002);
3178
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3178, 'Suzuki', 'Vitara', 2002);
3179
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3179, 'Suzuki', 'XL-7', 2002);
3180
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3180, 'Toyota', '4Runner', 2002);
3181
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3181, 'Toyota', 'Avalon', 2002);
3182
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3182, 'Toyota', 'Camry', 2002);
3183
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3183, 'Toyota', 'Celica', 2002);
3184
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3184, 'Toyota', 'Corolla', 2002);
3185
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3185, 'Toyota', 'Echo', 2002);
3186
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3186, 'Toyota', 'Highlander', 2002);
3187
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3187, 'Toyota', 'Land Cruiser', 2002);
3188
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3188, 'Toyota', 'MR2', 2002);
3189
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3189, 'Toyota', 'Prius', 2002);
3190
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3190, 'Toyota', 'RAV4', 2002);
3191
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3191, 'Toyota', 'Sequoia', 2002);
3192
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3192, 'Toyota', 'Sienna', 2002);
3193
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3193, 'Toyota', 'Solara', 2002);
3194
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3194, 'Toyota', 'Tacoma Double Cab', 2002);
3195
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3195, 'Toyota', 'Tacoma Regular Cab', 2002);
3196
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3196, 'Toyota', 'Tacoma Xtracab', 2002);
3197
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3197, 'Toyota', 'Tundra Access Cab', 2002);
3198
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3198, 'Toyota', 'Tundra Regular Cab', 2002);
3199
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3199, 'Volkswagen', 'Cabrio', 2002);
3200
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3200, 'Volkswagen', 'Eurovan', 2002);
3201
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3201, 'Volkswagen', 'Golf', 2002);
3202
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3202, 'Volkswagen', 'GTI', 2002);
3203
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3203, 'Volkswagen', 'Jetta', 2002);
3204
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3204, 'Volkswagen', 'New Beetle', 2002);
3205
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3205, 'Volkswagen', 'Passat', 2002);
3206
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3206, 'Volvo', 'C70', 2002);
3207
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3207, 'Volvo', 'S40', 2002);
3208
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3208, 'Volvo', 'S60', 2002);
3209
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3209, 'Volvo', 'S80', 2002);
3210
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3210, 'Volvo', 'V40', 2002);
3211
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3211, 'Volvo', 'V70', 2002);
3212
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3212, 'Acura', 'CL', 2001);
3213
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3213, 'Acura', 'Integra', 2001);
3214
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3214, 'Acura', 'MDX', 2001);
3215
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3215, 'Acura', 'NSX', 2001);
3216
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3216, 'Acura', 'RL', 2001);
3217
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3217, 'Acura', 'TL', 2001);
3218
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3218, 'Audi', 'A4', 2001);
3219
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3219, 'Audi', 'A6', 2001);
3220
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3220, 'Audi', 'A8', 2001);
3221
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3221, 'Audi', 'allroad', 2001);
3222
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3222, 'Audi', 'S4', 2001);
3223
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3223, 'Audi', 'S8', 2001);
3224
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3224, 'Audi', 'TT', 2001);
3225
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3225, 'BMW', '3 Series', 2001);
3226
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3226, 'BMW', '5 Series', 2001);
3227
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3227, 'BMW', '7 Series', 2001);
3228
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3228, 'BMW', 'M', 2001);
3229
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3229, 'BMW', 'M3', 2001);
3230
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3230, 'BMW', 'M5', 2001);
3231
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3231, 'BMW', 'X5', 2001);
3232
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3232, 'BMW', 'Z3', 2001);
3233
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3233, 'BMW', 'Z8', 2001);
3234
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3234, 'Buick', 'Century', 2001);
3235
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3235, 'Buick', 'LeSabre', 2001);
3236
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3236, 'Buick', 'Park Avenue', 2001);
3237
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3237, 'Buick', 'Regal', 2001);
3238
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3238, 'Cadillac', 'Catera', 2001);
3239
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3239, 'Cadillac', 'DeVille', 2001);
3240
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3240, 'Cadillac', 'Eldorado', 2001);
3241
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3241, 'Cadillac', 'Seville', 2001);
3242
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3242, 'Chevrolet', 'Astro Cargo', 2001);
3243
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3243, 'Chevrolet', 'Astro Passenger', 2001);
3244
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3244, 'Chevrolet', 'Blazer', 2001);
3245
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3245, 'Chevrolet', 'Camaro', 2001);
3246
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3246, 'Chevrolet', 'Cavalier', 2001);
3247
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3247, 'Chevrolet', 'Corvette', 2001);
3248
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3248, 'Chevrolet', 'Express 1500 Cargo', 2001);
3249
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3249, 'Chevrolet', 'Express 1500 Passenger', 2001);
3250
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3250, 'Chevrolet', 'Express 2500 Cargo', 2001);
3251
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3251, 'Chevrolet', 'Express 2500 Passenger', 2001);
3252
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3252, 'Chevrolet', 'Express 3500 Cargo', 2001);
3253
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3253, 'Chevrolet', 'Express 3500 Passenger', 2001);
3254
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3254, 'Chevrolet', 'Impala', 2001);
3255
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3255, 'Chevrolet', 'Lumina', 2001);
3256
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3256, 'Chevrolet', 'Malibu', 2001);
3257
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3257, 'Chevrolet', 'Metro', 2001);
3258
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3258, 'Chevrolet', 'Monte Carlo', 2001);
3259
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3259, 'Chevrolet', 'Prizm', 2001);
3260
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3260, 'Chevrolet', 'S10 Crew Cab', 2001);
3261
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3261, 'Chevrolet', 'S10 Extended Cab', 2001);
3262
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3262, 'Chevrolet', 'S10 Regular Cab', 2001);
3263
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3263, 'Chevrolet', 'Silverado 1500 Extended Cab', 2001);
3264
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3264, 'Chevrolet', 'Silverado 1500 HD Crew Cab', 2001);
3265
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3265, 'Chevrolet', 'Silverado 1500 Regular Cab', 2001);
3266
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3266, 'Chevrolet', 'Silverado 2500 Extended Cab', 2001);
3267
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3267, 'Chevrolet', 'Silverado 2500 HD Crew Cab', 2001);
3268
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3268, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2001);
3269
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3269, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2001);
3270
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3270, 'Chevrolet', 'Silverado 2500 Regular Cab', 2001);
3271
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3271, 'Chevrolet', 'Silverado 3500 Crew Cab', 2001);
3272
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3272, 'Chevrolet', 'Silverado 3500 Extended Cab', 2001);
3273
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3273, 'Chevrolet', 'Silverado 3500 Regular Cab', 2001);
3274
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3274, 'Chevrolet', 'Suburban 1500', 2001);
3275
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3275, 'Chevrolet', 'Suburban 2500', 2001);
3276
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3276, 'Chevrolet', 'Tahoe', 2001);
3277
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3277, 'Chevrolet', 'Tracker', 2001);
3278
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3278, 'Chevrolet', 'Venture Passenger', 2001);
3279
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3279, 'Chrysler', '300M', 2001);
3280
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3280, 'Chrysler', 'Concorde', 2001);
3281
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3281, 'Chrysler', 'LHS', 2001);
3282
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3282, 'Chrysler', 'Prowler', 2001);
3283
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3283, 'Chrysler', 'PT Cruiser', 2001);
3284
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3284, 'Chrysler', 'Sebring', 2001);
3285
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3285, 'Chrysler', 'Town & Country', 2001);
3286
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3286, 'Chrysler', 'Voyager', 2001);
3287
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3287, 'Daewoo', 'Lanos', 2001);
3288
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3288, 'Daewoo', 'Leganza', 2001);
3289
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3289, 'Daewoo', 'Nubira', 2001);
3290
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3290, 'Dodge', 'Caravan Passenger', 2001);
3291
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3291, 'Dodge', 'Dakota Club Cab', 2001);
3292
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3292, 'Dodge', 'Dakota Quad Cab', 2001);
3293
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3293, 'Dodge', 'Dakota Regular Cab', 2001);
3294
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3294, 'Dodge', 'Durango', 2001);
3295
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3295, 'Dodge', 'Grand Caravan Passenger', 2001);
3296
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3296, 'Dodge', 'Intrepid', 2001);
3297
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3297, 'Dodge', 'Neon', 2001);
3298
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3298, 'Dodge', 'Ram 1500 Club Cab', 2001);
3299
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3299, 'Dodge', 'Ram 1500 Quad Cab', 2001);
3300
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3300, 'Dodge', 'Ram 1500 Regular Cab', 2001);
3301
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3301, 'Dodge', 'Ram 2500 Quad Cab', 2001);
3302
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3302, 'Dodge', 'Ram 2500 Regular Cab', 2001);
3303
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3303, 'Dodge', 'Ram 3500 Quad Cab', 2001);
3304
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3304, 'Dodge', 'Ram 3500 Regular Cab', 2001);
3305
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3305, 'Dodge', 'Ram Van 1500', 2001);
3306
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3306, 'Dodge', 'Ram Van 2500', 2001);
3307
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3307, 'Dodge', 'Ram Van 3500', 2001);
3308
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3308, 'Dodge', 'Ram Wagon 1500', 2001);
3309
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3309, 'Dodge', 'Ram Wagon 2500', 2001);
3310
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3310, 'Dodge', 'Ram Wagon 3500', 2001);
3311
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3311, 'Dodge', 'Stratus', 2001);
3312
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3312, 'Dodge', 'Viper', 2001);
3313
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3313, 'Ford', 'Crown Victoria', 2001);
3314
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3314, 'Ford', 'Econoline E150 Cargo', 2001);
3315
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3315, 'Ford', 'Econoline E150 Passenger', 2001);
3316
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3316, 'Ford', 'Econoline E250 Cargo', 2001);
3317
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3317, 'Ford', 'Econoline E350 Super Duty Cargo', 2001);
3318
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3318, 'Ford', 'Econoline E350 Super Duty Passenger', 2001);
3319
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3319, 'Ford', 'Escape', 2001);
3320
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3320, 'Ford', 'Escort', 2001);
3321
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3321, 'Ford', 'Excursion', 2001);
3322
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3322, 'Ford', 'Expedition', 2001);
3323
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3323, 'Ford', 'Explorer', 2001);
3324
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3324, 'Ford', 'Explorer Sport', 2001);
3325
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3325, 'Ford', 'Explorer Sport Trac', 2001);
3326
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3326, 'Ford', 'F150 Regular Cab', 2001);
3327
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3327, 'Ford', 'F150 Super Cab', 2001);
3328
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3328, 'Ford', 'F150 SuperCrew Cab', 2001);
3329
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3329, 'Ford', 'F250 Super Duty Crew Cab', 2001);
3330
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3330, 'Ford', 'F250 Super Duty Regular Cab', 2001);
3331
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3331, 'Ford', 'F250 Super Duty Super Cab', 2001);
3332
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3332, 'Ford', 'F350 Super Duty Crew Cab', 2001);
3333
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3333, 'Ford', 'F350 Super Duty Regular Cab', 2001);
3334
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3334, 'Ford', 'F350 Super Duty Super Cab', 2001);
3335
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3335, 'Ford', 'Focus', 2001);
3336
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3336, 'Ford', 'Mustang', 2001);
3337
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3337, 'Ford', 'Ranger Regular Cab', 2001);
3338
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3338, 'Ford', 'Ranger Super Cab', 2001);
3339
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3339, 'Ford', 'Taurus', 2001);
3340
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3340, 'Ford', 'Windstar Cargo', 2001);
3341
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3341, 'Ford', 'Windstar Passenger', 2001);
3342
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3342, 'Ford', 'ZX2', 2001);
3343
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3343, 'GMC', 'Jimmy', 2001);
3344
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3344, 'GMC', 'Safari Cargo', 2001);
3345
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3345, 'GMC', 'Safari Passenger', 2001);
3346
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3346, 'GMC', 'Savana 1500 Cargo', 2001);
3347
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3347, 'GMC', 'Savana 1500 Passenger', 2001);
3348
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3348, 'GMC', 'Savana 2500 Cargo', 2001);
3349
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3349, 'GMC', 'Savana 2500 Passenger', 2001);
3350
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3350, 'GMC', 'Savana 3500 Cargo', 2001);
3351
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3351, 'GMC', 'Savana 3500 Passenger', 2001);
3352
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3352, 'GMC', 'Sierra 1500 Extended Cab', 2001);
3353
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3353, 'GMC', 'Sierra 1500 HD Crew Cab', 2001);
3354
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3354, 'GMC', 'Sierra 1500 Regular Cab', 2001);
3355
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3355, 'GMC', 'Sierra 2500 Extended Cab', 2001);
3356
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3356, 'GMC', 'Sierra 2500 HD Crew Cab', 2001);
3357
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3357, 'GMC', 'Sierra 2500 HD Extended Cab', 2001);
3358
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3358, 'GMC', 'Sierra 2500 HD Regular Cab', 2001);
3359
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3359, 'GMC', 'Sierra 2500 Regular Cab', 2001);
3360
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3360, 'GMC', 'Sierra 3500 Crew Cab', 2001);
3361
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3361, 'GMC', 'Sierra 3500 Extended Cab', 2001);
3362
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3362, 'GMC', 'Sierra 3500 Regular Cab', 2001);
3363
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3363, 'GMC', 'Sonoma Crew Cab', 2001);
3364
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3364, 'GMC', 'Sonoma Extended Cab', 2001);
3365
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3365, 'GMC', 'Sonoma Regular Cab', 2001);
3366
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3366, 'GMC', 'Yukon', 2001);
3367
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3367, 'GMC', 'Yukon XL 1500', 2001);
3368
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3368, 'GMC', 'Yukon XL 2500', 2001);
3369
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3369, 'Honda', 'Accord', 2001);
3370
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3370, 'Honda', 'Civic', 2001);
3371
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3371, 'Honda', 'CR-V', 2001);
3372
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3372, 'Honda', 'Insight', 2001);
3373
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3373, 'Honda', 'Odyssey', 2001);
3374
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3374, 'Honda', 'Passport', 2001);
3375
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3375, 'Honda', 'Prelude', 2001);
3376
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3376, 'Honda', 'S2000', 2001);
3377
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3377, 'HUMMER', 'H1', 2001);
3378
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3378, 'Hyundai', 'Accent', 2001);
3379
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3379, 'Hyundai', 'Elantra', 2001);
3380
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3380, 'Hyundai', 'Santa Fe', 2001);
3381
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3381, 'Hyundai', 'Sonata', 2001);
3382
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3382, 'Hyundai', 'Tiburon', 2001);
3383
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3383, 'Hyundai', 'XG300', 2001);
3384
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3384, 'Infiniti', 'G', 2001);
3385
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3385, 'Infiniti', 'I', 2001);
3386
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3386, 'Infiniti', 'Q', 2001);
3387
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3387, 'Infiniti', 'QX', 2001);
3388
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3388, 'Isuzu', 'Rodeo', 2001);
3389
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3389, 'Isuzu', 'Rodeo Sport', 2001);
3390
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3390, 'Isuzu', 'Trooper', 2001);
3391
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3391, 'Isuzu', 'VehiCROSS', 2001);
3392
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3392, 'Jaguar', 'S-Type', 2001);
3393
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3393, 'Jaguar', 'XJ Series', 2001);
3394
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3394, 'Jaguar', 'XK Series', 2001);
3395
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3395, 'Jeep', 'Cherokee', 2001);
3396
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3396, 'Jeep', 'Grand Cherokee', 2001);
3397
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3397, 'Jeep', 'Wrangler', 2001);
3398
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3398, 'Kia', 'Optima', 2001);
3399
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3399, 'Kia', 'Rio', 2001);
3400
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3400, 'Kia', 'Sephia', 2001);
3401
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3401, 'Kia', 'Spectra', 2001);
3402
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3402, 'Kia', 'Sportage', 2001);
3403
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3403, 'Land Rover', 'Discovery Series II', 2001);
3404
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3404, 'Land Rover', 'Range Rover', 2001);
3405
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3405, 'Lexus', 'ES', 2001);
3406
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3406, 'Lexus', 'GS', 2001);
3407
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3407, 'Lexus', 'IS', 2001);
3408
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3408, 'Lexus', 'LS', 2001);
3409
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3409, 'Lexus', 'LX', 2001);
3410
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3410, 'Lexus', 'RX', 2001);
3411
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3411, 'Lincoln', 'Continental', 2001);
3412
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3412, 'Lincoln', 'LS', 2001);
3413
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3413, 'Lincoln', 'Navigator', 2001);
3414
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3414, 'Lincoln', 'Town Car', 2001);
3415
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3415, 'Mazda', '626', 2001);
3416
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3416, 'Mazda', 'B-Series Cab Plus', 2001);
3417
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3417, 'Mazda', 'B-Series Regular Cab', 2001);
3418
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3418, 'Mazda', 'Miata MX-5', 2001);
3419
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3419, 'Mazda', 'Millenia', 2001);
3420
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3420, 'Mazda', 'MPV', 2001);
3421
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3421, 'Mazda', 'Protege', 2001);
3422
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3422, 'Mazda', 'Tribute', 2001);
3423
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3423, 'Mercedes-Benz', 'C-Class', 2001);
3424
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3424, 'Mercedes-Benz', 'CL-Class', 2001);
3425
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3425, 'Mercedes-Benz', 'CLK-Class', 2001);
3426
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3426, 'Mercedes-Benz', 'E-Class', 2001);
3427
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3427, 'Mercedes-Benz', 'M-Class', 2001);
3428
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3428, 'Mercedes-Benz', 'S-Class', 2001);
3429
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3429, 'Mercedes-Benz', 'SL-Class', 2001);
3430
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3430, 'Mercedes-Benz', 'SLK-Class', 2001);
3431
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3431, 'Mercury', 'Cougar', 2001);
3432
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3432, 'Mercury', 'Grand Marquis', 2001);
3433
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3433, 'Mercury', 'Mountaineer', 2001);
3434
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3434, 'Mercury', 'Sable', 2001);
3435
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3435, 'Mercury', 'Villager', 2001);
3436
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3436, 'Mitsubishi', 'Diamante', 2001);
3437
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3437, 'Mitsubishi', 'Eclipse', 2001);
3438
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3438, 'Mitsubishi', 'Galant', 2001);
3439
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3439, 'Mitsubishi', 'Mirage', 2001);
3440
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3440, 'Mitsubishi', 'Montero', 2001);
3441
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3441, 'Mitsubishi', 'Montero Sport', 2001);
3442
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3442, 'Nissan', 'Altima', 2001);
3443
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3443, 'Nissan', 'Frontier Crew Cab', 2001);
3444
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3444, 'Nissan', 'Frontier King Cab', 2001);
3445
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3445, 'Nissan', 'Frontier Regular Cab', 2001);
3446
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3446, 'Nissan', 'Maxima', 2001);
3447
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3447, 'Nissan', 'Pathfinder', 2001);
3448
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3448, 'Nissan', 'Quest', 2001);
3449
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3449, 'Nissan', 'Sentra', 2001);
3450
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3450, 'Nissan', 'Xterra', 2001);
3451
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3451, 'Oldsmobile', 'Alero', 2001);
3452
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3452, 'Oldsmobile', 'Aurora', 2001);
3453
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3453, 'Oldsmobile', 'Bravada', 2001);
3454
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3454, 'Oldsmobile', 'Intrigue', 2001);
3455
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3455, 'Oldsmobile', 'Silhouette', 2001);
3456
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3456, 'Plymouth', 'Neon', 2001);
3457
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3457, 'Pontiac', 'Aztek', 2001);
3458
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3458, 'Pontiac', 'Bonneville', 2001);
3459
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3459, 'Pontiac', 'Firebird', 2001);
3460
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3460, 'Pontiac', 'Grand Am', 2001);
3461
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3461, 'Pontiac', 'Grand Prix', 2001);
3462
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3462, 'Pontiac', 'Montana', 2001);
3463
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3463, 'Pontiac', 'Sunfire', 2001);
3464
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3464, 'Porsche', '911', 2001);
3465
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3465, 'Porsche', 'Boxster', 2001);
3466
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3466, 'Saab', '9-3', 2001);
3467
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3467, 'Saab', '9-5', 2001);
3468
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3468, 'Saturn', 'L-Series', 2001);
3469
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3469, 'Saturn', 'S-Series', 2001);
3470
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3470, 'Subaru', 'Forester', 2001);
3471
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3471, 'Subaru', 'Impreza', 2001);
3472
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3472, 'Subaru', 'Legacy', 2001);
3473
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3473, 'Subaru', 'Outback', 2001);
3474
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3474, 'Suzuki', 'Esteem', 2001);
3475
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3475, 'Suzuki', 'Grand Vitara', 2001);
3476
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3476, 'Suzuki', 'Swift', 2001);
3477
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3477, 'Suzuki', 'Vitara', 2001);
3478
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3478, 'Suzuki', 'XL-7', 2001);
3479
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3479, 'Toyota', '4Runner', 2001);
3480
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3480, 'Toyota', 'Avalon', 2001);
3481
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3481, 'Toyota', 'Camry', 2001);
3482
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3482, 'Toyota', 'Celica', 2001);
3483
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3483, 'Toyota', 'Corolla', 2001);
3484
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3484, 'Toyota', 'Echo', 2001);
3485
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3485, 'Toyota', 'Highlander', 2001);
3486
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3486, 'Toyota', 'Land Cruiser', 2001);
3487
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3487, 'Toyota', 'MR2', 2001);
3488
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3488, 'Toyota', 'Prius', 2001);
3489
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3489, 'Toyota', 'RAV4', 2001);
3490
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3490, 'Toyota', 'Sequoia', 2001);
3491
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3491, 'Toyota', 'Sienna', 2001);
3492
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3492, 'Toyota', 'Solara', 2001);
3493
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3493, 'Toyota', 'Tacoma Double Cab', 2001);
3494
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3494, 'Toyota', 'Tacoma Regular Cab', 2001);
3495
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3495, 'Toyota', 'Tacoma Xtracab', 2001);
3496
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3496, 'Toyota', 'Tundra Access Cab', 2001);
3497
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3497, 'Toyota', 'Tundra Regular Cab', 2001);
3498
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3498, 'Volkswagen', 'Cabrio', 2001);
3499
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3499, 'Volkswagen', 'Eurovan', 2001);
3500
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3500, 'Volkswagen', 'Golf', 2001);
3501
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3501, 'Volkswagen', 'GTI', 2001);
3502
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3502, 'Volkswagen', 'Jetta', 2001);
3503
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3503, 'Volkswagen', 'New Beetle', 2001);
3504
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3504, 'Volkswagen', 'Passat', 2001);
3505
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3505, 'Volkswagen', 'Passat (New)', 2001);
3506
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3506, 'Volvo', 'C70', 2001);
3507
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3507, 'Volvo', 'S40', 2001);
3508
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3508, 'Volvo', 'S60', 2001);
3509
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3509, 'Volvo', 'S80', 2001);
3510
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3510, 'Volvo', 'V40', 2001);
3511
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3511, 'Volvo', 'V70', 2001);
3512
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3512, 'Acura', 'Integra', 2000);
3513
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3513, 'Acura', 'NSX', 2000);
3514
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3514, 'Acura', 'RL', 2000);
3515
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3515, 'Acura', 'TL', 2000);
3516
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3516, 'Audi', 'A4', 2000);
3517
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3517, 'Audi', 'A6', 2000);
3518
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3518, 'Audi', 'A8', 2000);
3519
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3519, 'Audi', 'S4', 2000);
3520
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3520, 'Audi', 'TT', 2000);
3521
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3521, 'BMW', '3 Series', 2000);
3522
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3522, 'BMW', '5 Series', 2000);
3523
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3523, 'BMW', '7 Series', 2000);
3524
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3524, 'BMW', 'M', 2000);
3525
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3525, 'BMW', 'M5', 2000);
3526
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3526, 'BMW', 'X5', 2000);
3527
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3527, 'BMW', 'Z3', 2000);
3528
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3528, 'BMW', 'Z8', 2000);
3529
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3529, 'Buick', 'Century', 2000);
3530
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3530, 'Buick', 'LeSabre', 2000);
3531
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3531, 'Buick', 'Park Avenue', 2000);
3532
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3532, 'Buick', 'Regal', 2000);
3533
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3533, 'Cadillac', 'Catera', 2000);
3534
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3534, 'Cadillac', 'DeVille', 2000);
3535
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3535, 'Cadillac', 'Eldorado', 2000);
3536
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3536, 'Cadillac', 'Escalade', 2000);
3537
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3537, 'Cadillac', 'Seville', 2000);
3538
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3538, 'Chevrolet', '2500 Crew Cab', 2000);
3539
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3539, 'Chevrolet', '2500 HD Extended Cab', 2000);
3540
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3540, 'Chevrolet', '2500 HD Regular Cab', 2000);
3541
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3541, 'Chevrolet', '3500 Crew Cab', 2000);
3542
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3542, 'Chevrolet', '3500 Extended Cab', 2000);
3543
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3543, 'Chevrolet', '3500 Regular Cab', 2000);
3544
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3544, 'Chevrolet', 'Astro Cargo', 2000);
3545
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3545, 'Chevrolet', 'Astro Passenger', 2000);
3546
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3546, 'Chevrolet', 'Blazer', 2000);
3547
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3547, 'Chevrolet', 'Camaro', 2000);
3548
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3548, 'Chevrolet', 'Cavalier', 2000);
3549
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3549, 'Chevrolet', 'Corvette', 2000);
3550
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3550, 'Chevrolet', 'Express 1500 Cargo', 2000);
3551
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3551, 'Chevrolet', 'Express 1500 Passenger', 2000);
3552
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3552, 'Chevrolet', 'Express 2500 Cargo', 2000);
3553
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3553, 'Chevrolet', 'Express 2500 Passenger', 2000);
3554
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3554, 'Chevrolet', 'Express 3500 Cargo', 2000);
3555
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3555, 'Chevrolet', 'Express 3500 Passenger', 2000);
3556
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3556, 'Chevrolet', 'Impala', 2000);
3557
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3557, 'Chevrolet', 'Lumina', 2000);
3558
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3558, 'Chevrolet', 'Malibu', 2000);
3559
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3559, 'Chevrolet', 'Metro', 2000);
3560
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3560, 'Chevrolet', 'Monte Carlo', 2000);
3561
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3561, 'Chevrolet', 'Prizm', 2000);
3562
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3562, 'Chevrolet', 'S10 Extended Cab', 2000);
3563
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3563, 'Chevrolet', 'S10 Regular Cab', 2000);
3564
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3564, 'Chevrolet', 'Silverado 1500 Extended Cab', 2000);
3565
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3565, 'Chevrolet', 'Silverado 1500 Regular Cab', 2000);
3566
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3566, 'Chevrolet', 'Silverado 2500 Extended Cab', 2000);
3567
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3567, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 2000);
3568
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3568, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 2000);
3569
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3569, 'Chevrolet', 'Silverado 2500 Regular Cab', 2000);
3570
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3570, 'Chevrolet', 'Suburban 1500', 2000);
3571
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3571, 'Chevrolet', 'Suburban 2500', 2000);
3572
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3572, 'Chevrolet', 'Tahoe', 2000);
3573
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3573, 'Chevrolet', 'Tahoe (New)', 2000);
3574
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3574, 'Chevrolet', 'Tracker', 2000);
3575
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3575, 'Chevrolet', 'Venture Cargo', 2000);
3576
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3576, 'Chevrolet', 'Venture Passenger', 2000);
3577
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3577, 'Chrysler', '300M', 2000);
3578
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3578, 'Chrysler', 'Cirrus', 2000);
3579
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3579, 'Chrysler', 'Concorde', 2000);
3580
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3580, 'Chrysler', 'Grand Voyager', 2000);
3581
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3581, 'Chrysler', 'LHS', 2000);
3582
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3582, 'Chrysler', 'Sebring', 2000);
3583
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3583, 'Chrysler', 'Town & Country', 2000);
3584
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3584, 'Chrysler', 'Voyager', 2000);
3585
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3585, 'Daewoo', 'Lanos', 2000);
3586
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3586, 'Daewoo', 'Leganza', 2000);
3587
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3587, 'Daewoo', 'Nubira', 2000);
3588
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3588, 'Dodge', 'Avenger', 2000);
3589
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3589, 'Dodge', 'Caravan Passenger', 2000);
3590
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3590, 'Dodge', 'Dakota Club Cab', 2000);
3591
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3591, 'Dodge', 'Dakota Quad Cab', 2000);
3592
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3592, 'Dodge', 'Dakota Regular Cab', 2000);
3593
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3593, 'Dodge', 'Durango', 2000);
3594
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3594, 'Dodge', 'Grand Caravan Passenger', 2000);
3595
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3595, 'Dodge', 'Intrepid', 2000);
3596
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3596, 'Dodge', 'Neon', 2000);
3597
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3597, 'Dodge', 'Ram 1500 Club Cab', 2000);
3598
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3598, 'Dodge', 'Ram 1500 Quad Cab', 2000);
3599
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3599, 'Dodge', 'Ram 1500 Regular Cab', 2000);
3600
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3600, 'Dodge', 'Ram 2500 Quad Cab', 2000);
3601
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3601, 'Dodge', 'Ram 2500 Regular Cab', 2000);
3602
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3602, 'Dodge', 'Ram 3500 Quad Cab', 2000);
3603
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3603, 'Dodge', 'Ram 3500 Regular Cab', 2000);
3604
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3604, 'Dodge', 'Ram Van 1500', 2000);
3605
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3605, 'Dodge', 'Ram Van 2500', 2000);
3606
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3606, 'Dodge', 'Ram Van 3500', 2000);
3607
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3607, 'Dodge', 'Ram Wagon 1500', 2000);
3608
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3608, 'Dodge', 'Ram Wagon 2500', 2000);
3609
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3609, 'Dodge', 'Ram Wagon 3500', 2000);
3610
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3610, 'Dodge', 'Stratus', 2000);
3611
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3611, 'Dodge', 'Viper', 2000);
3612
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3612, 'Ford', 'Contour', 2000);
3613
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3613, 'Ford', 'Crown Victoria', 2000);
3614
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3614, 'Ford', 'Econoline E150 Cargo', 2000);
3615
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3615, 'Ford', 'Econoline E150 Passenger', 2000);
3616
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3616, 'Ford', 'Econoline E250 Cargo', 2000);
3617
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3617, 'Ford', 'Econoline E350 Super Duty Cargo', 2000);
3618
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3618, 'Ford', 'Econoline E350 Super Duty Passenger', 2000);
3619
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3619, 'Ford', 'Escort', 2000);
3620
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3620, 'Ford', 'Excursion', 2000);
3621
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3621, 'Ford', 'Expedition', 2000);
3622
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3622, 'Ford', 'Explorer', 2000);
3623
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3623, 'Ford', 'Explorer Sport', 2000);
3624
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3624, 'Ford', 'F150 Regular Cab', 2000);
3625
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3625, 'Ford', 'F150 Super Cab', 2000);
3626
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3626, 'Ford', 'F250 Super Duty Crew Cab', 2000);
3627
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3627, 'Ford', 'F250 Super Duty Regular Cab', 2000);
3628
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3628, 'Ford', 'F250 Super Duty Super Cab', 2000);
3629
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3629, 'Ford', 'F350 Super Duty Crew Cab', 2000);
3630
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3630, 'Ford', 'F350 Super Duty Regular Cab', 2000);
3631
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3631, 'Ford', 'F350 Super Duty Super Cab', 2000);
3632
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3632, 'Ford', 'Focus', 2000);
3633
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3633, 'Ford', 'Mustang', 2000);
3634
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3634, 'Ford', 'Ranger Regular Cab', 2000);
3635
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3635, 'Ford', 'Ranger Super Cab', 2000);
3636
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3636, 'Ford', 'Taurus', 2000);
3637
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3637, 'Ford', 'Windstar Cargo', 2000);
3638
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3638, 'Ford', 'Windstar Passenger', 2000);
3639
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3639, 'GMC', 'Envoy', 2000);
3640
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3640, 'GMC', 'Jimmy', 2000);
3641
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3641, 'GMC', 'Safari Cargo', 2000);
3642
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3642, 'GMC', 'Safari Passenger', 2000);
3643
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3643, 'GMC', 'Savana 1500 Cargo', 2000);
3644
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3644, 'GMC', 'Savana 1500 Passenger', 2000);
3645
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3645, 'GMC', 'Savana 2500 Cargo', 2000);
3646
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3646, 'GMC', 'Savana 2500 Passenger', 2000);
3647
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3647, 'GMC', 'Savana 3500 Cargo', 2000);
3648
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3648, 'GMC', 'Savana 3500 Passenger', 2000);
3649
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3649, 'GMC', 'Sierra (Classic) 2500 Crew Cab', 2000);
3650
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3650, 'GMC', 'Sierra (Classic) 2500 HD Extended Cab', 2000);
3651
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3651, 'GMC', 'Sierra (Classic) 2500 HD Regular Cab', 2000);
3652
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3652, 'GMC', 'Sierra (Classic) 3500 Crew Cab', 2000);
3653
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3653, 'GMC', 'Sierra (Classic) 3500 Extended Cab', 2000);
3654
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3654, 'GMC', 'Sierra (Classic) 3500 Regular Cab', 2000);
3655
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3655, 'GMC', 'Sierra 1500 Extended Cab', 2000);
3656
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3656, 'GMC', 'Sierra 1500 Regular Cab', 2000);
3657
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3657, 'GMC', 'Sierra 2500 Extended Cab', 2000);
3658
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3658, 'GMC', 'Sierra 2500 HD Extended Cab', 2000);
3659
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3659, 'GMC', 'Sierra 2500 HD Regular Cab', 2000);
3660
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3660, 'GMC', 'Sierra 2500 Regular Cab', 2000);
3661
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3661, 'GMC', 'Sonoma Extended Cab', 2000);
3662
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3662, 'GMC', 'Sonoma Regular Cab', 2000);
3663
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3663, 'GMC', 'Yukon', 2000);
3664
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3664, 'GMC', 'Yukon Denali', 2000);
3665
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3665, 'GMC', 'Yukon XL 1500', 2000);
3666
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3666, 'GMC', 'Yukon XL 2500', 2000);
3667
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3667, 'Honda', 'Accord', 2000);
3668
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3668, 'Honda', 'Civic', 2000);
3669
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3669, 'Honda', 'CR-V', 2000);
3670
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3670, 'Honda', 'Insight', 2000);
3671
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3671, 'Honda', 'Odyssey', 2000);
3672
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3672, 'Honda', 'Passport', 2000);
3673
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3673, 'Honda', 'Prelude', 2000);
3674
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3674, 'Honda', 'S2000', 2000);
3675
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3675, 'HUMMER', 'H1', 2000);
3676
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3676, 'Hyundai', 'Accent', 2000);
3677
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3677, 'Hyundai', 'Elantra', 2000);
3678
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3678, 'Hyundai', 'Sonata', 2000);
3679
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3679, 'Hyundai', 'Tiburon', 2000);
3680
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3680, 'Infiniti', 'G', 2000);
3681
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3681, 'Infiniti', 'I', 2000);
3682
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3682, 'Infiniti', 'Q', 2000);
3683
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3683, 'Infiniti', 'QX', 2000);
3684
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3684, 'Isuzu', 'Amigo', 2000);
3685
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3685, 'Isuzu', 'Hombre Regular Cab', 2000);
3686
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3686, 'Isuzu', 'Hombre Spacecab', 2000);
3687
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3687, 'Isuzu', 'Rodeo', 2000);
3688
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3688, 'Isuzu', 'Trooper', 2000);
3689
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3689, 'Isuzu', 'VehiCROSS', 2000);
3690
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3690, 'Jaguar', 'S-Type', 2000);
3691
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3691, 'Jaguar', 'XJ Series', 2000);
3692
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3692, 'Jaguar', 'XK Series', 2000);
3693
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3693, 'Jeep', 'Cherokee', 2000);
3694
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3694, 'Jeep', 'Grand Cherokee', 2000);
3695
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3695, 'Jeep', 'Wrangler', 2000);
3696
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3696, 'Kia', 'Sephia', 2000);
3697
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3697, 'Kia', 'Spectra', 2000);
3698
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3698, 'Kia', 'Sportage', 2000);
3699
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3699, 'Land Rover', 'Discovery Series II', 2000);
3700
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3700, 'Land Rover', 'Range Rover', 2000);
3701
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3701, 'Lexus', 'ES', 2000);
3702
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3702, 'Lexus', 'GS', 2000);
3703
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3703, 'Lexus', 'LS', 2000);
3704
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3704, 'Lexus', 'LX', 2000);
3705
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3705, 'Lexus', 'RX', 2000);
3706
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3706, 'Lexus', 'SC', 2000);
3707
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3707, 'Lincoln', 'Continental', 2000);
3708
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3708, 'Lincoln', 'LS', 2000);
3709
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3709, 'Lincoln', 'Navigator', 2000);
3710
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3710, 'Lincoln', 'Town Car', 2000);
3711
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3711, 'Mazda', '626', 2000);
3712
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3712, 'Mazda', 'B-Series Cab Plus', 2000);
3713
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3713, 'Mazda', 'B-Series Regular Cab', 2000);
3714
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3714, 'Mazda', 'Miata MX-5', 2000);
3715
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3715, 'Mazda', 'Millenia', 2000);
3716
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3716, 'Mazda', 'MPV', 2000);
3717
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3717, 'Mazda', 'Protege', 2000);
3718
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3718, 'Mercedes-Benz', 'C-Class', 2000);
3719
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3719, 'Mercedes-Benz', 'CL-Class', 2000);
3720
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3720, 'Mercedes-Benz', 'CLK-Class', 2000);
3721
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3721, 'Mercedes-Benz', 'E-Class', 2000);
3722
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3722, 'Mercedes-Benz', 'M-Class', 2000);
3723
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3723, 'Mercedes-Benz', 'S-Class', 2000);
3724
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3724, 'Mercedes-Benz', 'SL-Class', 2000);
3725
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3725, 'Mercedes-Benz', 'SLK-Class', 2000);
3726
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3726, 'Mercury', 'Cougar', 2000);
3727
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3727, 'Mercury', 'Grand Marquis', 2000);
3728
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3728, 'Mercury', 'Mountaineer', 2000);
3729
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3729, 'Mercury', 'Mystique', 2000);
3730
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3730, 'Mercury', 'Sable', 2000);
3731
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3731, 'Mercury', 'Villager', 2000);
3732
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3732, 'Mitsubishi', 'Diamante', 2000);
3733
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3733, 'Mitsubishi', 'Eclipse', 2000);
3734
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3734, 'Mitsubishi', 'Galant', 2000);
3735
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3735, 'Mitsubishi', 'Mirage', 2000);
3736
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3736, 'Mitsubishi', 'Montero', 2000);
3737
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3737, 'Mitsubishi', 'Montero Sport', 2000);
3738
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3738, 'Nissan', 'Altima', 2000);
3739
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3739, 'Nissan', 'Frontier Crew Cab', 2000);
3740
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3740, 'Nissan', 'Frontier King Cab', 2000);
3741
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3741, 'Nissan', 'Frontier Regular Cab', 2000);
3742
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3742, 'Nissan', 'Maxima', 2000);
3743
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3743, 'Nissan', 'Pathfinder', 2000);
3744
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3744, 'Nissan', 'Quest', 2000);
3745
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3745, 'Nissan', 'Sentra', 2000);
3746
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3746, 'Nissan', 'Xterra', 2000);
3747
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3747, 'Oldsmobile', 'Alero', 2000);
3748
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3748, 'Oldsmobile', 'Bravada', 2000);
3749
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3749, 'Oldsmobile', 'Intrigue', 2000);
3750
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3750, 'Oldsmobile', 'Silhouette', 2000);
3751
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3751, 'Plymouth', 'Breeze', 2000);
3752
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3752, 'Plymouth', 'Grand Voyager', 2000);
3753
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3753, 'Plymouth', 'Neon', 2000);
3754
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3754, 'Plymouth', 'Prowler', 2000);
3755
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3755, 'Plymouth', 'Voyager', 2000);
3756
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3756, 'Pontiac', 'Bonneville', 2000);
3757
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3757, 'Pontiac', 'Firebird', 2000);
3758
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3758, 'Pontiac', 'Grand Am', 2000);
3759
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3759, 'Pontiac', 'Grand Prix', 2000);
3760
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3760, 'Pontiac', 'Montana', 2000);
3761
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3761, 'Pontiac', 'Sunfire', 2000);
3762
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3762, 'Porsche', '911', 2000);
3763
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3763, 'Porsche', 'Boxster', 2000);
3764
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3764, 'Saab', '9-3', 2000);
3765
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3765, 'Saab', '9-5', 2000);
3766
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3766, 'Saturn', 'L-Series', 2000);
3767
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3767, 'Saturn', 'S-Series', 2000);
3768
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3768, 'Subaru', 'Forester', 2000);
3769
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3769, 'Subaru', 'Impreza', 2000);
3770
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3770, 'Subaru', 'Legacy', 2000);
3771
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3771, 'Subaru', 'Outback', 2000);
3772
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3772, 'Suzuki', 'Esteem', 2000);
3773
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3773, 'Suzuki', 'Grand Vitara', 2000);
3774
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3774, 'Suzuki', 'Swift', 2000);
3775
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3775, 'Suzuki', 'Vitara', 2000);
3776
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3776, 'Toyota', '4Runner', 2000);
3777
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3777, 'Toyota', 'Avalon', 2000);
3778
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3778, 'Toyota', 'Camry', 2000);
3779
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3779, 'Toyota', 'Celica', 2000);
3780
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3780, 'Toyota', 'Corolla', 2000);
3781
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3781, 'Toyota', 'Echo', 2000);
3782
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3782, 'Toyota', 'Land Cruiser', 2000);
3783
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3783, 'Toyota', 'MR2', 2000);
3784
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3784, 'Toyota', 'RAV4', 2000);
3785
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3785, 'Toyota', 'Sienna', 2000);
3786
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3786, 'Toyota', 'Solara', 2000);
3787
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3787, 'Toyota', 'Tacoma Regular Cab', 2000);
3788
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3788, 'Toyota', 'Tacoma Xtracab', 2000);
3789
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3789, 'Toyota', 'Tundra Access Cab', 2000);
3790
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3790, 'Toyota', 'Tundra Regular Cab', 2000);
3791
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3791, 'Volkswagen', 'Cabrio', 2000);
3792
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3792, 'Volkswagen', 'Eurovan', 2000);
3793
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3793, 'Volkswagen', 'Golf', 2000);
3794
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3794, 'Volkswagen', 'GTI', 2000);
3795
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3795, 'Volkswagen', 'Jetta', 2000);
3796
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3796, 'Volkswagen', 'New Beetle', 2000);
3797
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3797, 'Volkswagen', 'Passat', 2000);
3798
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3798, 'Volvo', 'C70', 2000);
3799
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3799, 'Volvo', 'S40', 2000);
3800
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3800, 'Volvo', 'S70', 2000);
3801
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3801, 'Volvo', 'S80', 2000);
3802
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3802, 'Volvo', 'V40', 2000);
3803
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3803, 'Volvo', 'V70', 2000);
3804
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3804, 'Acura', 'CL', 1999);
3805
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3805, 'Acura', 'Integra', 1999);
3806
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3806, 'Acura', 'NSX', 1999);
3807
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3807, 'Acura', 'RL', 1999);
3808
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3808, 'Acura', 'SLX', 1999);
3809
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3809, 'Acura', 'TL', 1999);
3810
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3810, 'Audi', 'A4', 1999);
3811
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3811, 'Audi', 'A6', 1999);
3812
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3812, 'Audi', 'A8', 1999);
3813
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3813, 'BMW', '3 Series', 1999);
3814
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3814, 'BMW', '5 Series', 1999);
3815
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3815, 'BMW', '7 Series', 1999);
3816
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3816, 'BMW', 'M3', 1999);
3817
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3817, 'BMW', 'Z3', 1999);
3818
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3818, 'Buick', 'Century', 1999);
3819
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3819, 'Buick', 'LeSabre', 1999);
3820
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3820, 'Buick', 'Park Avenue', 1999);
3821
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3821, 'Buick', 'Regal', 1999);
3822
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3822, 'Buick', 'Riviera', 1999);
3823
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3823, 'Cadillac', 'Catera', 1999);
3824
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3824, 'Cadillac', 'DeVille', 1999);
3825
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3825, 'Cadillac', 'Eldorado', 1999);
3826
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3826, 'Cadillac', 'Escalade', 1999);
3827
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3827, 'Cadillac', 'Seville', 1999);
3828
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3828, 'Chevrolet', '1500 Extended Cab', 1999);
3829
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3829, 'Chevrolet', '2500 Crew Cab', 1999);
3830
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3830, 'Chevrolet', '2500 HD Extended Cab', 1999);
3831
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3831, 'Chevrolet', '2500 HD Regular Cab', 1999);
3832
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3832, 'Chevrolet', '3500 Crew Cab', 1999);
3833
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3833, 'Chevrolet', '3500 Extended Cab', 1999);
3834
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3834, 'Chevrolet', '3500 Regular Cab', 1999);
3835
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3835, 'Chevrolet', 'Astro Cargo', 1999);
3836
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3836, 'Chevrolet', 'Astro Passenger', 1999);
3837
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3837, 'Chevrolet', 'Blazer', 1999);
3838
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3838, 'Chevrolet', 'Camaro', 1999);
3839
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3839, 'Chevrolet', 'Cavalier', 1999);
3840
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3840, 'Chevrolet', 'Corvette', 1999);
3841
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3841, 'Chevrolet', 'Express 1500 Cargo', 1999);
3842
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3842, 'Chevrolet', 'Express 1500 Passenger', 1999);
3843
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3843, 'Chevrolet', 'Express 2500 Cargo', 1999);
3844
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3844, 'Chevrolet', 'Express 2500 Passenger', 1999);
3845
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3845, 'Chevrolet', 'Express 3500 Cargo', 1999);
3846
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3846, 'Chevrolet', 'Express 3500 Passenger', 1999);
3847
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3847, 'Chevrolet', 'Lumina', 1999);
3848
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3848, 'Chevrolet', 'Malibu', 1999);
3849
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3849, 'Chevrolet', 'Metro', 1999);
3850
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3850, 'Chevrolet', 'Monte Carlo', 1999);
3851
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3851, 'Chevrolet', 'Prizm', 1999);
3852
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3852, 'Chevrolet', 'S10 Extended Cab', 1999);
3853
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3853, 'Chevrolet', 'S10 Regular Cab', 1999);
3854
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3854, 'Chevrolet', 'Silverado 1500 Extended Cab', 1999);
3855
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3855, 'Chevrolet', 'Silverado 1500 Regular Cab', 1999);
3856
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3856, 'Chevrolet', 'Silverado 2500 Extended Cab', 1999);
3857
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3857, 'Chevrolet', 'Silverado 2500 HD Extended Cab', 1999);
3858
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3858, 'Chevrolet', 'Silverado 2500 HD Regular Cab', 1999);
3859
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3859, 'Chevrolet', 'Silverado 2500 Regular Cab', 1999);
3860
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3860, 'Chevrolet', 'Suburban 1500', 1999);
3861
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3861, 'Chevrolet', 'Suburban 2500', 1999);
3862
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3862, 'Chevrolet', 'Tahoe', 1999);
3863
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3863, 'Chevrolet', 'Tracker', 1999);
3864
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3864, 'Chevrolet', 'Venture Cargo', 1999);
3865
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3865, 'Chevrolet', 'Venture Passenger', 1999);
3866
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3866, 'Chrysler', '300', 1999);
3867
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3867, 'Chrysler', 'Cirrus', 1999);
3868
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3868, 'Chrysler', 'Concorde', 1999);
3869
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3869, 'Chrysler', 'LHS', 1999);
3870
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3870, 'Chrysler', 'Sebring', 1999);
3871
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3871, 'Chrysler', 'Town & Country', 1999);
3872
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3872, 'Daewoo', 'Lanos', 1999);
3873
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3873, 'Daewoo', 'Leganza', 1999);
3874
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3874, 'Daewoo', 'Nubira', 1999);
3875
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3875, 'Dodge', 'Avenger', 1999);
3876
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3876, 'Dodge', 'Caravan Passenger', 1999);
3877
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3877, 'Dodge', 'Dakota Club Cab', 1999);
3878
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3878, 'Dodge', 'Dakota Regular Cab', 1999);
3879
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3879, 'Dodge', 'Durango', 1999);
3880
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3880, 'Dodge', 'Grand Caravan Passenger', 1999);
3881
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3881, 'Dodge', 'Intrepid', 1999);
3882
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3882, 'Dodge', 'Neon', 1999);
3883
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3883, 'Dodge', 'Ram 1500 Club Cab', 1999);
3884
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3884, 'Dodge', 'Ram 1500 Quad Cab', 1999);
3885
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3885, 'Dodge', 'Ram 1500 Regular Cab', 1999);
3886
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3886, 'Dodge', 'Ram 2500 Club Cab', 1999);
3887
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3887, 'Dodge', 'Ram 2500 Quad Cab', 1999);
3888
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3888, 'Dodge', 'Ram 2500 Regular Cab', 1999);
3889
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3889, 'Dodge', 'Ram 3500 Quad Cab', 1999);
3890
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3890, 'Dodge', 'Ram 3500 Regular Cab', 1999);
3891
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3891, 'Dodge', 'Ram Van 1500', 1999);
3892
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3892, 'Dodge', 'Ram Van 2500', 1999);
3893
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3893, 'Dodge', 'Ram Van 3500', 1999);
3894
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3894, 'Dodge', 'Ram Wagon 1500', 1999);
3895
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3895, 'Dodge', 'Ram Wagon 2500', 1999);
3896
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3896, 'Dodge', 'Ram Wagon 3500', 1999);
3897
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3897, 'Dodge', 'Stratus', 1999);
3898
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3898, 'Dodge', 'Viper', 1999);
3899
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3899, 'Ford', 'Contour', 1999);
3900
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3900, 'Ford', 'Crown Victoria', 1999);
3901
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3901, 'Ford', 'Econoline E150 Cargo', 1999);
3902
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3902, 'Ford', 'Econoline E150 Passenger', 1999);
3903
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3903, 'Ford', 'Econoline E250 Cargo', 1999);
3904
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3904, 'Ford', 'Econoline E350 Cargo', 1999);
3905
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3905, 'Ford', 'Econoline E350 Super Duty Cargo', 1999);
3906
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3906, 'Ford', 'Econoline E350 Super Duty Passenger', 1999);
3907
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3907, 'Ford', 'Escort', 1999);
3908
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3908, 'Ford', 'Expedition', 1999);
3909
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3909, 'Ford', 'Explorer', 1999);
3910
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3910, 'Ford', 'F150 Regular Cab', 1999);
3911
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3911, 'Ford', 'F150 Super Cab', 1999);
3912
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3912, 'Ford', 'F250 Regular Cab', 1999);
3913
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3913, 'Ford', 'F250 Super Cab', 1999);
3914
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3914, 'Ford', 'F250 Super Duty Crew Cab', 1999);
3915
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3915, 'Ford', 'F250 Super Duty Regular Cab', 1999);
3916
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3916, 'Ford', 'F250 Super Duty Super Cab', 1999);
3917
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3917, 'Ford', 'F350 Super Duty Crew Cab', 1999);
3918
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3918, 'Ford', 'F350 Super Duty Regular Cab', 1999);
3919
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3919, 'Ford', 'F350 Super Duty Super Cab', 1999);
3920
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3920, 'Ford', 'Mustang', 1999);
3921
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3921, 'Ford', 'Ranger Regular Cab', 1999);
3922
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3922, 'Ford', 'Ranger Super Cab', 1999);
3923
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3923, 'Ford', 'Taurus', 1999);
3924
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3924, 'Ford', 'Windstar Cargo', 1999);
3925
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3925, 'Ford', 'Windstar Passenger', 1999);
3926
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3926, 'GMC', '1500 Club Coupe', 1999);
3927
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3927, 'GMC', '2500 Crew Cab', 1999);
3928
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3928, 'GMC', '2500 HD Extended Cab', 1999);
3929
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3929, 'GMC', '2500 HD Regular Cab', 1999);
3930
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3930, 'GMC', '3500 Crew Cab', 1999);
3931
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3931, 'GMC', '3500 Extended Cab', 1999);
3932
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3932, 'GMC', '3500 Regular Cab', 1999);
3933
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3933, 'GMC', 'Envoy', 1999);
3934
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3934, 'GMC', 'Jimmy', 1999);
3935
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3935, 'GMC', 'Safari Cargo', 1999);
3936
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3936, 'GMC', 'Safari Passenger', 1999);
3937
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3937, 'GMC', 'Savana 1500 Cargo', 1999);
3938
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3938, 'GMC', 'Savana 1500 Passenger', 1999);
3939
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3939, 'GMC', 'Savana 2500 Cargo', 1999);
3940
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3940, 'GMC', 'Savana 2500 Passenger', 1999);
3941
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3941, 'GMC', 'Savana 3500 Cargo', 1999);
3942
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3942, 'GMC', 'Savana 3500 Passenger', 1999);
3943
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3943, 'GMC', 'Sierra 1500 Extended Cab', 1999);
3944
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3944, 'GMC', 'Sierra 1500 Regular Cab', 1999);
3945
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3945, 'GMC', 'Sierra 2500 Extended Cab', 1999);
3946
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3946, 'GMC', 'Sierra 2500 HD Extended Cab', 1999);
3947
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3947, 'GMC', 'Sierra 2500 HD Regular Cab', 1999);
3948
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3948, 'GMC', 'Sierra 2500 Regular Cab', 1999);
3949
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3949, 'GMC', 'Sonoma Extended Cab', 1999);
3950
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3950, 'GMC', 'Sonoma Regular Cab', 1999);
3951
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3951, 'GMC', 'Suburban 1500', 1999);
3952
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3952, 'GMC', 'Suburban 2500', 1999);
3953
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3953, 'GMC', 'Yukon', 1999);
3954
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3954, 'Honda', 'Accord', 1999);
3955
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3955, 'Honda', 'Civic', 1999);
3956
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3956, 'Honda', 'CR-V', 1999);
3957
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3957, 'Honda', 'Odyssey', 1999);
3958
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3958, 'Honda', 'Passport', 1999);
3959
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3959, 'Honda', 'Prelude', 1999);
3960
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3960, 'HUMMER', 'H1', 1999);
3961
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3961, 'Hyundai', 'Accent', 1999);
3962
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3962, 'Hyundai', 'Elantra', 1999);
3963
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3963, 'Hyundai', 'Sonata', 1999);
3964
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3964, 'Hyundai', 'Tiburon', 1999);
3965
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3965, 'Infiniti', 'G', 1999);
3966
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3966, 'Infiniti', 'I', 1999);
3967
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3967, 'Infiniti', 'Q', 1999);
3968
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3968, 'Infiniti', 'QX', 1999);
3969
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3969, 'Isuzu', 'Amigo', 1999);
3970
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3970, 'Isuzu', 'Hombre Regular Cab', 1999);
3971
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3971, 'Isuzu', 'Hombre Spacecab', 1999);
3972
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3972, 'Isuzu', 'Oasis', 1999);
3973
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3973, 'Isuzu', 'Rodeo', 1999);
3974
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3974, 'Isuzu', 'Trooper', 1999);
3975
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3975, 'Isuzu', 'VehiCROSS', 1999);
3976
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3976, 'Jaguar', 'XJ Series', 1999);
3977
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3977, 'Jaguar', 'XK Series', 1999);
3978
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3978, 'Jeep', 'Cherokee', 1999);
3979
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3979, 'Jeep', 'Grand Cherokee', 1999);
3980
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3980, 'Jeep', 'Wrangler', 1999);
3981
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3981, 'Kia', 'Sephia', 1999);
3982
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3982, 'Kia', 'Sportage', 1999);
3983
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3983, 'Land Rover', 'Discovery', 1999);
3984
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3984, 'Land Rover', 'Discovery Series II', 1999);
3985
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3985, 'Land Rover', 'Range Rover', 1999);
3986
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3986, 'Lexus', 'ES', 1999);
3987
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3987, 'Lexus', 'GS', 1999);
3988
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3988, 'Lexus', 'LS', 1999);
3989
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3989, 'Lexus', 'LX', 1999);
3990
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3990, 'Lexus', 'RX', 1999);
3991
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3991, 'Lexus', 'SC', 1999);
3992
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3992, 'Lincoln', 'Continental', 1999);
3993
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3993, 'Lincoln', 'Navigator', 1999);
3994
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3994, 'Lincoln', 'Town Car', 1999);
3995
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3995, 'Mazda', '626', 1999);
3996
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3996, 'Mazda', 'B-Series Cab Plus', 1999);
3997
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3997, 'Mazda', 'B-Series Regular Cab', 1999);
3998
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3998, 'Mazda', 'Miata MX-5', 1999);
3999
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (3999, 'Mazda', 'Millenia', 1999);
4000
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4000, 'Mazda', 'Protege', 1999);
4001
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4001, 'Mercedes-Benz', 'C-Class', 1999);
4002
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4002, 'Mercedes-Benz', 'CL-Class', 1999);
4003
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4003, 'Mercedes-Benz', 'CLK-Class', 1999);
4004
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4004, 'Mercedes-Benz', 'E-Class', 1999);
4005
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4005, 'Mercedes-Benz', 'M-Class', 1999);
4006
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4006, 'Mercedes-Benz', 'S-Class', 1999);
4007
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4007, 'Mercedes-Benz', 'SL-Class', 1999);
4008
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4008, 'Mercedes-Benz', 'SLK-Class', 1999);
4009
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4009, 'Mercury', 'Cougar', 1999);
4010
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4010, 'Mercury', 'Grand Marquis', 1999);
4011
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4011, 'Mercury', 'Mountaineer', 1999);
4012
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4012, 'Mercury', 'Mystique', 1999);
4013
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4013, 'Mercury', 'Sable', 1999);
4014
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4014, 'Mercury', 'Tracer', 1999);
4015
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4015, 'Mercury', 'Villager', 1999);
4016
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4016, 'Mitsubishi', '3000GT', 1999);
4017
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4017, 'Mitsubishi', 'Diamante', 1999);
4018
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4018, 'Mitsubishi', 'Eclipse', 1999);
4019
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4019, 'Mitsubishi', 'Galant', 1999);
4020
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4020, 'Mitsubishi', 'Mirage', 1999);
4021
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4021, 'Mitsubishi', 'Montero', 1999);
4022
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4022, 'Mitsubishi', 'Montero Sport', 1999);
4023
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4023, 'Nissan', 'Altima', 1999);
4024
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4024, 'Nissan', 'Frontier King Cab', 1999);
4025
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4025, 'Nissan', 'Frontier Regular Cab', 1999);
4026
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4026, 'Nissan', 'Maxima', 1999);
4027
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4027, 'Nissan', 'Pathfinder', 1999);
4028
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4028, 'Nissan', 'Quest', 1999);
4029
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4029, 'Nissan', 'Sentra', 1999);
4030
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4030, 'Oldsmobile', '88', 1999);
4031
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4031, 'Oldsmobile', 'Alero', 1999);
4032
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4032, 'Oldsmobile', 'Aurora', 1999);
4033
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4033, 'Oldsmobile', 'Bravada', 1999);
4034
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4034, 'Oldsmobile', 'Cutlass', 1999);
4035
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4035, 'Oldsmobile', 'Intrigue', 1999);
4036
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4036, 'Oldsmobile', 'LSS', 1999);
4037
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4037, 'Oldsmobile', 'Silhouette', 1999);
4038
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4038, 'Plymouth', 'Breeze', 1999);
4039
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4039, 'Plymouth', 'Grand Voyager', 1999);
4040
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4040, 'Plymouth', 'Neon', 1999);
4041
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4041, 'Plymouth', 'Prowler', 1999);
4042
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4042, 'Plymouth', 'Voyager', 1999);
4043
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4043, 'Pontiac', 'Bonneville', 1999);
4044
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4044, 'Pontiac', 'Firebird', 1999);
4045
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4045, 'Pontiac', 'Grand Am', 1999);
4046
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4046, 'Pontiac', 'Grand Prix', 1999);
4047
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4047, 'Pontiac', 'Montana', 1999);
4048
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4048, 'Pontiac', 'Sunfire', 1999);
4049
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4049, 'Porsche', '911', 1999);
4050
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4050, 'Porsche', 'Boxster', 1999);
4051
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4051, 'Saab', '9-3', 1999);
4052
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4052, 'Saab', '9-5', 1999);
4053
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4053, 'Saturn', 'S-Series', 1999);
4054
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4054, 'Subaru', 'Forester', 1999);
4055
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4055, 'Subaru', 'Impreza', 1999);
4056
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4056, 'Subaru', 'Legacy', 1999);
4057
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4057, 'Suzuki', 'Esteem', 1999);
4058
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4058, 'Suzuki', 'Grand Vitara', 1999);
4059
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4059, 'Suzuki', 'Swift', 1999);
4060
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4060, 'Suzuki', 'Vitara', 1999);
4061
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4061, 'Toyota', '4Runner', 1999);
4062
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4062, 'Toyota', 'Avalon', 1999);
4063
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4063, 'Toyota', 'Camry', 1999);
4064
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4064, 'Toyota', 'Celica', 1999);
4065
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4065, 'Toyota', 'Corolla', 1999);
4066
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4066, 'Toyota', 'Land Cruiser', 1999);
4067
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4067, 'Toyota', 'RAV4', 1999);
4068
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4068, 'Toyota', 'Sienna', 1999);
4069
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4069, 'Toyota', 'Solara', 1999);
4070
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4070, 'Toyota', 'Tacoma Regular Cab', 1999);
4071
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4071, 'Toyota', 'Tacoma Xtracab', 1999);
4072
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4072, 'Volkswagen', 'Cabrio', 1999);
4073
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4073, 'Volkswagen', 'Cabrio (New)', 1999);
4074
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4074, 'Volkswagen', 'Eurovan', 1999);
4075
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4075, 'Volkswagen', 'Golf', 1999);
4076
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4076, 'Volkswagen', 'Golf (New)', 1999);
4077
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4077, 'Volkswagen', 'GTI (New)', 1999);
4078
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4078, 'Volkswagen', 'Jetta', 1999);
4079
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4079, 'Volkswagen', 'Jetta (New)', 1999);
4080
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4080, 'Volkswagen', 'New Beetle', 1999);
4081
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4081, 'Volkswagen', 'Passat', 1999);
4082
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4082, 'Volvo', 'C70', 1999);
4083
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4083, 'Volvo', 'S70', 1999);
4084
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4084, 'Volvo', 'S80', 1999);
4085
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4085, 'Volvo', 'V70', 1999);
4086
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4086, 'Acura', 'CL', 1998);
4087
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4087, 'Acura', 'Integra', 1998);
4088
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4088, 'Acura', 'NSX', 1998);
4089
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4089, 'Acura', 'RL', 1998);
4090
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4090, 'Acura', 'SLX', 1998);
4091
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4091, 'Acura', 'TL', 1998);
4092
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4092, 'Audi', 'A4', 1998);
4093
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4093, 'Audi', 'A6', 1998);
4094
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4094, 'Audi', 'A8', 1998);
4095
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4095, 'Audi', 'Cabriolet', 1998);
4096
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4096, 'BMW', '3 Series', 1998);
4097
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4097, 'BMW', '5 Series', 1998);
4098
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4098, 'BMW', '7 Series', 1998);
4099
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4099, 'BMW', 'M3', 1998);
4100
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4100, 'BMW', 'Z3', 1998);
4101
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4101, 'Buick', 'Century', 1998);
4102
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4102, 'Buick', 'LeSabre', 1998);
4103
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4103, 'Buick', 'Park Avenue', 1998);
4104
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4104, 'Buick', 'Regal', 1998);
4105
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4105, 'Buick', 'Riviera', 1998);
4106
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4106, 'Buick', 'Skylark', 1998);
4107
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4107, 'Cadillac', 'Catera', 1998);
4108
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4108, 'Cadillac', 'DeVille', 1998);
4109
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4109, 'Cadillac', 'Eldorado', 1998);
4110
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4110, 'Cadillac', 'Seville', 1998);
4111
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4111, 'Chevrolet', '1500 Extended Cab', 1998);
4112
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4112, 'Chevrolet', '1500 Regular Cab', 1998);
4113
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4113, 'Chevrolet', '2500 Extended Cab', 1998);
4114
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4114, 'Chevrolet', '2500 HD Extended Cab', 1998);
4115
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4115, 'Chevrolet', '2500 Regular Cab', 1998);
4116
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4116, 'Chevrolet', '3500 Crew Cab', 1998);
4117
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4117, 'Chevrolet', '3500 Extended Cab', 1998);
4118
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4118, 'Chevrolet', '3500 Regular Cab', 1998);
4119
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4119, 'Chevrolet', 'Astro Cargo', 1998);
4120
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4120, 'Chevrolet', 'Astro Passenger', 1998);
4121
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4121, 'Chevrolet', 'Blazer', 1998);
4122
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4122, 'Chevrolet', 'Camaro', 1998);
4123
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4123, 'Chevrolet', 'Cavalier', 1998);
4124
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4124, 'Chevrolet', 'Corvette', 1998);
4125
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4125, 'Chevrolet', 'Express 1500 Passenger', 1998);
4126
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4126, 'Chevrolet', 'Express 2500 Passenger', 1998);
4127
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4127, 'Chevrolet', 'Express 3500 Passenger', 1998);
4128
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4128, 'Chevrolet', 'G-Series 1500', 1998);
4129
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4129, 'Chevrolet', 'G-Series 2500', 1998);
4130
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4130, 'Chevrolet', 'G-Series 3500', 1998);
4131
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4131, 'Chevrolet', 'Lumina', 1998);
4132
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4132, 'Chevrolet', 'Malibu', 1998);
4133
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4133, 'Chevrolet', 'Metro', 1998);
4134
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4134, 'Chevrolet', 'Monte Carlo', 1998);
4135
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4135, 'Chevrolet', 'Prizm', 1998);
4136
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4136, 'Chevrolet', 'S10 Extended Cab', 1998);
4137
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4137, 'Chevrolet', 'S10 Regular Cab', 1998);
4138
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4138, 'Chevrolet', 'Suburban 1500', 1998);
4139
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4139, 'Chevrolet', 'Suburban 2500', 1998);
4140
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4140, 'Chevrolet', 'Tahoe', 1998);
4141
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4141, 'Chevrolet', 'Tracker', 1998);
4142
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4142, 'Chevrolet', 'Venture Cargo', 1998);
4143
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4143, 'Chevrolet', 'Venture Passenger', 1998);
4144
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4144, 'Chrysler', 'Cirrus', 1998);
4145
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4145, 'Chrysler', 'Concorde', 1998);
4146
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4146, 'Chrysler', 'Sebring', 1998);
4147
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4147, 'Chrysler', 'Town & Country', 1998);
4148
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4148, 'Dodge', 'Avenger', 1998);
4149
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4149, 'Dodge', 'Caravan Passenger', 1998);
4150
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4150, 'Dodge', 'Dakota Club Cab', 1998);
4151
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4151, 'Dodge', 'Dakota Regular Cab', 1998);
4152
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4152, 'Dodge', 'Durango', 1998);
4153
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4153, 'Dodge', 'Grand Caravan Passenger', 1998);
4154
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4154, 'Dodge', 'Intrepid', 1998);
4155
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4155, 'Dodge', 'Neon', 1998);
4156
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4156, 'Dodge', 'Ram 1500 Club Cab', 1998);
4157
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4157, 'Dodge', 'Ram 1500 Quad Cab', 1998);
4158
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4158, 'Dodge', 'Ram 1500 Regular Cab', 1998);
4159
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4159, 'Dodge', 'Ram 2500 Club Cab', 1998);
4160
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4160, 'Dodge', 'Ram 2500 Quad Cab', 1998);
4161
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4161, 'Dodge', 'Ram 2500 Regular Cab', 1998);
4162
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4162, 'Dodge', 'Ram 3500 Quad Cab', 1998);
4163
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4163, 'Dodge', 'Ram 3500 Regular Cab', 1998);
4164
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4164, 'Dodge', 'Ram Van 1500', 1998);
4165
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4165, 'Dodge', 'Ram Van 2500', 1998);
4166
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4166, 'Dodge', 'Ram Van 3500', 1998);
4167
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4167, 'Dodge', 'Ram Wagon 1500', 1998);
4168
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4168, 'Dodge', 'Ram Wagon 2500', 1998);
4169
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4169, 'Dodge', 'Ram Wagon 3500', 1998);
4170
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4170, 'Dodge', 'Stratus', 1998);
4171
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4171, 'Dodge', 'Viper', 1998);
4172
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4172, 'Eagle', 'Talon', 1998);
4173
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4173, 'Ford', 'Club Wagon', 1998);
4174
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4174, 'Ford', 'Contour', 1998);
4175
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4175, 'Ford', 'Crown Victoria', 1998);
4176
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4176, 'Ford', 'Econoline E150 Cargo', 1998);
4177
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4177, 'Ford', 'Econoline E250 Cargo', 1998);
4178
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4178, 'Ford', 'Econoline E350 Cargo', 1998);
4179
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4179, 'Ford', 'Escort', 1998);
4180
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4180, 'Ford', 'Expedition', 1998);
4181
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4181, 'Ford', 'Explorer', 1998);
4182
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4182, 'Ford', 'F150 Regular Cab', 1998);
4183
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4183, 'Ford', 'F150 Super Cab', 1998);
4184
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4184, 'Ford', 'F250 Regular Cab', 1998);
4185
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4185, 'Ford', 'F250 Super Cab', 1998);
4186
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4186, 'Ford', 'Mustang', 1998);
4187
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4187, 'Ford', 'Ranger Regular Cab', 1998);
4188
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4188, 'Ford', 'Ranger Super Cab', 1998);
4189
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4189, 'Ford', 'Taurus', 1998);
4190
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4190, 'Ford', 'Windstar Cargo', 1998);
4191
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4191, 'Ford', 'Windstar Passenger', 1998);
4192
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4192, 'GMC', '1500 Club Coupe', 1998);
4193
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4193, 'GMC', '1500 Regular Cab', 1998);
4194
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4194, 'GMC', '2500 Club Coupe', 1998);
4195
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4195, 'GMC', '2500 HD Club Coupe', 1998);
4196
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4196, 'GMC', '2500 Regular Cab', 1998);
4197
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4197, 'GMC', '3500 Club Coupe', 1998);
4198
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4198, 'GMC', '3500 Crew Cab', 1998);
4199
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4199, 'GMC', '3500 Regular Cab', 1998);
4200
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4200, 'GMC', 'Envoy', 1998);
4201
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4201, 'GMC', 'Jimmy', 1998);
4202
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4202, 'GMC', 'Safari Cargo', 1998);
4203
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4203, 'GMC', 'Safari Passenger', 1998);
4204
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4204, 'GMC', 'Savana 1500 Cargo', 1998);
4205
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4205, 'GMC', 'Savana 1500 Passenger', 1998);
4206
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4206, 'GMC', 'Savana 2500 Cargo', 1998);
4207
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4207, 'GMC', 'Savana 2500 Passenger', 1998);
4208
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4208, 'GMC', 'Savana 3500 Cargo', 1998);
4209
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4209, 'GMC', 'Savana 3500 Passenger', 1998);
4210
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4210, 'GMC', 'Sonoma Club Coupe Cab', 1998);
4211
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4211, 'GMC', 'Sonoma Regular Cab', 1998);
4212
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4212, 'GMC', 'Suburban 1500', 1998);
4213
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4213, 'GMC', 'Suburban 2500', 1998);
4214
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4214, 'GMC', 'Yukon', 1998);
4215
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4215, 'Honda', 'Accord', 1998);
4216
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4216, 'Honda', 'Civic', 1998);
4217
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4217, 'Honda', 'CR-V', 1998);
4218
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4218, 'Honda', 'Odyssey', 1998);
4219
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4219, 'Honda', 'Passport', 1998);
4220
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4220, 'Honda', 'Prelude', 1998);
4221
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4221, 'HUMMER', 'H1', 1998);
4222
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4222, 'Hyundai', 'Accent', 1998);
4223
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4223, 'Hyundai', 'Elantra', 1998);
4224
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4224, 'Hyundai', 'Sonata', 1998);
4225
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4225, 'Hyundai', 'Tiburon', 1998);
4226
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4226, 'Infiniti', 'I', 1998);
4227
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4227, 'Infiniti', 'Q', 1998);
4228
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4228, 'Infiniti', 'QX', 1998);
4229
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4229, 'Isuzu', 'Amigo', 1998);
4230
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4230, 'Isuzu', 'Hombre Regular Cab', 1998);
4231
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4231, 'Isuzu', 'Hombre Spacecab', 1998);
4232
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4232, 'Isuzu', 'Oasis', 1998);
4233
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4233, 'Isuzu', 'Rodeo', 1998);
4234
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4234, 'Isuzu', 'Trooper', 1998);
4235
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4235, 'Jaguar', 'XJ Series', 1998);
4236
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4236, 'Jaguar', 'XK Series', 1998);
4237
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4237, 'Jeep', 'Cherokee', 1998);
4238
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4238, 'Jeep', 'Grand Cherokee', 1998);
4239
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4239, 'Jeep', 'Wrangler', 1998);
4240
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4240, 'Kia', 'Sephia', 1998);
4241
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4241, 'Kia', 'Sportage', 1998);
4242
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4242, 'Land Rover', 'Discovery', 1998);
4243
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4243, 'Land Rover', 'Range Rover', 1998);
4244
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4244, 'Lexus', 'ES', 1998);
4245
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4245, 'Lexus', 'GS', 1998);
4246
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4246, 'Lexus', 'LS', 1998);
4247
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4247, 'Lexus', 'LX', 1998);
4248
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4248, 'Lexus', 'SC', 1998);
4249
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4249, 'Lincoln', 'Continental', 1998);
4250
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4250, 'Lincoln', 'Mark VIII', 1998);
4251
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4251, 'Lincoln', 'Navigator', 1998);
4252
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4252, 'Lincoln', 'Town Car', 1998);
4253
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4253, 'Mazda', '626', 1998);
4254
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4254, 'Mazda', 'B-Series Cab Plus', 1998);
4255
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4255, 'Mazda', 'B-Series Regular Cab', 1998);
4256
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4256, 'Mazda', 'Millenia', 1998);
4257
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4257, 'Mazda', 'MPV', 1998);
4258
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4258, 'Mazda', 'Protege', 1998);
4259
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4259, 'Mercedes-Benz', 'C-Class', 1998);
4260
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4260, 'Mercedes-Benz', 'CL-Class', 1998);
4261
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4261, 'Mercedes-Benz', 'CLK-Class', 1998);
4262
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4262, 'Mercedes-Benz', 'E-Class', 1998);
4263
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4263, 'Mercedes-Benz', 'M-Class', 1998);
4264
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4264, 'Mercedes-Benz', 'S-Class', 1998);
4265
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4265, 'Mercedes-Benz', 'SL-Class', 1998);
4266
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4266, 'Mercedes-Benz', 'SLK-Class', 1998);
4267
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4267, 'Mercury', 'Grand Marquis', 1998);
4268
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4268, 'Mercury', 'Mountaineer', 1998);
4269
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4269, 'Mercury', 'Mystique', 1998);
4270
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4270, 'Mercury', 'Sable', 1998);
4271
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4271, 'Mercury', 'Tracer', 1998);
4272
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4272, 'Mercury', 'Villager', 1998);
4273
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4273, 'Mitsubishi', '3000GT', 1998);
4274
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4274, 'Mitsubishi', 'Diamante', 1998);
4275
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4275, 'Mitsubishi', 'Eclipse', 1998);
4276
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4276, 'Mitsubishi', 'Galant', 1998);
4277
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4277, 'Mitsubishi', 'Mirage', 1998);
4278
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4278, 'Mitsubishi', 'Montero', 1998);
4279
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4279, 'Mitsubishi', 'Montero Sport', 1998);
4280
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4280, 'Nissan', '200SX', 1998);
4281
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4281, 'Nissan', '240SX', 1998);
4282
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4282, 'Nissan', 'Altima', 1998);
4283
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4283, 'Nissan', 'Frontier King Cab', 1998);
4284
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4284, 'Nissan', 'Frontier Regular Cab', 1998);
4285
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4285, 'Nissan', 'Maxima', 1998);
4286
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4286, 'Nissan', 'Pathfinder', 1998);
4287
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4287, 'Nissan', 'Quest', 1998);
4288
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4288, 'Nissan', 'Sentra', 1998);
4289
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4289, 'Oldsmobile', '88', 1998);
4290
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4290, 'Oldsmobile', 'Achieva', 1998);
4291
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4291, 'Oldsmobile', 'Aurora', 1998);
4292
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4292, 'Oldsmobile', 'Bravada', 1998);
4293
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4293, 'Oldsmobile', 'Cutlass', 1998);
4294
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4294, 'Oldsmobile', 'Intrigue', 1998);
4295
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4295, 'Oldsmobile', 'LSS', 1998);
4296
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4296, 'Oldsmobile', 'Regency', 1998);
4297
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4297, 'Oldsmobile', 'Silhouette', 1998);
4298
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4298, 'Plymouth', 'Breeze', 1998);
4299
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4299, 'Plymouth', 'Grand Voyager', 1998);
4300
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4300, 'Plymouth', 'Neon', 1998);
4301
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4301, 'Plymouth', 'Voyager', 1998);
4302
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4302, 'Pontiac', 'Bonneville', 1998);
4303
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4303, 'Pontiac', 'Firebird', 1998);
4304
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4304, 'Pontiac', 'Grand Am', 1998);
4305
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4305, 'Pontiac', 'Grand Prix', 1998);
4306
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4306, 'Pontiac', 'Sunfire', 1998);
4307
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4307, 'Pontiac', 'Trans Sport', 1998);
4308
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4308, 'Porsche', '911', 1998);
4309
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4309, 'Porsche', 'Boxster', 1998);
4310
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4310, 'Saab', '900', 1998);
4311
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4311, 'Saab', '9000', 1998);
4312
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4312, 'Saturn', 'S-Series', 1998);
4313
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4313, 'Subaru', 'Forester', 1998);
4314
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4314, 'Subaru', 'Impreza', 1998);
4315
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4315, 'Subaru', 'Legacy', 1998);
4316
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4316, 'Suzuki', 'Esteem', 1998);
4317
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4317, 'Suzuki', 'Sidekick', 1998);
4318
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4318, 'Suzuki', 'Swift', 1998);
4319
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4319, 'Suzuki', 'X-90', 1998);
4320
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4320, 'Toyota', '4Runner', 1998);
4321
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4321, 'Toyota', 'Avalon', 1998);
4322
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4322, 'Toyota', 'Camry', 1998);
4323
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4323, 'Toyota', 'Celica', 1998);
4324
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4324, 'Toyota', 'Corolla', 1998);
4325
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4325, 'Toyota', 'Land Cruiser', 1998);
4326
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4326, 'Toyota', 'RAV4', 1998);
4327
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4327, 'Toyota', 'Sienna', 1998);
4328
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4328, 'Toyota', 'Supra', 1998);
4329
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4329, 'Toyota', 'T100 Regular Cab', 1998);
4330
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4330, 'Toyota', 'T100 Xtracab', 1998);
4331
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4331, 'Toyota', 'Tacoma Regular Cab', 1998);
4332
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4332, 'Toyota', 'Tacoma Xtracab', 1998);
4333
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4333, 'Toyota', 'Tercel', 1998);
4334
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4334, 'Volkswagen', 'Cabrio', 1998);
4335
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4335, 'Volkswagen', 'Golf', 1998);
4336
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4336, 'Volkswagen', 'Jetta', 1998);
4337
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4337, 'Volkswagen', 'New Beetle', 1998);
4338
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4338, 'Volkswagen', 'Passat', 1998);
4339
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4339, 'Volvo', 'C70', 1998);
4340
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4340, 'Volvo', 'S70', 1998);
4341
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4341, 'Volvo', 'S90', 1998);
4342
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4342, 'Volvo', 'V70', 1998);
4343
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4343, 'Volvo', 'V90', 1998);
4344
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4344, 'Acura', 'CL', 1997);
4345
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4345, 'Acura', 'Integra', 1997);
4346
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4346, 'Acura', 'NSX', 1997);
4347
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4347, 'Acura', 'RL', 1997);
4348
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4348, 'Acura', 'SLX', 1997);
4349
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4349, 'Acura', 'TL', 1997);
4350
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4350, 'Audi', 'A4', 1997);
4351
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4351, 'Audi', 'A6', 1997);
4352
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4352, 'Audi', 'A8', 1997);
4353
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4353, 'Audi', 'Cabriolet', 1997);
4354
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4354, 'BMW', '3 Series', 1997);
4355
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4355, 'BMW', '5 Series', 1997);
4356
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4356, 'BMW', '7 Series', 1997);
4357
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4357, 'BMW', '8 Series', 1997);
4358
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4358, 'BMW', 'M3', 1997);
4359
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4359, 'BMW', 'Z3', 1997);
4360
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4360, 'Buick', 'Century', 1997);
4361
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4361, 'Buick', 'LeSabre', 1997);
4362
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4362, 'Buick', 'Park Avenue', 1997);
4363
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4363, 'Buick', 'Regal', 1997);
4364
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4364, 'Buick', 'Riviera', 1997);
4365
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4365, 'Buick', 'Skylark', 1997);
4366
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4366, 'Cadillac', 'Catera', 1997);
4367
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4367, 'Cadillac', 'DeVille', 1997);
4368
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4368, 'Cadillac', 'Eldorado', 1997);
4369
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4369, 'Cadillac', 'Seville', 1997);
4370
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4370, 'Chevrolet', '1500 Extended Cab', 1997);
4371
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4371, 'Chevrolet', '1500 Regular Cab', 1997);
4372
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4372, 'Chevrolet', '2500 Extended Cab', 1997);
4373
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4373, 'Chevrolet', '2500 HD Extended Cab', 1997);
4374
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4374, 'Chevrolet', '2500 Regular Cab', 1997);
4375
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4375, 'Chevrolet', '3500 Crew Cab', 1997);
4376
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4376, 'Chevrolet', '3500 Extended Cab', 1997);
4377
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4377, 'Chevrolet', '3500 Regular Cab', 1997);
4378
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4378, 'Chevrolet', 'Astro Cargo', 1997);
4379
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4379, 'Chevrolet', 'Astro Passenger', 1997);
4380
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4380, 'Chevrolet', 'Blazer', 1997);
4381
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4381, 'Chevrolet', 'Camaro', 1997);
4382
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4382, 'Chevrolet', 'Cavalier', 1997);
4383
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4383, 'Chevrolet', 'Corvette', 1997);
4384
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4384, 'Chevrolet', 'Express 1500 Passenger', 1997);
4385
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4385, 'Chevrolet', 'Express 2500 Passenger', 1997);
4386
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4386, 'Chevrolet', 'Express 3500 Passenger', 1997);
4387
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4387, 'Chevrolet', 'G-Series 1500', 1997);
4388
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4388, 'Chevrolet', 'G-Series 2500', 1997);
4389
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4389, 'Chevrolet', 'G-Series 3500', 1997);
4390
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4390, 'Chevrolet', 'Lumina', 1997);
4391
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4391, 'Chevrolet', 'Malibu', 1997);
4392
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4392, 'Chevrolet', 'Monte Carlo', 1997);
4393
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4393, 'Chevrolet', 'S10 Extended Cab', 1997);
4394
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4394, 'Chevrolet', 'S10 Regular Cab', 1997);
4395
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4395, 'Chevrolet', 'Suburban 1500', 1997);
4396
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4396, 'Chevrolet', 'Suburban 2500', 1997);
4397
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4397, 'Chevrolet', 'Tahoe', 1997);
4398
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4398, 'Chevrolet', 'Venture Passenger', 1997);
4399
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4399, 'Chrysler', 'Cirrus', 1997);
4400
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4400, 'Chrysler', 'Concorde', 1997);
4401
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4401, 'Chrysler', 'LHS', 1997);
4402
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4402, 'Chrysler', 'Sebring', 1997);
4403
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4403, 'Chrysler', 'Town & Country', 1997);
4404
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4404, 'Dodge', 'Avenger', 1997);
4405
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4405, 'Dodge', 'Caravan Passenger', 1997);
4406
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4406, 'Dodge', 'Dakota Club Cab', 1997);
4407
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4407, 'Dodge', 'Dakota Regular Cab', 1997);
4408
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4408, 'Dodge', 'Grand Caravan Passenger', 1997);
4409
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4409, 'Dodge', 'Intrepid', 1997);
4410
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4410, 'Dodge', 'Neon', 1997);
4411
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4411, 'Dodge', 'Ram 1500 Club Cab', 1997);
4412
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4412, 'Dodge', 'Ram 1500 Regular Cab', 1997);
4413
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4413, 'Dodge', 'Ram 2500 Club Cab', 1997);
4414
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4414, 'Dodge', 'Ram 2500 Regular Cab', 1997);
4415
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4415, 'Dodge', 'Ram 3500 Club Cab', 1997);
4416
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4416, 'Dodge', 'Ram 3500 Regular Cab', 1997);
4417
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4417, 'Dodge', 'Ram Van 1500', 1997);
4418
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4418, 'Dodge', 'Ram Van 2500', 1997);
4419
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4419, 'Dodge', 'Ram Van 3500', 1997);
4420
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4420, 'Dodge', 'Ram Wagon 1500', 1997);
4421
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4421, 'Dodge', 'Ram Wagon 2500', 1997);
4422
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4422, 'Dodge', 'Ram Wagon 3500', 1997);
4423
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4423, 'Dodge', 'Stratus', 1997);
4424
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4424, 'Dodge', 'Viper', 1997);
4425
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4425, 'Eagle', 'Talon', 1997);
4426
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4426, 'Eagle', 'Vision', 1997);
4427
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4427, 'Ford', 'Aerostar Cargo', 1997);
4428
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4428, 'Ford', 'Aerostar Passenger', 1997);
4429
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4429, 'Ford', 'Aspire', 1997);
4430
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4430, 'Ford', 'Club Wagon', 1997);
4431
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4431, 'Ford', 'Contour', 1997);
4432
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4432, 'Ford', 'Crown Victoria', 1997);
4433
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4433, 'Ford', 'Econoline E150 Cargo', 1997);
4434
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4434, 'Ford', 'Econoline E250 Cargo', 1997);
4435
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4435, 'Ford', 'Econoline E350 Cargo', 1997);
4436
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4436, 'Ford', 'Escort', 1997);
4437
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4437, 'Ford', 'Expedition', 1997);
4438
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4438, 'Ford', 'Explorer', 1997);
4439
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4439, 'Ford', 'F150 Regular Cab', 1997);
4440
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4440, 'Ford', 'F150 Super Cab', 1997);
4441
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4441, 'Ford', 'F250 Crew Cab', 1997);
4442
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4442, 'Ford', 'F250 Regular Cab', 1997);
4443
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4443, 'Ford', 'F250 Super Cab', 1997);
4444
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4444, 'Ford', 'F350 Crew Cab', 1997);
4445
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4445, 'Ford', 'F350 Regular Cab', 1997);
4446
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4446, 'Ford', 'F350 Super Cab', 1997);
4447
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4447, 'Ford', 'Mustang', 1997);
4448
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4448, 'Ford', 'Probe', 1997);
4449
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4449, 'Ford', 'Ranger Regular Cab', 1997);
4450
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4450, 'Ford', 'Ranger Super Cab', 1997);
4451
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4451, 'Ford', 'Taurus', 1997);
4452
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4452, 'Ford', 'Thunderbird', 1997);
4453
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4453, 'Ford', 'Windstar Cargo', 1997);
4454
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4454, 'Ford', 'Windstar Passenger', 1997);
4455
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4455, 'Geo', 'Metro', 1997);
4456
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4456, 'Geo', 'Prizm', 1997);
4457
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4457, 'Geo', 'Tracker', 1997);
4458
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4458, 'GMC', '1500 Club Coupe', 1997);
4459
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4459, 'GMC', '1500 Regular Cab', 1997);
4460
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4460, 'GMC', '2500 Club Coupe', 1997);
4461
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4461, 'GMC', '2500 HD Club Coupe', 1997);
4462
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4462, 'GMC', '2500 Regular Cab', 1997);
4463
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4463, 'GMC', '3500 Club Coupe', 1997);
4464
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4464, 'GMC', '3500 Crew Cab', 1997);
4465
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4465, 'GMC', '3500 Regular Cab', 1997);
4466
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4466, 'GMC', 'Jimmy', 1997);
4467
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4467, 'GMC', 'Safari Cargo', 1997);
4468
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4468, 'GMC', 'Safari Passenger', 1997);
4469
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4469, 'GMC', 'Savana 1500 Cargo', 1997);
4470
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4470, 'GMC', 'Savana 1500 Passenger', 1997);
4471
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4471, 'GMC', 'Savana 2500 Cargo', 1997);
4472
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4472, 'GMC', 'Savana 2500 Passenger', 1997);
4473
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4473, 'GMC', 'Savana 3500 Cargo', 1997);
4474
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4474, 'GMC', 'Savana 3500 Passenger', 1997);
4475
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4475, 'GMC', 'Sonoma Club Coupe Cab', 1997);
4476
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4476, 'GMC', 'Sonoma Regular Cab', 1997);
4477
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4477, 'GMC', 'Suburban 1500', 1997);
4478
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4478, 'GMC', 'Suburban 2500', 1997);
4479
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4479, 'GMC', 'Yukon', 1997);
4480
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4480, 'Honda', 'Accord', 1997);
4481
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4481, 'Honda', 'Civic', 1997);
4482
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4482, 'Honda', 'CR-V', 1997);
4483
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4483, 'Honda', 'del Sol', 1997);
4484
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4484, 'Honda', 'Odyssey', 1997);
4485
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4485, 'Honda', 'Passport', 1997);
4486
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4486, 'Honda', 'Prelude', 1997);
4487
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4487, 'HUMMER', 'H1', 1997);
4488
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4488, 'Hyundai', 'Accent', 1997);
4489
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4489, 'Hyundai', 'Elantra', 1997);
4490
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4490, 'Hyundai', 'Sonata', 1997);
4491
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4491, 'Hyundai', 'Tiburon', 1997);
4492
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4492, 'Infiniti', 'I', 1997);
4493
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4493, 'Infiniti', 'J', 1997);
4494
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4494, 'Infiniti', 'Q', 1997);
4495
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4495, 'Infiniti', 'QX', 1997);
4496
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4496, 'Isuzu', 'Hombre Regular Cab', 1997);
4497
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4497, 'Isuzu', 'Hombre Spacecab', 1997);
4498
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4498, 'Isuzu', 'Oasis', 1997);
4499
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4499, 'Isuzu', 'Rodeo', 1997);
4500
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4500, 'Isuzu', 'Trooper', 1997);
4501
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4501, 'Jaguar', 'XJ Series', 1997);
4502
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4502, 'Jaguar', 'XK Series', 1997);
4503
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4503, 'Jeep', 'Cherokee', 1997);
4504
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4504, 'Jeep', 'Grand Cherokee', 1997);
4505
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4505, 'Jeep', 'Wrangler', 1997);
4506
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4506, 'Kia', 'Sephia', 1997);
4507
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4507, 'Kia', 'Sportage', 1997);
4508
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4508, 'Land Rover', 'Defender 90', 1997);
4509
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4509, 'Land Rover', 'Discovery', 1997);
4510
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4510, 'Land Rover', 'Range Rover', 1997);
4511
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4511, 'Lexus', 'ES', 1997);
4512
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4512, 'Lexus', 'GS', 1997);
4513
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4513, 'Lexus', 'LS', 1997);
4514
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4514, 'Lexus', 'LX', 1997);
4515
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4515, 'Lexus', 'SC', 1997);
4516
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4516, 'Lincoln', 'Continental', 1997);
4517
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4517, 'Lincoln', 'Mark VIII', 1997);
4518
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4518, 'Lincoln', 'Town Car', 1997);
4519
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4519, 'Mazda', '626', 1997);
4520
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4520, 'Mazda', 'B-Series Cab Plus', 1997);
4521
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4521, 'Mazda', 'B-Series Regular Cab', 1997);
4522
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4522, 'Mazda', 'Miata MX-5', 1997);
4523
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4523, 'Mazda', 'Millenia', 1997);
4524
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4524, 'Mazda', 'MPV', 1997);
4525
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4525, 'Mazda', 'MX-6', 1997);
4526
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4526, 'Mazda', 'Protege', 1997);
4527
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4527, 'Mercedes-Benz', 'C-Class', 1997);
4528
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4528, 'Mercedes-Benz', 'E-Class', 1997);
4529
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4529, 'Mercedes-Benz', 'S-Class', 1997);
4530
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4530, 'Mercedes-Benz', 'SL-Class', 1997);
4531
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4531, 'Mercury', 'Cougar', 1997);
4532
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4532, 'Mercury', 'Grand Marquis', 1997);
4533
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4533, 'Mercury', 'Mountaineer', 1997);
4534
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4534, 'Mercury', 'Mystique', 1997);
4535
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4535, 'Mercury', 'Sable', 1997);
4536
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4536, 'Mercury', 'Tracer', 1997);
4537
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4537, 'Mercury', 'Villager', 1997);
4538
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4538, 'Mitsubishi', '3000GT', 1997);
4539
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4539, 'Mitsubishi', 'Diamante', 1997);
4540
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4540, 'Mitsubishi', 'Eclipse', 1997);
4541
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4541, 'Mitsubishi', 'Galant', 1997);
4542
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4542, 'Mitsubishi', 'Mirage', 1997);
4543
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4543, 'Mitsubishi', 'Montero', 1997);
4544
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4544, 'Mitsubishi', 'Montero Sport', 1997);
4545
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4545, 'Nissan', '200SX', 1997);
4546
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4546, 'Nissan', '240SX', 1997);
4547
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4547, 'Nissan', 'Altima', 1997);
4548
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4548, 'Nissan', 'King Cab', 1997);
4549
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4549, 'Nissan', 'Maxima', 1997);
4550
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4550, 'Nissan', 'Pathfinder', 1997);
4551
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4551, 'Nissan', 'Quest', 1997);
4552
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4552, 'Nissan', 'Regular Cab', 1997);
4553
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4553, 'Nissan', 'Sentra', 1997);
4554
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4554, 'Oldsmobile', '88', 1997);
4555
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4555, 'Oldsmobile', 'Achieva', 1997);
4556
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4556, 'Oldsmobile', 'Aurora', 1997);
4557
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4557, 'Oldsmobile', 'Bravada', 1997);
4558
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4558, 'Oldsmobile', 'Cutlass', 1997);
4559
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4559, 'Oldsmobile', 'Cutlass Supreme', 1997);
4560
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4560, 'Oldsmobile', 'LSS', 1997);
4561
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4561, 'Oldsmobile', 'Regency', 1997);
4562
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4562, 'Oldsmobile', 'Silhouette', 1997);
4563
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4563, 'Plymouth', 'Breeze', 1997);
4564
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4564, 'Plymouth', 'Grand Voyager', 1997);
4565
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4565, 'Plymouth', 'Neon', 1997);
4566
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4566, 'Plymouth', 'Prowler', 1997);
4567
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4567, 'Plymouth', 'Voyager', 1997);
4568
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4568, 'Pontiac', 'Bonneville', 1997);
4569
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4569, 'Pontiac', 'Firebird', 1997);
4570
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4570, 'Pontiac', 'Grand Am', 1997);
4571
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4571, 'Pontiac', 'Grand Prix', 1997);
4572
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4572, 'Pontiac', 'Sunfire', 1997);
4573
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4573, 'Pontiac', 'Trans Sport', 1997);
4574
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4574, 'Porsche', '911', 1997);
4575
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4575, 'Porsche', 'Boxster', 1997);
4576
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4576, 'Saab', '900', 1997);
4577
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4577, 'Saab', '9000', 1997);
4578
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4578, 'Saturn', 'S-Series', 1997);
4579
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4579, 'Subaru', 'Impreza', 1997);
4580
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4580, 'Subaru', 'Legacy', 1997);
4581
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4581, 'Subaru', 'SVX', 1997);
4582
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4582, 'Suzuki', 'Esteem', 1997);
4583
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4583, 'Suzuki', 'Sidekick', 1997);
4584
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4584, 'Suzuki', 'Swift', 1997);
4585
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4585, 'Suzuki', 'X-90', 1997);
4586
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4586, 'Toyota', '4Runner', 1997);
4587
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4587, 'Toyota', 'Avalon', 1997);
4588
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4588, 'Toyota', 'Camry', 1997);
4589
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4589, 'Toyota', 'Celica', 1997);
4590
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4590, 'Toyota', 'Corolla', 1997);
4591
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4591, 'Toyota', 'Land Cruiser', 1997);
4592
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4592, 'Toyota', 'Paseo', 1997);
4593
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4593, 'Toyota', 'Previa', 1997);
4594
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4594, 'Toyota', 'RAV4', 1997);
4595
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4595, 'Toyota', 'Supra', 1997);
4596
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4596, 'Toyota', 'T100 Regular Cab', 1997);
4597
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4597, 'Toyota', 'T100 Xtracab', 1997);
4598
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4598, 'Toyota', 'Tacoma Regular Cab', 1997);
4599
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4599, 'Toyota', 'Tacoma Xtracab', 1997);
4600
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4600, 'Toyota', 'Tercel', 1997);
4601
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4601, 'Volkswagen', 'Cabrio', 1997);
4602
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4602, 'Volkswagen', 'Golf', 1997);
4603
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4603, 'Volkswagen', 'Jetta', 1997);
4604
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4604, 'Volkswagen', 'Passat', 1997);
4605
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4605, 'Volvo', '850', 1997);
4606
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4606, 'Volvo', '960', 1997);
4607
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4607, 'Volvo', 'S90', 1997);
4608
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4608, 'Volvo', 'V90', 1997);
4609
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4609, 'Acura', 'Integra', 1996);
4610
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4610, 'Acura', 'NSX', 1996);
4611
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4611, 'Acura', 'RL', 1996);
4612
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4612, 'Acura', 'SLX', 1996);
4613
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4613, 'Acura', 'TL', 1996);
4614
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4614, 'Audi', 'A4', 1996);
4615
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4615, 'Audi', 'A6', 1996);
4616
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4616, 'Audi', 'Cabriolet', 1996);
4617
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4617, 'BMW', '3 Series', 1996);
4618
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4618, 'BMW', '7 Series', 1996);
4619
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4619, 'BMW', '8 Series', 1996);
4620
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4620, 'BMW', 'M3', 1996);
4621
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4621, 'BMW', 'Z3', 1996);
4622
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4622, 'Buick', 'Century', 1996);
4623
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4623, 'Buick', 'LeSabre', 1996);
4624
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4624, 'Buick', 'Park Avenue', 1996);
4625
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4625, 'Buick', 'Regal', 1996);
4626
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4626, 'Buick', 'Riviera', 1996);
4627
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4627, 'Buick', 'Roadmaster', 1996);
4628
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4628, 'Buick', 'Skylark', 1996);
4629
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4629, 'Cadillac', 'DeVille', 1996);
4630
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4630, 'Cadillac', 'Eldorado', 1996);
4631
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4631, 'Cadillac', 'Fleetwood', 1996);
4632
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4632, 'Cadillac', 'Seville', 1996);
4633
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4633, 'Chevrolet', '1500 Extended Cab', 1996);
4634
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4634, 'Chevrolet', '1500 Regular Cab', 1996);
4635
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4635, 'Chevrolet', '2500 Extended Cab', 1996);
4636
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4636, 'Chevrolet', '2500 HD Extended Cab', 1996);
4637
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4637, 'Chevrolet', '2500 Regular Cab', 1996);
4638
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4638, 'Chevrolet', '3500 Crew Cab', 1996);
4639
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4639, 'Chevrolet', '3500 Extended Cab', 1996);
4640
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4640, 'Chevrolet', '3500 Regular Cab', 1996);
4641
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4641, 'Chevrolet', 'Astro Cargo', 1996);
4642
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4642, 'Chevrolet', 'Astro Passenger', 1996);
4643
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4643, 'Chevrolet', 'Beretta', 1996);
4644
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4644, 'Chevrolet', 'Blazer', 1996);
4645
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4645, 'Chevrolet', 'Camaro', 1996);
4646
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4646, 'Chevrolet', 'Caprice Classic', 1996);
4647
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4647, 'Chevrolet', 'Cavalier', 1996);
4648
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4648, 'Chevrolet', 'Corsica', 1996);
4649
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4649, 'Chevrolet', 'Corvette', 1996);
4650
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4650, 'Chevrolet', 'Express 1500 Passenger', 1996);
4651
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4651, 'Chevrolet', 'Express 2500 Passenger', 1996);
4652
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4652, 'Chevrolet', 'Express 3500 Passenger', 1996);
4653
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4653, 'Chevrolet', 'G-Series 1500', 1996);
4654
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4654, 'Chevrolet', 'G-Series 2500', 1996);
4655
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4655, 'Chevrolet', 'G-Series G30', 1996);
4656
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4656, 'Chevrolet', 'Impala', 1996);
4657
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4657, 'Chevrolet', 'Lumina', 1996);
4658
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4658, 'Chevrolet', 'Lumina Cargo', 1996);
4659
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4659, 'Chevrolet', 'Lumina Passenger', 1996);
4660
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4660, 'Chevrolet', 'Monte Carlo', 1996);
4661
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4661, 'Chevrolet', 'S10 Extended Cab', 1996);
4662
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4662, 'Chevrolet', 'S10 Regular Cab', 1996);
4663
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4663, 'Chevrolet', 'Sportvan G30', 1996);
4664
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4664, 'Chevrolet', 'Suburban 1500', 1996);
4665
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4665, 'Chevrolet', 'Suburban 2500', 1996);
4666
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4666, 'Chevrolet', 'Tahoe', 1996);
4667
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4667, 'Chrysler', 'Cirrus', 1996);
4668
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4668, 'Chrysler', 'Concorde', 1996);
4669
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4669, 'Chrysler', 'LHS', 1996);
4670
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4670, 'Chrysler', 'New Yorker', 1996);
4671
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4671, 'Chrysler', 'Sebring', 1996);
4672
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4672, 'Chrysler', 'Town & Country', 1996);
4673
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4673, 'Dodge', 'Avenger', 1996);
4674
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4674, 'Dodge', 'Caravan Passenger', 1996);
4675
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4675, 'Dodge', 'Dakota Club Cab', 1996);
4676
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4676, 'Dodge', 'Dakota Regular Cab', 1996);
4677
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4677, 'Dodge', 'Grand Caravan Passenger', 1996);
4678
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4678, 'Dodge', 'Intrepid', 1996);
4679
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4679, 'Dodge', 'Neon', 1996);
4680
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4680, 'Dodge', 'Ram 1500 Club Cab', 1996);
4681
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4681, 'Dodge', 'Ram 1500 Regular Cab', 1996);
4682
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4682, 'Dodge', 'Ram 2500 Club Cab', 1996);
4683
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4683, 'Dodge', 'Ram 2500 Regular Cab', 1996);
4684
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4684, 'Dodge', 'Ram 3500 Club Cab', 1996);
4685
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4685, 'Dodge', 'Ram 3500 Regular Cab', 1996);
4686
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4686, 'Dodge', 'Ram Van 1500', 1996);
4687
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4687, 'Dodge', 'Ram Van 2500', 1996);
4688
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4688, 'Dodge', 'Ram Van 3500', 1996);
4689
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4689, 'Dodge', 'Ram Wagon 1500', 1996);
4690
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4690, 'Dodge', 'Ram Wagon 2500', 1996);
4691
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4691, 'Dodge', 'Ram Wagon 3500', 1996);
4692
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4692, 'Dodge', 'Stealth', 1996);
4693
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4693, 'Dodge', 'Stratus', 1996);
4694
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4694, 'Dodge', 'Viper', 1996);
4695
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4695, 'Eagle', 'Summit', 1996);
4696
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4696, 'Eagle', 'Talon', 1996);
4697
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4697, 'Eagle', 'Vision', 1996);
4698
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4698, 'Ford', 'Aerostar Cargo', 1996);
4699
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4699, 'Ford', 'Aerostar Passenger', 1996);
4700
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4700, 'Ford', 'Aspire', 1996);
4701
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4701, 'Ford', 'Bronco', 1996);
4702
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4702, 'Ford', 'Club Wagon', 1996);
4703
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4703, 'Ford', 'Contour', 1996);
4704
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4704, 'Ford', 'Crown Victoria', 1996);
4705
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4705, 'Ford', 'Econoline E150 Cargo', 1996);
4706
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4706, 'Ford', 'Econoline E250 Cargo', 1996);
4707
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4707, 'Ford', 'Econoline E350 Cargo', 1996);
4708
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4708, 'Ford', 'Escort', 1996);
4709
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4709, 'Ford', 'Explorer', 1996);
4710
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4710, 'Ford', 'F150 Regular Cab', 1996);
4711
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4711, 'Ford', 'F150 Super Cab', 1996);
4712
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4712, 'Ford', 'F250 Crew Cab', 1996);
4713
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4713, 'Ford', 'F250 Regular Cab', 1996);
4714
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4714, 'Ford', 'F250 Super Cab', 1996);
4715
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4715, 'Ford', 'F350 Crew Cab', 1996);
4716
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4716, 'Ford', 'F350 Regular Cab', 1996);
4717
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4717, 'Ford', 'F350 Super Cab', 1996);
4718
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4718, 'Ford', 'Mustang', 1996);
4719
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4719, 'Ford', 'Probe', 1996);
4720
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4720, 'Ford', 'Ranger Regular Cab', 1996);
4721
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4721, 'Ford', 'Ranger Super Cab', 1996);
4722
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4722, 'Ford', 'Taurus', 1996);
4723
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4723, 'Ford', 'Thunderbird', 1996);
4724
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4724, 'Ford', 'Windstar Cargo', 1996);
4725
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4725, 'Ford', 'Windstar Passenger', 1996);
4726
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4726, 'Geo', 'Metro', 1996);
4727
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4727, 'Geo', 'Prizm', 1996);
4728
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4728, 'Geo', 'Tracker', 1996);
4729
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4729, 'GMC', '1500 Club Coupe', 1996);
4730
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4730, 'GMC', '1500 Regular Cab', 1996);
4731
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4731, 'GMC', '2500 Club Coupe', 1996);
4732
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4732, 'GMC', '2500 Regular Cab', 1996);
4733
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4733, 'GMC', '3500 Club Coupe', 1996);
4734
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4734, 'GMC', '3500 Crew Cab', 1996);
4735
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4735, 'GMC', '3500 Regular Cab', 1996);
4736
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4736, 'GMC', 'Jimmy', 1996);
4737
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4737, 'GMC', 'Rally Wagon G3500', 1996);
4738
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4738, 'GMC', 'Safari Cargo', 1996);
4739
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4739, 'GMC', 'Safari Passenger', 1996);
4740
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4740, 'GMC', 'Savana 1500 Cargo', 1996);
4741
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4741, 'GMC', 'Savana 1500 Passenger', 1996);
4742
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4742, 'GMC', 'Savana 2500 Cargo', 1996);
4743
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4743, 'GMC', 'Savana 2500 Passenger', 1996);
4744
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4744, 'GMC', 'Savana 3500 Cargo', 1996);
4745
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4745, 'GMC', 'Savana 3500 Passenger', 1996);
4746
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4746, 'GMC', 'Sonoma Club Coupe Cab', 1996);
4747
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4747, 'GMC', 'Sonoma Regular Cab', 1996);
4748
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4748, 'GMC', 'Suburban 1500', 1996);
4749
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4749, 'GMC', 'Suburban 2500', 1996);
4750
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4750, 'GMC', 'Vandura G3500', 1996);
4751
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4751, 'GMC', 'Yukon', 1996);
4752
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4752, 'Honda', 'Accord', 1996);
4753
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4753, 'Honda', 'Civic', 1996);
4754
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4754, 'Honda', 'del Sol', 1996);
4755
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4755, 'Honda', 'Odyssey', 1996);
4756
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4756, 'Honda', 'Passport', 1996);
4757
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4757, 'Honda', 'Prelude', 1996);
4758
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4758, 'HUMMER', 'H1', 1996);
4759
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4759, 'Hyundai', 'Accent', 1996);
4760
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4760, 'Hyundai', 'Elantra', 1996);
4761
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4761, 'Hyundai', 'Sonata', 1996);
4762
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4762, 'Infiniti', 'G', 1996);
4763
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4763, 'Infiniti', 'I', 1996);
4764
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4764, 'Infiniti', 'J', 1996);
4765
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4765, 'Infiniti', 'Q', 1996);
4766
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4766, 'Isuzu', 'Hombre Regular Cab', 1996);
4767
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4767, 'Isuzu', 'Oasis', 1996);
4768
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4768, 'Isuzu', 'Rodeo', 1996);
4769
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4769, 'Isuzu', 'Trooper', 1996);
4770
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4770, 'Jaguar', 'XJ Series', 1996);
4771
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4771, 'Jeep', 'Cherokee', 1996);
4772
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4772, 'Jeep', 'Grand Cherokee', 1996);
4773
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4773, 'Kia', 'Sephia', 1996);
4774
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4774, 'Kia', 'Sportage', 1996);
4775
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4775, 'Land Rover', 'Discovery', 1996);
4776
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4776, 'Land Rover', 'Range Rover', 1996);
4777
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4777, 'Lexus', 'ES', 1996);
4778
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4778, 'Lexus', 'GS', 1996);
4779
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4779, 'Lexus', 'LS', 1996);
4780
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4780, 'Lexus', 'LX', 1996);
4781
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4781, 'Lexus', 'SC', 1996);
4782
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4782, 'Lincoln', 'Continental', 1996);
4783
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4783, 'Lincoln', 'Mark VIII', 1996);
4784
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4784, 'Lincoln', 'Town Car', 1996);
4785
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4785, 'Mazda', '626', 1996);
4786
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4786, 'Mazda', 'B-Series Cab Plus', 1996);
4787
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4787, 'Mazda', 'B-Series Regular Cab', 1996);
4788
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4788, 'Mazda', 'Miata MX-5', 1996);
4789
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4789, 'Mazda', 'Millenia', 1996);
4790
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4790, 'Mazda', 'MPV', 1996);
4791
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4791, 'Mazda', 'MX-6', 1996);
4792
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4792, 'Mazda', 'Protege', 1996);
4793
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4793, 'Mercedes-Benz', 'C-Class', 1996);
4794
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4794, 'Mercedes-Benz', 'E-Class', 1996);
4795
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4795, 'Mercedes-Benz', 'S-Class', 1996);
4796
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4796, 'Mercedes-Benz', 'SL-Class', 1996);
4797
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4797, 'Mercury', 'Cougar', 1996);
4798
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4798, 'Mercury', 'Grand Marquis', 1996);
4799
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4799, 'Mercury', 'Mystique', 1996);
4800
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4800, 'Mercury', 'Sable', 1996);
4801
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4801, 'Mercury', 'Tracer', 1996);
4802
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4802, 'Mercury', 'Villager', 1996);
4803
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4803, 'Mitsubishi', '3000GT', 1996);
4804
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4804, 'Mitsubishi', 'Diamante', 1996);
4805
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4805, 'Mitsubishi', 'Eclipse', 1996);
4806
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4806, 'Mitsubishi', 'Galant', 1996);
4807
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4807, 'Mitsubishi', 'Mighty Max Regular Cab', 1996);
4808
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4808, 'Mitsubishi', 'Mirage', 1996);
4809
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4809, 'Mitsubishi', 'Montero', 1996);
4810
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4810, 'Nissan', '200SX', 1996);
4811
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4811, 'Nissan', '240SX', 1996);
4812
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4812, 'Nissan', '300ZX', 1996);
4813
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4813, 'Nissan', 'Altima', 1996);
4814
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4814, 'Nissan', 'King Cab', 1996);
4815
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4815, 'Nissan', 'Maxima', 1996);
4816
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4816, 'Nissan', 'Pathfinder', 1996);
4817
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4817, 'Nissan', 'Quest', 1996);
4818
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4818, 'Nissan', 'Regular Cab', 1996);
4819
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4819, 'Nissan', 'Sentra', 1996);
4820
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4820, 'Oldsmobile', '88', 1996);
4821
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4821, 'Oldsmobile', '98', 1996);
4822
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4822, 'Oldsmobile', 'Achieva', 1996);
4823
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4823, 'Oldsmobile', 'Aurora', 1996);
4824
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4824, 'Oldsmobile', 'Bravada', 1996);
4825
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4825, 'Oldsmobile', 'Ciera', 1996);
4826
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4826, 'Oldsmobile', 'Cutlass Supreme', 1996);
4827
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4827, 'Oldsmobile', 'Silhouette', 1996);
4828
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4828, 'Plymouth', 'Breeze', 1996);
4829
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4829, 'Plymouth', 'Grand Voyager', 1996);
4830
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4830, 'Plymouth', 'Neon', 1996);
4831
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4831, 'Plymouth', 'Voyager', 1996);
4832
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4832, 'Pontiac', 'Bonneville', 1996);
4833
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4833, 'Pontiac', 'Firebird', 1996);
4834
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4834, 'Pontiac', 'Grand Am', 1996);
4835
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4835, 'Pontiac', 'Grand Prix', 1996);
4836
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4836, 'Pontiac', 'Sunfire', 1996);
4837
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4837, 'Pontiac', 'Trans Sport', 1996);
4838
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4838, 'Porsche', '911', 1996);
4839
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4839, 'Saab', '900', 1996);
4840
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4840, 'Saab', '9000', 1996);
4841
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4841, 'Saturn', 'S-Series', 1996);
4842
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4842, 'Subaru', 'Impreza', 1996);
4843
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4843, 'Subaru', 'Legacy', 1996);
4844
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4844, 'Subaru', 'SVX', 1996);
4845
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4845, 'Suzuki', 'Esteem', 1996);
4846
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4846, 'Suzuki', 'Sidekick', 1996);
4847
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4847, 'Suzuki', 'Swift', 1996);
4848
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4848, 'Suzuki', 'X-90', 1996);
4849
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4849, 'Toyota', '4Runner', 1996);
4850
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4850, 'Toyota', 'Avalon', 1996);
4851
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4851, 'Toyota', 'Camry', 1996);
4852
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4852, 'Toyota', 'Celica', 1996);
4853
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4853, 'Toyota', 'Corolla', 1996);
4854
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4854, 'Toyota', 'Land Cruiser', 1996);
4855
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4855, 'Toyota', 'Paseo', 1996);
4856
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4856, 'Toyota', 'Previa', 1996);
4857
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4857, 'Toyota', 'RAV4', 1996);
4858
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4858, 'Toyota', 'Supra', 1996);
4859
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4859, 'Toyota', 'T100 Regular Cab', 1996);
4860
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4860, 'Toyota', 'T100 Xtracab', 1996);
4861
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4861, 'Toyota', 'Tacoma Regular Cab', 1996);
4862
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4862, 'Toyota', 'Tacoma Xtracab', 1996);
4863
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4863, 'Toyota', 'Tercel', 1996);
4864
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4864, 'Volkswagen', 'Cabrio', 1996);
4865
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4865, 'Volkswagen', 'Golf', 1996);
4866
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4866, 'Volkswagen', 'Jetta', 1996);
4867
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4867, 'Volkswagen', 'Passat', 1996);
4868
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4868, 'Volvo', '850', 1996);
4869
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4869, 'Volvo', '960', 1996);
4870
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4870, 'Acura', 'Integra', 1995);
4871
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4871, 'Acura', 'Legend', 1995);
4872
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4872, 'Acura', 'NSX', 1995);
4873
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4873, 'Acura', 'TL', 1995);
4874
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4874, 'Alfa Romeo', '164', 1995);
4875
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4875, 'Audi', '90', 1995);
4876
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4876, 'Audi', 'A6', 1995);
4877
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4877, 'Audi', 'Cabriolet', 1995);
4878
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4878, 'Audi', 'S6', 1995);
4879
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4879, 'BMW', '3 Series', 1995);
4880
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4880, 'BMW', '5 Series', 1995);
4881
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4881, 'BMW', '7 Series', 1995);
4882
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4882, 'BMW', '8 Series', 1995);
4883
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4883, 'BMW', 'M3', 1995);
4884
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4884, 'Buick', 'Century', 1995);
4885
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4885, 'Buick', 'LeSabre', 1995);
4886
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4886, 'Buick', 'Park Avenue', 1995);
4887
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4887, 'Buick', 'Regal', 1995);
4888
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4888, 'Buick', 'Riviera', 1995);
4889
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4889, 'Buick', 'Roadmaster', 1995);
4890
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4890, 'Buick', 'Skylark', 1995);
4891
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4891, 'Cadillac', 'DeVille', 1995);
4892
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4892, 'Cadillac', 'Eldorado', 1995);
4893
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4893, 'Cadillac', 'Fleetwood', 1995);
4894
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4894, 'Cadillac', 'Seville', 1995);
4895
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4895, 'Chevrolet', '1500 Extended Cab', 1995);
4896
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4896, 'Chevrolet', '1500 Regular Cab', 1995);
4897
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4897, 'Chevrolet', '2500 Extended Cab', 1995);
4898
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4898, 'Chevrolet', '2500 Regular Cab', 1995);
4899
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4899, 'Chevrolet', '3500 Crew Cab', 1995);
4900
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4900, 'Chevrolet', '3500 HD Extended Cab', 1995);
4901
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4901, 'Chevrolet', '3500 HD Regular Cab', 1995);
4902
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4902, 'Chevrolet', 'Astro Cargo', 1995);
4903
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4903, 'Chevrolet', 'Astro Passenger', 1995);
4904
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4904, 'Chevrolet', 'Beretta', 1995);
4905
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4905, 'Chevrolet', 'Blazer', 1995);
4906
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4906, 'Chevrolet', 'Camaro', 1995);
4907
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4907, 'Chevrolet', 'Caprice Classic', 1995);
4908
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4908, 'Chevrolet', 'Cavalier', 1995);
4909
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4909, 'Chevrolet', 'Corsica', 1995);
4910
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4910, 'Chevrolet', 'Corvette', 1995);
4911
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4911, 'Chevrolet', 'G-Series G10', 1995);
4912
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4912, 'Chevrolet', 'G-Series G20', 1995);
4913
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4913, 'Chevrolet', 'G-Series G30', 1995);
4914
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4914, 'Chevrolet', 'Impala', 1995);
4915
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4915, 'Chevrolet', 'Lumina', 1995);
4916
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4916, 'Chevrolet', 'Lumina Cargo', 1995);
4917
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4917, 'Chevrolet', 'Lumina Passenger', 1995);
4918
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4918, 'Chevrolet', 'Monte Carlo', 1995);
4919
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4919, 'Chevrolet', 'S10 Extended Cab', 1995);
4920
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4920, 'Chevrolet', 'S10 Regular Cab', 1995);
4921
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4921, 'Chevrolet', 'Sportvan G20', 1995);
4922
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4922, 'Chevrolet', 'Sportvan G30', 1995);
4923
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4923, 'Chevrolet', 'Suburban 1500', 1995);
4924
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4924, 'Chevrolet', 'Suburban 2500', 1995);
4925
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4925, 'Chevrolet', 'Tahoe', 1995);
4926
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4926, 'Chrysler', 'Cirrus', 1995);
4927
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4927, 'Chrysler', 'Concorde', 1995);
4928
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4928, 'Chrysler', 'LeBaron', 1995);
4929
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4929, 'Chrysler', 'LHS', 1995);
4930
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4930, 'Chrysler', 'New Yorker', 1995);
4931
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4931, 'Chrysler', 'Sebring', 1995);
4932
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4932, 'Chrysler', 'Town & Country', 1995);
4933
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4933, 'Dodge', 'Avenger', 1995);
4934
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4934, 'Dodge', 'Caravan Cargo', 1995);
4935
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4935, 'Dodge', 'Caravan Passenger', 1995);
4936
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4936, 'Dodge', 'Dakota Club Cab', 1995);
4937
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4937, 'Dodge', 'Dakota Regular Cab', 1995);
4938
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4938, 'Dodge', 'Grand Caravan Passenger', 1995);
4939
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4939, 'Dodge', 'Intrepid', 1995);
4940
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4940, 'Dodge', 'Neon', 1995);
4941
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4941, 'Dodge', 'Ram 1500 Club Cab', 1995);
4942
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4942, 'Dodge', 'Ram 1500 Regular Cab', 1995);
4943
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4943, 'Dodge', 'Ram 2500 Club Cab', 1995);
4944
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4944, 'Dodge', 'Ram 2500 Regular Cab', 1995);
4945
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4945, 'Dodge', 'Ram 3500 Club Cab', 1995);
4946
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4946, 'Dodge', 'Ram 3500 Regular Cab', 1995);
4947
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4947, 'Dodge', 'Ram Van 1500', 1995);
4948
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4948, 'Dodge', 'Ram Van 2500', 1995);
4949
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4949, 'Dodge', 'Ram Van 3500', 1995);
4950
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4950, 'Dodge', 'Ram Wagon 1500', 1995);
4951
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4951, 'Dodge', 'Ram Wagon 2500', 1995);
4952
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4952, 'Dodge', 'Ram Wagon 3500', 1995);
4953
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4953, 'Dodge', 'Spirit', 1995);
4954
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4954, 'Dodge', 'Stealth', 1995);
4955
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4955, 'Dodge', 'Stratus', 1995);
4956
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4956, 'Dodge', 'Viper', 1995);
4957
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4957, 'Eagle', 'Summit', 1995);
4958
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4958, 'Eagle', 'Talon', 1995);
4959
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4959, 'Eagle', 'Vision', 1995);
4960
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4960, 'Ford', 'Aerostar Cargo', 1995);
4961
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4961, 'Ford', 'Aerostar Passenger', 1995);
4962
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4962, 'Ford', 'Aspire', 1995);
4963
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4963, 'Ford', 'Bronco', 1995);
4964
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4964, 'Ford', 'Club Wagon', 1995);
4965
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4965, 'Ford', 'Contour', 1995);
4966
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4966, 'Ford', 'Crown Victoria', 1995);
4967
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4967, 'Ford', 'Econoline E150 Cargo', 1995);
4968
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4968, 'Ford', 'Econoline E250 Cargo', 1995);
4969
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4969, 'Ford', 'Econoline E350 Cargo', 1995);
4970
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4970, 'Ford', 'Escort', 1995);
4971
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4971, 'Ford', 'Explorer', 1995);
4972
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4972, 'Ford', 'F150 Regular Cab', 1995);
4973
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4973, 'Ford', 'F150 Super Cab', 1995);
4974
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4974, 'Ford', 'F250 Regular Cab', 1995);
4975
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4975, 'Ford', 'F250 Super Cab', 1995);
4976
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4976, 'Ford', 'F350 Crew Cab', 1995);
4977
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4977, 'Ford', 'F350 Regular Cab', 1995);
4978
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4978, 'Ford', 'F350 Super Cab', 1995);
4979
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4979, 'Ford', 'Mustang', 1995);
4980
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4980, 'Ford', 'Probe', 1995);
4981
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4981, 'Ford', 'Ranger Regular Cab', 1995);
4982
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4982, 'Ford', 'Ranger Super Cab', 1995);
4983
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4983, 'Ford', 'Taurus', 1995);
4984
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4984, 'Ford', 'Thunderbird', 1995);
4985
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4985, 'Ford', 'Windstar Cargo', 1995);
4986
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4986, 'Ford', 'Windstar Passenger', 1995);
4987
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4987, 'Geo', 'Metro', 1995);
4988
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4988, 'Geo', 'Prizm', 1995);
4989
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4989, 'Geo', 'Tracker', 1995);
4990
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4990, 'GMC', '1500 Club Coupe', 1995);
4991
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4991, 'GMC', '1500 Regular Cab', 1995);
4992
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4992, 'GMC', '2500 Club Coupe', 1995);
4993
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4993, 'GMC', '2500 Regular Cab', 1995);
4994
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4994, 'GMC', '3500 Club Coupe', 1995);
4995
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4995, 'GMC', '3500 Crew Cab', 1995);
4996
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4996, 'GMC', '3500 Regular Cab', 1995);
4997
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4997, 'GMC', 'Jimmy', 1995);
4998
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4998, 'GMC', 'Rally Wagon G2500', 1995);
4999
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (4999, 'GMC', 'Rally Wagon G3500', 1995);
5000
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5000, 'GMC', 'Safari Cargo', 1995);
5001
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5001, 'GMC', 'Safari Passenger', 1995);
5002
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5002, 'GMC', 'Sonoma Club Coupe Cab', 1995);
5003
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5003, 'GMC', 'Sonoma Regular Cab', 1995);
5004
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5004, 'GMC', 'Suburban 1500', 1995);
5005
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5005, 'GMC', 'Suburban 2500', 1995);
5006
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5006, 'GMC', 'Vandura G1500', 1995);
5007
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5007, 'GMC', 'Vandura G2500', 1995);
5008
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5008, 'GMC', 'Vandura G3500', 1995);
5009
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5009, 'GMC', 'Yukon', 1995);
5010
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5010, 'Honda', 'Accord', 1995);
5011
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5011, 'Honda', 'Civic', 1995);
5012
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5012, 'Honda', 'del Sol', 1995);
5013
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5013, 'Honda', 'Odyssey', 1995);
5014
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5014, 'Honda', 'Passport', 1995);
5015
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5015, 'Honda', 'Prelude', 1995);
5016
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5016, 'HUMMER', 'H1', 1995);
5017
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5017, 'Hyundai', 'Accent', 1995);
5018
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5018, 'Hyundai', 'Elantra', 1995);
5019
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5019, 'Hyundai', 'Scoupe', 1995);
5020
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5020, 'Hyundai', 'Sonata', 1995);
5021
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5021, 'Infiniti', 'G', 1995);
5022
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5022, 'Infiniti', 'J', 1995);
5023
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5023, 'Infiniti', 'Q', 1995);
5024
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5024, 'Isuzu', 'Regular Cab', 1995);
5025
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5025, 'Isuzu', 'Rodeo', 1995);
5026
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5026, 'Isuzu', 'Trooper', 1995);
5027
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5027, 'Jaguar', 'XJ Series', 1995);
5028
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5028, 'Jeep', 'Cherokee', 1995);
5029
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5029, 'Jeep', 'Grand Cherokee', 1995);
5030
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5030, 'Jeep', 'Wrangler', 1995);
5031
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5031, 'Kia', 'Sephia', 1995);
5032
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5032, 'Kia', 'Sportage', 1995);
5033
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5033, 'Land Rover', 'Defender 90', 1995);
5034
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5034, 'Land Rover', 'Discovery', 1995);
5035
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5035, 'Land Rover', 'Range Rover', 1995);
5036
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5036, 'Lexus', 'ES', 1995);
5037
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5037, 'Lexus', 'GS', 1995);
5038
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5038, 'Lexus', 'LS', 1995);
5039
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5039, 'Lexus', 'SC', 1995);
5040
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5040, 'Lincoln', 'Continental', 1995);
5041
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5041, 'Lincoln', 'Mark VIII', 1995);
5042
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5042, 'Lincoln', 'Town Car', 1995);
5043
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5043, 'Mazda', '626', 1995);
5044
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5044, 'Mazda', '929', 1995);
5045
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5045, 'Mazda', 'B-Series Cab Plus', 1995);
5046
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5046, 'Mazda', 'B-Series Regular Cab', 1995);
5047
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5047, 'Mazda', 'Miata MX-5', 1995);
5048
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5048, 'Mazda', 'Millenia', 1995);
5049
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5049, 'Mazda', 'MPV', 1995);
5050
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5050, 'Mazda', 'MX-3', 1995);
5051
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5051, 'Mazda', 'MX-6', 1995);
5052
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5052, 'Mazda', 'Protege', 1995);
5053
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5053, 'Mazda', 'RX-7', 1995);
5054
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5054, 'Mercedes-Benz', 'C-Class', 1995);
5055
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5055, 'Mercedes-Benz', 'E-Class', 1995);
5056
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5056, 'Mercedes-Benz', 'S-Class', 1995);
5057
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5057, 'Mercedes-Benz', 'SL-Class', 1995);
5058
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5058, 'Mercury', 'Cougar', 1995);
5059
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5059, 'Mercury', 'Grand Marquis', 1995);
5060
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5060, 'Mercury', 'Mystique', 1995);
5061
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5061, 'Mercury', 'Sable', 1995);
5062
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5062, 'Mercury', 'Tracer', 1995);
5063
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5063, 'Mercury', 'Villager', 1995);
5064
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5064, 'Mitsubishi', '3000GT', 1995);
5065
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5065, 'Mitsubishi', 'Diamante', 1995);
5066
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5066, 'Mitsubishi', 'Eclipse', 1995);
5067
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5067, 'Mitsubishi', 'Expo', 1995);
5068
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5068, 'Mitsubishi', 'Galant', 1995);
5069
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5069, 'Mitsubishi', 'Mighty Max Regular Cab', 1995);
5070
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5070, 'Mitsubishi', 'Mirage', 1995);
5071
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5071, 'Mitsubishi', 'Montero', 1995);
5072
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5072, 'Nissan', '200SX', 1995);
5073
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5073, 'Nissan', '240SX', 1995);
5074
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5074, 'Nissan', '300ZX', 1995);
5075
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5075, 'Nissan', 'Altima', 1995);
5076
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5076, 'Nissan', 'King Cab', 1995);
5077
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5077, 'Nissan', 'Maxima', 1995);
5078
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5078, 'Nissan', 'Pathfinder', 1995);
5079
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5079, 'Nissan', 'Quest', 1995);
5080
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5080, 'Nissan', 'Regular Cab', 1995);
5081
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5081, 'Nissan', 'Sentra', 1995);
5082
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5082, 'Oldsmobile', '88', 1995);
5083
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5083, 'Oldsmobile', '98', 1995);
5084
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5084, 'Oldsmobile', 'Achieva', 1995);
5085
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5085, 'Oldsmobile', 'Aurora', 1995);
5086
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5086, 'Oldsmobile', 'Ciera', 1995);
5087
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5087, 'Oldsmobile', 'Cutlass Supreme', 1995);
5088
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5088, 'Oldsmobile', 'Silhouette', 1995);
5089
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5089, 'Plymouth', 'Acclaim', 1995);
5090
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5090, 'Plymouth', 'Grand Voyager', 1995);
5091
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5091, 'Plymouth', 'Neon', 1995);
5092
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5092, 'Plymouth', 'Voyager', 1995);
5093
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5093, 'Pontiac', 'Bonneville', 1995);
5094
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5094, 'Pontiac', 'Firebird', 1995);
5095
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5095, 'Pontiac', 'Grand Am', 1995);
5096
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5096, 'Pontiac', 'Grand Prix', 1995);
5097
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5097, 'Pontiac', 'Sunfire', 1995);
5098
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5098, 'Pontiac', 'Trans Sport', 1995);
5099
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5099, 'Porsche', '911', 1995);
5100
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5100, 'Porsche', '928', 1995);
5101
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5101, 'Porsche', '968', 1995);
5102
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5102, 'Saab', '900', 1995);
5103
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5103, 'Saab', '9000', 1995);
5104
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5104, 'Saturn', 'S-Series', 1995);
5105
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5105, 'Subaru', 'Impreza', 1995);
5106
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5106, 'Subaru', 'Legacy', 1995);
5107
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5107, 'Subaru', 'SVX', 1995);
5108
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5108, 'Suzuki', 'Esteem', 1995);
5109
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5109, 'Suzuki', 'Samurai', 1995);
5110
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5110, 'Suzuki', 'Sidekick', 1995);
5111
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5111, 'Suzuki', 'Swift', 1995);
5112
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5112, 'Toyota', '4Runner', 1995);
5113
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5113, 'Toyota', 'Avalon', 1995);
5114
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5114, 'Toyota', 'Camry', 1995);
5115
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5115, 'Toyota', 'Celica', 1995);
5116
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5116, 'Toyota', 'Corolla', 1995);
5117
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5117, 'Toyota', 'Land Cruiser', 1995);
5118
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5118, 'Toyota', 'MR2', 1995);
5119
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5119, 'Toyota', 'Paseo', 1995);
5120
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5120, 'Toyota', 'Previa', 1995);
5121
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5121, 'Toyota', 'Regular Cab', 1995);
5122
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5122, 'Toyota', 'Supra', 1995);
5123
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5123, 'Toyota', 'T100 Regular Cab', 1995);
5124
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5124, 'Toyota', 'T100 Xtracab', 1995);
5125
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5125, 'Toyota', 'Tacoma Regular Cab', 1995);
5126
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5126, 'Toyota', 'Tacoma Xtracab', 1995);
5127
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5127, 'Toyota', 'Tercel', 1995);
5128
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5128, 'Toyota', 'Xtra Cab', 1995);
5129
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5129, 'Volkswagen', 'Cabrio', 1995);
5130
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5130, 'Volkswagen', 'Golf III', 1995);
5131
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5131, 'Volkswagen', 'GTI', 1995);
5132
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5132, 'Volkswagen', 'Jetta III', 1995);
5133
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5133, 'Volkswagen', 'Passat', 1995);
5134
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5134, 'Volvo', '850', 1995);
5135
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5135, 'Volvo', '940', 1995);
5136
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5136, 'Volvo', '960', 1995);
5137
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5137, 'Acura', 'Integra', 1994);
5138
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5138, 'Acura', 'Legend', 1994);
5139
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5139, 'Acura', 'NSX', 1994);
5140
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5140, 'Acura', 'Vigor', 1994);
5141
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5141, 'Alfa Romeo', '164', 1994);
5142
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5142, 'Alfa Romeo', 'Spider', 1994);
5143
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5143, 'Audi', '100', 1994);
5144
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5144, 'Audi', '90', 1994);
5145
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5145, 'Audi', 'Cabriolet', 1994);
5146
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5146, 'Audi', 'Quattro', 1994);
5147
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5147, 'Audi', 'S4', 1994);
5148
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5148, 'BMW', '3 Series', 1994);
5149
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5149, 'BMW', '5 Series', 1994);
5150
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5150, 'BMW', '7 Series', 1994);
5151
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5151, 'BMW', '8 Series', 1994);
5152
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5152, 'Buick', 'Century', 1994);
5153
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5153, 'Buick', 'LeSabre', 1994);
5154
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5154, 'Buick', 'Park Avenue', 1994);
5155
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5155, 'Buick', 'Regal', 1994);
5156
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5156, 'Buick', 'Roadmaster', 1994);
5157
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5157, 'Buick', 'Skylark', 1994);
5158
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5158, 'Cadillac', 'DeVille', 1994);
5159
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5159, 'Cadillac', 'Eldorado', 1994);
5160
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5160, 'Cadillac', 'Fleetwood', 1994);
5161
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5161, 'Cadillac', 'Seville', 1994);
5162
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5162, 'Chevrolet', '1500 Extended Cab', 1994);
5163
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5163, 'Chevrolet', '1500 Regular Cab', 1994);
5164
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5164, 'Chevrolet', '2500 Extended Cab', 1994);
5165
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5165, 'Chevrolet', '2500 Regular Cab', 1994);
5166
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5166, 'Chevrolet', '3500 Crew Cab', 1994);
5167
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5167, 'Chevrolet', '3500 Extended Cab', 1994);
5168
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5168, 'Chevrolet', '3500 Regular Cab', 1994);
5169
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5169, 'Chevrolet', 'Astro Cargo', 1994);
5170
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5170, 'Chevrolet', 'Astro Passenger', 1994);
5171
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5171, 'Chevrolet', 'Beretta', 1994);
5172
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5172, 'Chevrolet', 'Blazer', 1994);
5173
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5173, 'Chevrolet', 'Camaro', 1994);
5174
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5174, 'Chevrolet', 'Caprice Classic', 1994);
5175
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5175, 'Chevrolet', 'Cavalier', 1994);
5176
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5176, 'Chevrolet', 'Corsica', 1994);
5177
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5177, 'Chevrolet', 'Corvette', 1994);
5178
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5178, 'Chevrolet', 'G-Series G10', 1994);
5179
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5179, 'Chevrolet', 'G-Series G20', 1994);
5180
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5180, 'Chevrolet', 'G-Series G30', 1994);
5181
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5181, 'Chevrolet', 'Impala', 1994);
5182
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5182, 'Chevrolet', 'Lumina', 1994);
5183
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5183, 'Chevrolet', 'Lumina Cargo', 1994);
5184
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5184, 'Chevrolet', 'Lumina Passenger', 1994);
5185
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5185, 'Chevrolet', 'S10 Blazer', 1994);
5186
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5186, 'Chevrolet', 'S10 Extended Cab', 1994);
5187
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5187, 'Chevrolet', 'S10 Regular Cab', 1994);
5188
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5188, 'Chevrolet', 'Sportvan G20', 1994);
5189
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5189, 'Chevrolet', 'Sportvan G30', 1994);
5190
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5190, 'Chevrolet', 'Suburban 1500', 1994);
5191
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5191, 'Chevrolet', 'Suburban 2500', 1994);
5192
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5192, 'Chrysler', 'Concorde', 1994);
5193
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5193, 'Chrysler', 'LeBaron', 1994);
5194
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5194, 'Chrysler', 'LHS', 1994);
5195
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5195, 'Chrysler', 'New Yorker', 1994);
5196
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5196, 'Chrysler', 'Town & Country', 1994);
5197
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5197, 'Dodge', 'Caravan Cargo', 1994);
5198
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5198, 'Dodge', 'Caravan Passenger', 1994);
5199
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5199, 'Dodge', 'Colt', 1994);
5200
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5200, 'Dodge', 'Dakota Club Cab', 1994);
5201
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5201, 'Dodge', 'Dakota Regular Cab', 1994);
5202
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5202, 'Dodge', 'Grand Caravan Passenger', 1994);
5203
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5203, 'Dodge', 'Intrepid', 1994);
5204
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5204, 'Dodge', 'Ram 1500 Regular Cab', 1994);
5205
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5205, 'Dodge', 'Ram 2500 Regular Cab', 1994);
5206
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5206, 'Dodge', 'Ram 3500 Regular Cab', 1994);
5207
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5207, 'Dodge', 'Ram Van B150', 1994);
5208
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5208, 'Dodge', 'Ram Van B250', 1994);
5209
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5209, 'Dodge', 'Ram Van B350', 1994);
5210
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5210, 'Dodge', 'Ram Wagon B150', 1994);
5211
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5211, 'Dodge', 'Ram Wagon B250', 1994);
5212
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5212, 'Dodge', 'Ram Wagon B350', 1994);
5213
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5213, 'Dodge', 'Shadow', 1994);
5214
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5214, 'Dodge', 'Spirit', 1994);
5215
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5215, 'Dodge', 'Stealth', 1994);
5216
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5216, 'Dodge', 'Viper', 1994);
5217
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5217, 'Eagle', 'Summit', 1994);
5218
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5218, 'Eagle', 'Talon', 1994);
5219
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5219, 'Eagle', 'Vision', 1994);
5220
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5220, 'Ford', 'Aerostar Cargo', 1994);
5221
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5221, 'Ford', 'Aerostar Passenger', 1994);
5222
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5222, 'Ford', 'Aspire', 1994);
5223
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5223, 'Ford', 'Bronco', 1994);
5224
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5224, 'Ford', 'Club Wagon', 1994);
5225
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5225, 'Ford', 'Crown Victoria', 1994);
5226
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5226, 'Ford', 'Econoline E150 Cargo', 1994);
5227
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5227, 'Ford', 'Econoline E250 Cargo', 1994);
5228
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5228, 'Ford', 'Econoline E350 Cargo', 1994);
5229
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5229, 'Ford', 'Escort', 1994);
5230
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5230, 'Ford', 'Explorer', 1994);
5231
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5231, 'Ford', 'F150 Regular Cab', 1994);
5232
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5232, 'Ford', 'F150 Super Cab', 1994);
5233
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5233, 'Ford', 'F250 Regular Cab', 1994);
5234
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5234, 'Ford', 'F250 Super Cab', 1994);
5235
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5235, 'Ford', 'F350 Crew Cab', 1994);
5236
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5236, 'Ford', 'F350 Regular Cab', 1994);
5237
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5237, 'Ford', 'F350 Super Cab', 1994);
5238
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5238, 'Ford', 'Mustang', 1994);
5239
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5239, 'Ford', 'Probe', 1994);
5240
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5240, 'Ford', 'Ranger Regular Cab', 1994);
5241
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5241, 'Ford', 'Ranger Super Cab', 1994);
5242
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5242, 'Ford', 'Taurus', 1994);
5243
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5243, 'Ford', 'Tempo', 1994);
5244
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5244, 'Ford', 'Thunderbird', 1994);
5245
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5245, 'Geo', 'Metro', 1994);
5246
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5246, 'Geo', 'Prizm', 1994);
5247
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5247, 'Geo', 'Tracker', 1994);
5248
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5248, 'GMC', '1500 Club Coupe', 1994);
5249
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5249, 'GMC', '1500 Regular Cab', 1994);
5250
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5250, 'GMC', '2500 Club Coupe', 1994);
5251
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5251, 'GMC', '2500 Regular Cab', 1994);
5252
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5252, 'GMC', '3500 Club Coupe', 1994);
5253
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5253, 'GMC', '3500 Crew Cab', 1994);
5254
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5254, 'GMC', '3500 Regular Cab', 1994);
5255
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5255, 'GMC', 'Jimmy', 1994);
5256
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5256, 'GMC', 'Rally Wagon 2500', 1994);
5257
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5257, 'GMC', 'Rally Wagon 3500', 1994);
5258
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5258, 'GMC', 'Safari Cargo', 1994);
5259
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5259, 'GMC', 'Safari Passenger', 1994);
5260
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5260, 'GMC', 'Sonoma Club Coupe Cab', 1994);
5261
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5261, 'GMC', 'Sonoma Regular Cab', 1994);
5262
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5262, 'GMC', 'Suburban 1500', 1994);
5263
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5263, 'GMC', 'Suburban 2500', 1994);
5264
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5264, 'GMC', 'Vandura 1500', 1994);
5265
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5265, 'GMC', 'Vandura 2500', 1994);
5266
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5266, 'GMC', 'Vandura 3500', 1994);
5267
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5267, 'GMC', 'Yukon', 1994);
5268
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5268, 'Honda', 'Accord', 1994);
5269
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5269, 'Honda', 'Civic', 1994);
5270
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5270, 'Honda', 'del Sol', 1994);
5271
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5271, 'Honda', 'Passport', 1994);
5272
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5272, 'Honda', 'Prelude', 1994);
5273
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5273, 'HUMMER', 'H1', 1994);
5274
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5274, 'Hyundai', 'Elantra', 1994);
5275
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5275, 'Hyundai', 'Excel', 1994);
5276
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5276, 'Hyundai', 'Scoupe', 1994);
5277
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5277, 'Hyundai', 'Sonata', 1994);
5278
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5278, 'Infiniti', 'G', 1994);
5279
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5279, 'Infiniti', 'J', 1994);
5280
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5280, 'Infiniti', 'Q', 1994);
5281
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5281, 'Isuzu', 'Amigo', 1994);
5282
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5282, 'Isuzu', 'Regular Cab', 1994);
5283
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5283, 'Isuzu', 'Rodeo', 1994);
5284
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5284, 'Isuzu', 'Spacecab', 1994);
5285
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5285, 'Isuzu', 'Trooper', 1994);
5286
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5286, 'Jaguar', 'XJ Series', 1994);
5287
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5287, 'Jeep', 'Cherokee', 1994);
5288
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5288, 'Jeep', 'Grand Cherokee', 1994);
5289
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5289, 'Jeep', 'Wrangler', 1994);
5290
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5290, 'Kia', 'Sephia', 1994);
5291
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5291, 'Land Rover', 'Defender 90', 1994);
5292
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5292, 'Land Rover', 'Discovery', 1994);
5293
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5293, 'Land Rover', 'Range Rover', 1994);
5294
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5294, 'Lexus', 'ES', 1994);
5295
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5295, 'Lexus', 'GS', 1994);
5296
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5296, 'Lexus', 'LS', 1994);
5297
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5297, 'Lexus', 'SC', 1994);
5298
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5298, 'Lincoln', 'Continental', 1994);
5299
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5299, 'Lincoln', 'Mark VIII', 1994);
5300
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5300, 'Lincoln', 'Town Car', 1994);
5301
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5301, 'Mazda', '323', 1994);
5302
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5302, 'Mazda', '626', 1994);
5303
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5303, 'Mazda', '929', 1994);
5304
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5304, 'Mazda', 'B-Series Cab Plus', 1994);
5305
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5305, 'Mazda', 'B-Series Regular Cab', 1994);
5306
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5306, 'Mazda', 'Miata MX-5', 1994);
5307
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5307, 'Mazda', 'MPV', 1994);
5308
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5308, 'Mazda', 'MX-3', 1994);
5309
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5309, 'Mazda', 'MX-6', 1994);
5310
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5310, 'Mazda', 'Navajo', 1994);
5311
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5311, 'Mazda', 'Protege', 1994);
5312
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5312, 'Mazda', 'RX-7', 1994);
5313
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5313, 'Mercedes-Benz', 'C-Class', 1994);
5314
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5314, 'Mercedes-Benz', 'E-Class', 1994);
5315
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5315, 'Mercedes-Benz', 'S-Class', 1994);
5316
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5316, 'Mercedes-Benz', 'SL-Class', 1994);
5317
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5317, 'Mercury', 'Capri', 1994);
5318
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5318, 'Mercury', 'Cougar', 1994);
5319
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5319, 'Mercury', 'Grand Marquis', 1994);
5320
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5320, 'Mercury', 'Sable', 1994);
5321
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5321, 'Mercury', 'Topaz', 1994);
5322
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5322, 'Mercury', 'Tracer', 1994);
5323
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5323, 'Mercury', 'Villager', 1994);
5324
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5324, 'Mitsubishi', '3000GT', 1994);
5325
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5325, 'Mitsubishi', 'Diamante', 1994);
5326
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5326, 'Mitsubishi', 'Eclipse', 1994);
5327
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5327, 'Mitsubishi', 'Expo', 1994);
5328
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5328, 'Mitsubishi', 'Galant', 1994);
5329
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5329, 'Mitsubishi', 'Mighty Max Macro Cab', 1994);
5330
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5330, 'Mitsubishi', 'Mighty Max Regular Cab', 1994);
5331
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5331, 'Mitsubishi', 'Mirage', 1994);
5332
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5332, 'Mitsubishi', 'Montero', 1994);
5333
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5333, 'Mitsubishi', 'Precis', 1994);
5334
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5334, 'Nissan', '240SX', 1994);
5335
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5335, 'Nissan', '300ZX', 1994);
5336
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5336, 'Nissan', 'Altima', 1994);
5337
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5337, 'Nissan', 'King Cab', 1994);
5338
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5338, 'Nissan', 'Maxima', 1994);
5339
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5339, 'Nissan', 'Pathfinder', 1994);
5340
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5340, 'Nissan', 'Quest', 1994);
5341
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5341, 'Nissan', 'Regular Cab', 1994);
5342
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5342, 'Nissan', 'Sentra', 1994);
5343
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5343, 'Oldsmobile', '88', 1994);
5344
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5344, 'Oldsmobile', '98', 1994);
5345
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5345, 'Oldsmobile', 'Achieva', 1994);
5346
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5346, 'Oldsmobile', 'Bravada', 1994);
5347
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5347, 'Oldsmobile', 'Ciera', 1994);
5348
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5348, 'Oldsmobile', 'Cutlass Cruiser', 1994);
5349
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5349, 'Oldsmobile', 'Cutlass Supreme', 1994);
5350
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5350, 'Oldsmobile', 'Silhouette', 1994);
5351
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5351, 'Plymouth', 'Acclaim', 1994);
5352
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5352, 'Plymouth', 'Colt', 1994);
5353
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5353, 'Plymouth', 'Colt Vista', 1994);
5354
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5354, 'Plymouth', 'Grand Voyager', 1994);
5355
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5355, 'Plymouth', 'Laser', 1994);
5356
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5356, 'Plymouth', 'Sundance', 1994);
5357
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5357, 'Plymouth', 'Voyager', 1994);
5358
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5358, 'Pontiac', 'Bonneville', 1994);
5359
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5359, 'Pontiac', 'Firebird', 1994);
5360
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5360, 'Pontiac', 'Grand Am', 1994);
5361
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5361, 'Pontiac', 'Grand Prix', 1994);
5362
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5362, 'Pontiac', 'Sunbird', 1994);
5363
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5363, 'Pontiac', 'Trans Sport', 1994);
5364
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5364, 'Porsche', '911', 1994);
5365
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5365, 'Porsche', '928', 1994);
5366
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5366, 'Porsche', '968', 1994);
5367
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5367, 'Saab', '900', 1994);
5368
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5368, 'Saab', '9000', 1994);
5369
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5369, 'Saturn', 'S-Series', 1994);
5370
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5370, 'Subaru', 'Impreza', 1994);
5371
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5371, 'Subaru', 'Justy', 1994);
5372
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5372, 'Subaru', 'Legacy', 1994);
5373
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5373, 'Subaru', 'Loyale', 1994);
5374
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5374, 'Subaru', 'SVX', 1994);
5375
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5375, 'Suzuki', 'Samurai', 1994);
5376
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5376, 'Suzuki', 'Sidekick', 1994);
5377
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5377, 'Suzuki', 'Swift', 1994);
5378
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5378, 'Toyota', '4Runner', 1994);
5379
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5379, 'Toyota', 'Camry', 1994);
5380
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5380, 'Toyota', 'Celica', 1994);
5381
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5381, 'Toyota', 'Corolla', 1994);
5382
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5382, 'Toyota', 'Land Cruiser', 1994);
5383
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5383, 'Toyota', 'MR2', 1994);
5384
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5384, 'Toyota', 'Paseo', 1994);
5385
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5385, 'Toyota', 'Previa', 1994);
5386
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5386, 'Toyota', 'Regular Cab', 1994);
5387
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5387, 'Toyota', 'Supra', 1994);
5388
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5388, 'Toyota', 'T100 Regular Cab', 1994);
5389
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5389, 'Toyota', 'Tercel', 1994);
5390
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5390, 'Toyota', 'Xtra Cab', 1994);
5391
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5391, 'Volkswagen', 'Corrado', 1994);
5392
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5392, 'Volkswagen', 'Golf III', 1994);
5393
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5393, 'Volkswagen', 'Jetta III', 1994);
5394
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5394, 'Volkswagen', 'Passat', 1994);
5395
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5395, 'Volvo', '850', 1994);
5396
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5396, 'Volvo', '940', 1994);
5397
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5397, 'Volvo', '960', 1994);
5398
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5398, 'Acura', 'Integra', 1993);
5399
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5399, 'Acura', 'Legend', 1993);
5400
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5400, 'Acura', 'NSX', 1993);
5401
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5401, 'Acura', 'Vigor', 1993);
5402
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5402, 'Alfa Romeo', '164', 1993);
5403
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5403, 'Alfa Romeo', 'Spider', 1993);
5404
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5404, 'Audi', '100', 1993);
5405
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5405, 'Audi', '90', 1993);
5406
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5406, 'Audi', 'Quattro', 1993);
5407
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5407, 'Audi', 'S4', 1993);
5408
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5408, 'BMW', '3 Series', 1993);
5409
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5409, 'BMW', '5 Series', 1993);
5410
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5410, 'BMW', '7 Series', 1993);
5411
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5411, 'BMW', '8 Series', 1993);
5412
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5412, 'BMW', 'M5', 1993);
5413
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5413, 'Buick', 'Century', 1993);
5414
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5414, 'Buick', 'LeSabre', 1993);
5415
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5415, 'Buick', 'Park Avenue', 1993);
5416
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5416, 'Buick', 'Regal', 1993);
5417
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5417, 'Buick', 'Riviera', 1993);
5418
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5418, 'Buick', 'Roadmaster', 1993);
5419
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5419, 'Buick', 'Skylark', 1993);
5420
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5420, 'Cadillac', 'Allante', 1993);
5421
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5421, 'Cadillac', 'DeVille', 1993);
5422
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5422, 'Cadillac', 'Eldorado', 1993);
5423
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5423, 'Cadillac', 'Fleetwood', 1993);
5424
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5424, 'Cadillac', 'Seville', 1993);
5425
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5425, 'Cadillac', 'Sixty Special', 1993);
5426
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5426, 'Chevrolet', '1500 Extended Cab', 1993);
5427
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5427, 'Chevrolet', '1500 Regular Cab', 1993);
5428
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5428, 'Chevrolet', '2500 Extended Cab', 1993);
5429
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5429, 'Chevrolet', '2500 Regular Cab', 1993);
5430
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5430, 'Chevrolet', '3500 Crew Cab', 1993);
5431
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5431, 'Chevrolet', '3500 Extended Cab', 1993);
5432
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5432, 'Chevrolet', '3500 Regular Cab', 1993);
5433
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5433, 'Chevrolet', 'APV Cargo', 1993);
5434
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5434, 'Chevrolet', 'Astro Cargo', 1993);
5435
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5435, 'Chevrolet', 'Astro Passenger', 1993);
5436
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5436, 'Chevrolet', 'Beretta', 1993);
5437
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5437, 'Chevrolet', 'Blazer', 1993);
5438
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5438, 'Chevrolet', 'Camaro', 1993);
5439
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5439, 'Chevrolet', 'Caprice Classic', 1993);
5440
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5440, 'Chevrolet', 'Cavalier', 1993);
5441
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5441, 'Chevrolet', 'Corsica', 1993);
5442
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5442, 'Chevrolet', 'Corvette', 1993);
5443
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5443, 'Chevrolet', 'G-Series G10', 1993);
5444
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5444, 'Chevrolet', 'G-Series G20', 1993);
5445
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5445, 'Chevrolet', 'G-Series G30', 1993);
5446
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5446, 'Chevrolet', 'Lumina', 1993);
5447
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5447, 'Chevrolet', 'Lumina APV', 1993);
5448
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5448, 'Chevrolet', 'S10 Blazer', 1993);
5449
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5449, 'Chevrolet', 'S10 Extended Cab', 1993);
5450
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5450, 'Chevrolet', 'S10 Regular Cab', 1993);
5451
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5451, 'Chevrolet', 'Sportvan G10', 1993);
5452
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5452, 'Chevrolet', 'Sportvan G20', 1993);
5453
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5453, 'Chevrolet', 'Sportvan G30', 1993);
5454
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5454, 'Chevrolet', 'Suburban 1500', 1993);
5455
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5455, 'Chevrolet', 'Suburban 2500', 1993);
5456
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5456, 'Chrysler', 'Concorde', 1993);
5457
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5457, 'Chrysler', 'Fifth Ave', 1993);
5458
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5458, 'Chrysler', 'Imperial', 1993);
5459
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5459, 'Chrysler', 'LeBaron', 1993);
5460
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5460, 'Chrysler', 'New Yorker', 1993);
5461
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5461, 'Chrysler', 'Town & Country', 1993);
5462
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5462, 'Dodge', 'Caravan Cargo', 1993);
5463
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5463, 'Dodge', 'Caravan Passenger', 1993);
5464
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5464, 'Dodge', 'Colt', 1993);
5465
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5465, 'Dodge', 'D150 Club Cab', 1993);
5466
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5466, 'Dodge', 'D150 Regular Cab', 1993);
5467
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5467, 'Dodge', 'D250 Club Cab', 1993);
5468
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5468, 'Dodge', 'D250 Regular Cab', 1993);
5469
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5469, 'Dodge', 'D350 Club Cab', 1993);
5470
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5470, 'Dodge', 'D350 Regular Cab', 1993);
5471
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5471, 'Dodge', 'Dakota Club Cab', 1993);
5472
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5472, 'Dodge', 'Dakota Regular Cab', 1993);
5473
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5473, 'Dodge', 'Daytona', 1993);
5474
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5474, 'Dodge', 'Dynasty', 1993);
5475
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5475, 'Dodge', 'Grand Caravan Passenger', 1993);
5476
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5476, 'Dodge', 'Intrepid', 1993);
5477
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5477, 'Dodge', 'Ram 50 Regular Cab', 1993);
5478
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5478, 'Dodge', 'Ram Van B150', 1993);
5479
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5479, 'Dodge', 'Ram Van B250', 1993);
5480
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5480, 'Dodge', 'Ram Van B350', 1993);
5481
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5481, 'Dodge', 'Ram Wagon B150', 1993);
5482
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5482, 'Dodge', 'Ram Wagon B250', 1993);
5483
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5483, 'Dodge', 'Ram Wagon B350', 1993);
5484
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5484, 'Dodge', 'Ramcharger', 1993);
5485
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5485, 'Dodge', 'Shadow', 1993);
5486
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5486, 'Dodge', 'Spirit', 1993);
5487
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5487, 'Dodge', 'Stealth', 1993);
5488
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5488, 'Dodge', 'Viper', 1993);
5489
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5489, 'Eagle', 'Summit', 1993);
5490
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5490, 'Eagle', 'Talon', 1993);
5491
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5491, 'Eagle', 'Vision', 1993);
5492
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5492, 'Ford', 'Aerostar Cargo', 1993);
5493
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5493, 'Ford', 'Aerostar Passenger', 1993);
5494
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5494, 'Ford', 'Bronco', 1993);
5495
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5495, 'Ford', 'Club Wagon', 1993);
5496
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5496, 'Ford', 'Crown Victoria', 1993);
5497
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5497, 'Ford', 'Econoline E150 Cargo', 1993);
5498
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5498, 'Ford', 'Econoline E250 Cargo', 1993);
5499
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5499, 'Ford', 'Econoline E350 Cargo', 1993);
5500
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5500, 'Ford', 'Escort', 1993);
5501
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5501, 'Ford', 'Explorer', 1993);
5502
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5502, 'Ford', 'F150 Regular Cab', 1993);
5503
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5503, 'Ford', 'F150 Super Cab', 1993);
5504
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5504, 'Ford', 'F250 Regular Cab', 1993);
5505
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5505, 'Ford', 'F250 Super Cab', 1993);
5506
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5506, 'Ford', 'F350 Crew Cab', 1993);
5507
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5507, 'Ford', 'F350 Regular Cab', 1993);
5508
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5508, 'Ford', 'F350 Super Cab', 1993);
5509
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5509, 'Ford', 'Festiva', 1993);
5510
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5510, 'Ford', 'Mustang', 1993);
5511
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5511, 'Ford', 'Probe', 1993);
5512
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5512, 'Ford', 'Ranger Regular Cab', 1993);
5513
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5513, 'Ford', 'Ranger Super Cab', 1993);
5514
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5514, 'Ford', 'Taurus', 1993);
5515
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5515, 'Ford', 'Tempo', 1993);
5516
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5516, 'Ford', 'Thunderbird', 1993);
5517
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5517, 'Geo', 'Metro', 1993);
5518
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5518, 'Geo', 'Prizm', 1993);
5519
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5519, 'Geo', 'Storm', 1993);
5520
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5520, 'Geo', 'Tracker', 1993);
5521
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5521, 'GMC', '1500 Club Coupe', 1993);
5522
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5522, 'GMC', '1500 Regular Cab', 1993);
5523
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5523, 'GMC', '2500 Club Coupe', 1993);
5524
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5524, 'GMC', '2500 Regular Cab', 1993);
5525
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5525, 'GMC', '3500 Club Coupe', 1993);
5526
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5526, 'GMC', '3500 Crew Cab', 1993);
5527
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5527, 'GMC', '3500 Regular Cab', 1993);
5528
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5528, 'GMC', 'Jimmy', 1993);
5529
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5529, 'GMC', 'Rally Wagon 1500', 1993);
5530
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5530, 'GMC', 'Rally Wagon 2500', 1993);
5531
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5531, 'GMC', 'Rally Wagon 3500', 1993);
5532
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5532, 'GMC', 'Safari Cargo', 1993);
5533
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5533, 'GMC', 'Safari Passenger', 1993);
5534
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5534, 'GMC', 'Sonoma Club Coupe Cab', 1993);
5535
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5535, 'GMC', 'Sonoma Regular Cab', 1993);
5536
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5536, 'GMC', 'Suburban 1500', 1993);
5537
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5537, 'GMC', 'Suburban 2500', 1993);
5538
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5538, 'GMC', 'Vandura 1500', 1993);
5539
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5539, 'GMC', 'Vandura 2500', 1993);
5540
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5540, 'GMC', 'Vandura 3500', 1993);
5541
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5541, 'GMC', 'Yukon', 1993);
5542
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5542, 'Honda', 'Accord', 1993);
5543
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5543, 'Honda', 'Civic', 1993);
5544
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5544, 'Honda', 'del Sol', 1993);
5545
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5545, 'Honda', 'Prelude', 1993);
5546
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5546, 'HUMMER', 'H1', 1993);
5547
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5547, 'Hyundai', 'Elantra', 1993);
5548
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5548, 'Hyundai', 'Excel', 1993);
5549
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5549, 'Hyundai', 'Scoupe', 1993);
5550
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5550, 'Hyundai', 'Sonata', 1993);
5551
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5551, 'Infiniti', 'G', 1993);
5552
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5552, 'Infiniti', 'J', 1993);
5553
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5553, 'Infiniti', 'Q', 1993);
5554
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5554, 'Isuzu', 'Amigo', 1993);
5555
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5555, 'Isuzu', 'Regular Cab', 1993);
5556
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5556, 'Isuzu', 'Rodeo', 1993);
5557
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5557, 'Isuzu', 'Spacecab', 1993);
5558
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5558, 'Isuzu', 'Stylus', 1993);
5559
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5559, 'Isuzu', 'Trooper', 1993);
5560
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5560, 'Jaguar', 'XJ Series', 1993);
5561
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5561, 'Jeep', 'Cherokee', 1993);
5562
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5562, 'Jeep', 'Grand Cherokee', 1993);
5563
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5563, 'Jeep', 'Wrangler', 1993);
5564
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5564, 'Land Rover', 'Defender 110', 1993);
5565
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5565, 'Land Rover', 'Range Rover', 1993);
5566
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5566, 'Lexus', 'ES', 1993);
5567
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5567, 'Lexus', 'GS', 1993);
5568
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5568, 'Lexus', 'LS', 1993);
5569
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5569, 'Lexus', 'SC', 1993);
5570
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5570, 'Lincoln', 'Continental', 1993);
5571
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5571, 'Lincoln', 'Mark VIII', 1993);
5572
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5572, 'Lincoln', 'Town Car', 1993);
5573
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5573, 'Mazda', '323', 1993);
5574
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5574, 'Mazda', '626', 1993);
5575
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5575, 'Mazda', '929', 1993);
5576
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5576, 'Mazda', 'B-Series Cab Plus', 1993);
5577
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5577, 'Mazda', 'B-Series Regular Cab', 1993);
5578
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5578, 'Mazda', 'Miata MX-5', 1993);
5579
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5579, 'Mazda', 'MPV', 1993);
5580
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5580, 'Mazda', 'MX-3', 1993);
5581
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5581, 'Mazda', 'MX-6', 1993);
5582
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5582, 'Mazda', 'Navajo', 1993);
5583
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5583, 'Mazda', 'Protege', 1993);
5584
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5584, 'Mazda', 'RX-7', 1993);
5585
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5585, 'Mercedes-Benz', '190E', 1993);
5586
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5586, 'Mercedes-Benz', '300CE', 1993);
5587
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5587, 'Mercedes-Benz', '300D', 1993);
5588
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5588, 'Mercedes-Benz', '300E', 1993);
5589
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5589, 'Mercedes-Benz', '300SD', 1993);
5590
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5590, 'Mercedes-Benz', '300SE', 1993);
5591
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5591, 'Mercedes-Benz', '300SL', 1993);
5592
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5592, 'Mercedes-Benz', '300TE', 1993);
5593
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5593, 'Mercedes-Benz', '400E', 1993);
5594
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5594, 'Mercedes-Benz', '400SEL', 1993);
5595
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5595, 'Mercedes-Benz', '500E', 1993);
5596
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5596, 'Mercedes-Benz', '500SEC', 1993);
5597
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5597, 'Mercedes-Benz', '500SEL', 1993);
5598
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5598, 'Mercedes-Benz', '500SL', 1993);
5599
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5599, 'Mercedes-Benz', '600SEC', 1993);
5600
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5600, 'Mercedes-Benz', '600SEL', 1993);
5601
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5601, 'Mercedes-Benz', '600SL', 1993);
5602
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5602, 'Mercury', 'Capri', 1993);
5603
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5603, 'Mercury', 'Cougar', 1993);
5604
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5604, 'Mercury', 'Grand Marquis', 1993);
5605
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5605, 'Mercury', 'Sable', 1993);
5606
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5606, 'Mercury', 'Topaz', 1993);
5607
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5607, 'Mercury', 'Tracer', 1993);
5608
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5608, 'Mercury', 'Villager', 1993);
5609
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5609, 'Mitsubishi', '3000GT', 1993);
5610
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5610, 'Mitsubishi', 'Diamante', 1993);
5611
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5611, 'Mitsubishi', 'Eclipse', 1993);
5612
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5612, 'Mitsubishi', 'Expo', 1993);
5613
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5613, 'Mitsubishi', 'Galant', 1993);
5614
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5614, 'Mitsubishi', 'Mighty Max Macro Cab', 1993);
5615
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5615, 'Mitsubishi', 'Mighty Max Regular Cab', 1993);
5616
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5616, 'Mitsubishi', 'Mirage', 1993);
5617
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5617, 'Mitsubishi', 'Montero', 1993);
5618
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5618, 'Mitsubishi', 'Precis', 1993);
5619
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5619, 'Nissan', '240SX', 1993);
5620
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5620, 'Nissan', '300ZX', 1993);
5621
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5621, 'Nissan', 'Altima', 1993);
5622
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5622, 'Nissan', 'King Cab', 1993);
5623
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5623, 'Nissan', 'Maxima', 1993);
5624
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5624, 'Nissan', 'NX', 1993);
5625
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5625, 'Nissan', 'Pathfinder', 1993);
5626
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5626, 'Nissan', 'Quest', 1993);
5627
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5627, 'Nissan', 'Regular Cab', 1993);
5628
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5628, 'Nissan', 'Sentra', 1993);
5629
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5629, 'Oldsmobile', '88', 1993);
5630
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5630, 'Oldsmobile', '98', 1993);
5631
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5631, 'Oldsmobile', 'Achieva', 1993);
5632
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5632, 'Oldsmobile', 'Bravada', 1993);
5633
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5633, 'Oldsmobile', 'Ciera', 1993);
5634
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5634, 'Oldsmobile', 'Cutlass Cruiser', 1993);
5635
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5635, 'Oldsmobile', 'Cutlass Supreme', 1993);
5636
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5636, 'Oldsmobile', 'Silhouette', 1993);
5637
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5637, 'Plymouth', 'Acclaim', 1993);
5638
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5638, 'Plymouth', 'Colt', 1993);
5639
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5639, 'Plymouth', 'Colt Vista', 1993);
5640
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5640, 'Plymouth', 'Grand Voyager', 1993);
5641
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5641, 'Plymouth', 'Laser', 1993);
5642
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5642, 'Plymouth', 'Sundance', 1993);
5643
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5643, 'Plymouth', 'Voyager', 1993);
5644
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5644, 'Pontiac', 'Bonneville', 1993);
5645
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5645, 'Pontiac', 'Firebird', 1993);
5646
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5646, 'Pontiac', 'Grand Am', 1993);
5647
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5647, 'Pontiac', 'Grand Prix', 1993);
5648
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5648, 'Pontiac', 'LeMans', 1993);
5649
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5649, 'Pontiac', 'Sunbird', 1993);
5650
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5650, 'Pontiac', 'Trans Sport', 1993);
5651
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5651, 'Porsche', '911', 1993);
5652
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5652, 'Porsche', '928', 1993);
5653
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5653, 'Porsche', '968', 1993);
5654
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5654, 'Saab', '900', 1993);
5655
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5655, 'Saab', '9000', 1993);
5656
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5656, 'Saturn', 'S-Series', 1993);
5657
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5657, 'Subaru', 'Impreza', 1993);
5658
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5658, 'Subaru', 'Justy', 1993);
5659
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5659, 'Subaru', 'Legacy', 1993);
5660
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5660, 'Subaru', 'Loyale', 1993);
5661
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5661, 'Subaru', 'SVX', 1993);
5662
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5662, 'Suzuki', 'Samurai', 1993);
5663
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5663, 'Suzuki', 'Sidekick', 1993);
5664
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5664, 'Suzuki', 'Swift', 1993);
5665
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5665, 'Toyota', '4Runner', 1993);
5666
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5666, 'Toyota', 'Camry', 1993);
5667
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5667, 'Toyota', 'Celica', 1993);
5668
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5668, 'Toyota', 'Corolla', 1993);
5669
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5669, 'Toyota', 'Land Cruiser', 1993);
5670
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5670, 'Toyota', 'MR2', 1993);
5671
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5671, 'Toyota', 'Paseo', 1993);
5672
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5672, 'Toyota', 'Previa', 1993);
5673
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5673, 'Toyota', 'Regular Cab', 1993);
5674
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5674, 'Toyota', 'Supra', 1993);
5675
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5675, 'Toyota', 'T100 Regular Cab', 1993);
5676
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5676, 'Toyota', 'Tercel', 1993);
5677
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5677, 'Toyota', 'Xtra Cab', 1993);
5678
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5678, 'Volkswagen', 'Cabriolet', 1993);
5679
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5679, 'Volkswagen', 'Corrado', 1993);
5680
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5680, 'Volkswagen', 'Eurovan', 1993);
5681
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5681, 'Volkswagen', 'Fox', 1993);
5682
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5682, 'Volkswagen', 'Golf III', 1993);
5683
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5683, 'Volkswagen', 'Jetta III', 1993);
5684
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5684, 'Volkswagen', 'Passat', 1993);
5685
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5685, 'Volvo', '240', 1993);
5686
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5686, 'Volvo', '850', 1993);
5687
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5687, 'Volvo', '940', 1993);
5688
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5688, 'Volvo', '960', 1993);
5689
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5689, 'Acura', 'Integra', 1992);
5690
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5690, 'Acura', 'Legend', 1992);
5691
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5691, 'Acura', 'NSX', 1992);
5692
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5692, 'Acura', 'Vigor', 1992);
5693
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5693, 'Alfa Romeo', '164', 1992);
5694
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5694, 'Alfa Romeo', 'Spider', 1992);
5695
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5695, 'Audi', '100', 1992);
5696
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5696, 'Audi', '80', 1992);
5697
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5697, 'Audi', 'Quattro', 1992);
5698
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5698, 'Audi', 'S4', 1992);
5699
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5699, 'BMW', '3 Series', 1992);
5700
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5700, 'BMW', '5 Series', 1992);
5701
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5701, 'BMW', '7 Series', 1992);
5702
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5702, 'BMW', '8 Series', 1992);
5703
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5703, 'BMW', 'M5', 1992);
5704
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5704, 'Buick', 'Century', 1992);
5705
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5705, 'Buick', 'LeSabre', 1992);
5706
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5706, 'Buick', 'Park Avenue', 1992);
5707
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5707, 'Buick', 'Regal', 1992);
5708
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5708, 'Buick', 'Riviera', 1992);
5709
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5709, 'Buick', 'Roadmaster', 1992);
5710
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5710, 'Buick', 'Skylark', 1992);
5711
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5711, 'Cadillac', 'Allante', 1992);
5712
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5712, 'Cadillac', 'Brougham', 1992);
5713
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5713, 'Cadillac', 'DeVille', 1992);
5714
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5714, 'Cadillac', 'Eldorado', 1992);
5715
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5715, 'Cadillac', 'Fleetwood', 1992);
5716
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5716, 'Cadillac', 'Seville', 1992);
5717
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5717, 'Chevrolet', '1500 Extended Cab', 1992);
5718
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5718, 'Chevrolet', '1500 Regular Cab', 1992);
5719
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5719, 'Chevrolet', '2500 Extended Cab', 1992);
5720
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5720, 'Chevrolet', '2500 Regular Cab', 1992);
5721
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5721, 'Chevrolet', '3500 Crew Cab', 1992);
5722
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5722, 'Chevrolet', '3500 Extended Cab', 1992);
5723
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5723, 'Chevrolet', '3500 Regular Cab', 1992);
5724
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5724, 'Chevrolet', 'APV Cargo', 1992);
5725
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5725, 'Chevrolet', 'Astro Cargo', 1992);
5726
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5726, 'Chevrolet', 'Astro Passenger', 1992);
5727
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5727, 'Chevrolet', 'Beretta', 1992);
5728
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5728, 'Chevrolet', 'Blazer', 1992);
5729
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5729, 'Chevrolet', 'Camaro', 1992);
5730
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5730, 'Chevrolet', 'Caprice', 1992);
5731
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5731, 'Chevrolet', 'Cavalier', 1992);
5732
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5732, 'Chevrolet', 'Corsica', 1992);
5733
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5733, 'Chevrolet', 'Corvette', 1992);
5734
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5734, 'Chevrolet', 'G-Series G10', 1992);
5735
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5735, 'Chevrolet', 'G-Series G20', 1992);
5736
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5736, 'Chevrolet', 'G-Series G30', 1992);
5737
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5737, 'Chevrolet', 'Lumina', 1992);
5738
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5738, 'Chevrolet', 'Lumina APV', 1992);
5739
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5739, 'Chevrolet', 'S10 Blazer', 1992);
5740
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5740, 'Chevrolet', 'S10 Extended Cab', 1992);
5741
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5741, 'Chevrolet', 'S10 Regular Cab', 1992);
5742
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5742, 'Chevrolet', 'Sportvan G10', 1992);
5743
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5743, 'Chevrolet', 'Sportvan G20', 1992);
5744
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5744, 'Chevrolet', 'Sportvan G30', 1992);
5745
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5745, 'Chevrolet', 'Suburban 1500', 1992);
5746
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5746, 'Chevrolet', 'Suburban 2500', 1992);
5747
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5747, 'Chrysler', 'Fifth Ave', 1992);
5748
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5748, 'Chrysler', 'Imperial', 1992);
5749
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5749, 'Chrysler', 'LeBaron', 1992);
5750
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5750, 'Chrysler', 'New Yorker', 1992);
5751
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5751, 'Chrysler', 'Town & Country', 1992);
5752
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5752, 'Daihatsu', 'Charade', 1992);
5753
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5753, 'Daihatsu', 'Rocky', 1992);
5754
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5754, 'Dodge', 'Caravan Cargo', 1992);
5755
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5755, 'Dodge', 'Caravan Passenger', 1992);
5756
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5756, 'Dodge', 'Colt', 1992);
5757
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5757, 'Dodge', 'D150 Club Cab', 1992);
5758
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5758, 'Dodge', 'D150 Regular Cab', 1992);
5759
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5759, 'Dodge', 'D250 Club Cab', 1992);
5760
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5760, 'Dodge', 'D250 Regular Cab', 1992);
5761
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5761, 'Dodge', 'D350 Club Cab', 1992);
5762
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5762, 'Dodge', 'D350 Regular Cab', 1992);
5763
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5763, 'Dodge', 'Dakota Club Cab', 1992);
5764
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5764, 'Dodge', 'Dakota Regular Cab', 1992);
5765
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5765, 'Dodge', 'Daytona', 1992);
5766
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5766, 'Dodge', 'Dynasty', 1992);
5767
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5767, 'Dodge', 'Grand Caravan Passenger', 1992);
5768
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5768, 'Dodge', 'Monaco', 1992);
5769
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5769, 'Dodge', 'Ram 50 Regular Cab', 1992);
5770
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5770, 'Dodge', 'Ram Van B150', 1992);
5771
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5771, 'Dodge', 'Ram Van B250', 1992);
5772
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5772, 'Dodge', 'Ram Van B350', 1992);
5773
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5773, 'Dodge', 'Ram Wagon B150', 1992);
5774
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5774, 'Dodge', 'Ram Wagon B250', 1992);
5775
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5775, 'Dodge', 'Ram Wagon B350', 1992);
5776
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5776, 'Dodge', 'Ramcharger', 1992);
5777
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5777, 'Dodge', 'Shadow', 1992);
5778
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5778, 'Dodge', 'Spirit', 1992);
5779
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5779, 'Dodge', 'Stealth', 1992);
5780
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5780, 'Dodge', 'Viper', 1992);
5781
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5781, 'Eagle', 'Premier', 1992);
5782
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5782, 'Eagle', 'Summit', 1992);
5783
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5783, 'Eagle', 'Talon', 1992);
5784
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5784, 'Ford', 'Aerostar Cargo', 1992);
5785
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5785, 'Ford', 'Aerostar Passenger', 1992);
5786
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5786, 'Ford', 'Bronco', 1992);
5787
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5787, 'Ford', 'Club Wagon', 1992);
5788
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5788, 'Ford', 'Crown Victoria', 1992);
5789
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5789, 'Ford', 'Econoline E150 Cargo', 1992);
5790
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5790, 'Ford', 'Econoline E250 Cargo', 1992);
5791
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5791, 'Ford', 'Econoline E350 Cargo', 1992);
5792
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5792, 'Ford', 'Escort', 1992);
5793
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5793, 'Ford', 'Explorer', 1992);
5794
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5794, 'Ford', 'F150 Regular Cab', 1992);
5795
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5795, 'Ford', 'F150 Super Cab', 1992);
5796
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5796, 'Ford', 'F250 Regular Cab', 1992);
5797
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5797, 'Ford', 'F250 Super Cab', 1992);
5798
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5798, 'Ford', 'F350 Crew Cab', 1992);
5799
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5799, 'Ford', 'F350 Regular Cab', 1992);
5800
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5800, 'Ford', 'F350 Super Cab', 1992);
5801
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5801, 'Ford', 'Festiva', 1992);
5802
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5802, 'Ford', 'Mustang', 1992);
5803
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5803, 'Ford', 'Probe', 1992);
5804
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5804, 'Ford', 'Ranger Regular Cab', 1992);
5805
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5805, 'Ford', 'Ranger Super Cab', 1992);
5806
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5806, 'Ford', 'Taurus', 1992);
5807
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5807, 'Ford', 'Tempo', 1992);
5808
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5808, 'Ford', 'Thunderbird', 1992);
5809
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5809, 'Geo', 'Metro', 1992);
5810
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5810, 'Geo', 'Prizm', 1992);
5811
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5811, 'Geo', 'Storm', 1992);
5812
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5812, 'Geo', 'Tracker', 1992);
5813
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5813, 'GMC', '1500 Club Coupe', 1992);
5814
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5814, 'GMC', '1500 Regular Cab', 1992);
5815
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5815, 'GMC', '2500 Club Coupe', 1992);
5816
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5816, 'GMC', '2500 Regular Cab', 1992);
5817
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5817, 'GMC', '3500 Club Coupe', 1992);
5818
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5818, 'GMC', '3500 Crew Cab', 1992);
5819
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5819, 'GMC', '3500 Regular Cab', 1992);
5820
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5820, 'GMC', 'Jimmy', 1992);
5821
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5821, 'GMC', 'Rally Wagon 1500', 1992);
5822
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5822, 'GMC', 'Rally Wagon 2500', 1992);
5823
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5823, 'GMC', 'Rally Wagon 3500', 1992);
5824
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5824, 'GMC', 'Safari Cargo', 1992);
5825
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5825, 'GMC', 'Safari Passenger', 1992);
5826
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5826, 'GMC', 'Sonoma Club Cab', 1992);
5827
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5827, 'GMC', 'Sonoma Regular Cab', 1992);
5828
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5828, 'GMC', 'Suburban 1500', 1992);
5829
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5829, 'GMC', 'Suburban 2500', 1992);
5830
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5830, 'GMC', 'Vandura 1500', 1992);
5831
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5831, 'GMC', 'Vandura 2500', 1992);
5832
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5832, 'GMC', 'Vandura 3500', 1992);
5833
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5833, 'GMC', 'Yukon', 1992);
5834
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5834, 'Honda', 'Accord', 1992);
5835
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5835, 'Honda', 'Civic', 1992);
5836
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5836, 'Honda', 'Prelude', 1992);
5837
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5837, 'Hyundai', 'Elantra', 1992);
5838
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5838, 'Hyundai', 'Excel', 1992);
5839
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5839, 'Hyundai', 'Scoupe', 1992);
5840
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5840, 'Hyundai', 'Sonata', 1992);
5841
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5841, 'Infiniti', 'G', 1992);
5842
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5842, 'Infiniti', 'M', 1992);
5843
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5843, 'Infiniti', 'Q', 1992);
5844
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5844, 'Isuzu', 'Amigo', 1992);
5845
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5845, 'Isuzu', 'Impulse', 1992);
5846
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5846, 'Isuzu', 'Regular Cab', 1992);
5847
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5847, 'Isuzu', 'Rodeo', 1992);
5848
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5848, 'Isuzu', 'Spacecab', 1992);
5849
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5849, 'Isuzu', 'Stylus', 1992);
5850
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5850, 'Isuzu', 'Trooper', 1992);
5851
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5851, 'Jaguar', 'XJ Series', 1992);
5852
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5852, 'Jeep', 'Cherokee', 1992);
5853
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5853, 'Jeep', 'Comanche Regular Cab', 1992);
5854
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5854, 'Jeep', 'Wrangler', 1992);
5855
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5855, 'Land Rover', 'Range Rover', 1992);
5856
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5856, 'Lexus', 'ES', 1992);
5857
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5857, 'Lexus', 'LS', 1992);
5858
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5858, 'Lexus', 'SC', 1992);
5859
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5859, 'Lincoln', 'Continental', 1992);
5860
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5860, 'Lincoln', 'Mark VII', 1992);
5861
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5861, 'Lincoln', 'Town Car', 1992);
5862
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5862, 'Mazda', '323', 1992);
5863
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5863, 'Mazda', '626', 1992);
5864
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5864, 'Mazda', '929', 1992);
5865
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5865, 'Mazda', 'B-Series Cab Plus', 1992);
5866
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5866, 'Mazda', 'B-Series Regular Cab', 1992);
5867
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5867, 'Mazda', 'Miata MX-5', 1992);
5868
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5868, 'Mazda', 'MPV', 1992);
5869
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5869, 'Mazda', 'MX-3', 1992);
5870
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5870, 'Mazda', 'MX-6', 1992);
5871
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5871, 'Mazda', 'Navajo', 1992);
5872
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5872, 'Mazda', 'Protege', 1992);
5873
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5873, 'Mercedes-Benz', '190E', 1992);
5874
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5874, 'Mercedes-Benz', '300CE', 1992);
5875
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5875, 'Mercedes-Benz', '300D', 1992);
5876
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5876, 'Mercedes-Benz', '300E', 1992);
5877
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5877, 'Mercedes-Benz', '300SD', 1992);
5878
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5878, 'Mercedes-Benz', '300SE', 1992);
5879
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5879, 'Mercedes-Benz', '300SL', 1992);
5880
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5880, 'Mercedes-Benz', '300TE', 1992);
5881
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5881, 'Mercedes-Benz', '400E', 1992);
5882
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5882, 'Mercedes-Benz', '400SE', 1992);
5883
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5883, 'Mercedes-Benz', '500E', 1992);
5884
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5884, 'Mercedes-Benz', '500SEL', 1992);
5885
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5885, 'Mercedes-Benz', '500SL', 1992);
5886
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5886, 'Mercedes-Benz', '600SEL', 1992);
5887
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5887, 'Mercury', 'Capri', 1992);
5888
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5888, 'Mercury', 'Cougar', 1992);
5889
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5889, 'Mercury', 'Grand Marquis', 1992);
5890
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5890, 'Mercury', 'Sable', 1992);
5891
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5891, 'Mercury', 'Topaz', 1992);
5892
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5892, 'Mercury', 'Tracer', 1992);
5893
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5893, 'Mitsubishi', '3000GT', 1992);
5894
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5894, 'Mitsubishi', 'Diamante', 1992);
5895
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5895, 'Mitsubishi', 'Eclipse', 1992);
5896
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5896, 'Mitsubishi', 'Expo', 1992);
5897
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5897, 'Mitsubishi', 'Galant', 1992);
5898
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5898, 'Mitsubishi', 'Mighty Max Macro Cab', 1992);
5899
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5899, 'Mitsubishi', 'Mighty Max Regular Cab', 1992);
5900
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5900, 'Mitsubishi', 'Mirage', 1992);
5901
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5901, 'Mitsubishi', 'Montero', 1992);
5902
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5902, 'Mitsubishi', 'Precis', 1992);
5903
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5903, 'Nissan', '240SX', 1992);
5904
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5904, 'Nissan', '300ZX', 1992);
5905
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5905, 'Nissan', 'King Cab', 1992);
5906
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5906, 'Nissan', 'Maxima', 1992);
5907
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5907, 'Nissan', 'NX', 1992);
5908
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5908, 'Nissan', 'Pathfinder', 1992);
5909
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5909, 'Nissan', 'Regular Cab', 1992);
5910
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5910, 'Nissan', 'Sentra', 1992);
5911
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5911, 'Nissan', 'Stanza', 1992);
5912
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5912, 'Oldsmobile', '88', 1992);
5913
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5913, 'Oldsmobile', '98', 1992);
5914
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5914, 'Oldsmobile', 'Achieva', 1992);
5915
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5915, 'Oldsmobile', 'Bravada', 1992);
5916
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5916, 'Oldsmobile', 'Ciera', 1992);
5917
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5917, 'Oldsmobile', 'Custom Cruiser', 1992);
5918
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5918, 'Oldsmobile', 'Cutlass Supreme', 1992);
5919
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5919, 'Oldsmobile', 'Silhouette', 1992);
5920
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5920, 'Oldsmobile', 'Toronado', 1992);
5921
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5921, 'Plymouth', 'Acclaim', 1992);
5922
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5922, 'Plymouth', 'Colt', 1992);
5923
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5923, 'Plymouth', 'Colt Vista', 1992);
5924
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5924, 'Plymouth', 'Grand Voyager', 1992);
5925
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5925, 'Plymouth', 'Laser', 1992);
5926
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5926, 'Plymouth', 'Sundance', 1992);
5927
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5927, 'Plymouth', 'Voyager', 1992);
5928
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5928, 'Pontiac', 'Bonneville', 1992);
5929
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5929, 'Pontiac', 'Firebird', 1992);
5930
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5930, 'Pontiac', 'Grand Am', 1992);
5931
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5931, 'Pontiac', 'Grand Prix', 1992);
5932
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5932, 'Pontiac', 'LeMans', 1992);
5933
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5933, 'Pontiac', 'Sunbird', 1992);
5934
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5934, 'Pontiac', 'Trans Sport', 1992);
5935
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5935, 'Porsche', '911', 1992);
5936
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5936, 'Porsche', '968', 1992);
5937
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5937, 'Saab', '900', 1992);
5938
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5938, 'Saab', '9000', 1992);
5939
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5939, 'Saturn', 'S-Series', 1992);
5940
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5940, 'Subaru', 'Justy', 1992);
5941
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5941, 'Subaru', 'Legacy', 1992);
5942
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5942, 'Subaru', 'Loyale', 1992);
5943
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5943, 'Subaru', 'SVX', 1992);
5944
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5944, 'Suzuki', 'Samurai', 1992);
5945
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5945, 'Suzuki', 'Sidekick', 1992);
5946
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5946, 'Suzuki', 'Swift', 1992);
5947
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5947, 'Toyota', '4Runner', 1992);
5948
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5948, 'Toyota', 'Camry', 1992);
5949
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5949, 'Toyota', 'Celica', 1992);
5950
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5950, 'Toyota', 'Corolla', 1992);
5951
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5951, 'Toyota', 'Cressida', 1992);
5952
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5952, 'Toyota', 'Land Cruiser', 1992);
5953
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5953, 'Toyota', 'MR2', 1992);
5954
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5954, 'Toyota', 'Paseo', 1992);
5955
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5955, 'Toyota', 'Previa', 1992);
5956
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5956, 'Toyota', 'Regular Cab', 1992);
5957
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5957, 'Toyota', 'Supra', 1992);
5958
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5958, 'Toyota', 'Tercel', 1992);
5959
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5959, 'Toyota', 'Xtra Cab', 1992);
5960
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5960, 'Volkswagen', 'Cabriolet', 1992);
5961
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5961, 'Volkswagen', 'Corrado', 1992);
5962
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5962, 'Volkswagen', 'Fox', 1992);
5963
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5963, 'Volkswagen', 'Golf', 1992);
5964
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5964, 'Volkswagen', 'GTI', 1992);
5965
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5965, 'Volkswagen', 'Jetta', 1992);
5966
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5966, 'Volkswagen', 'Passat', 1992);
5967
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5967, 'Volvo', '240', 1992);
5968
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5968, 'Volvo', '740', 1992);
5969
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5969, 'Volvo', '940', 1992);
5970
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5970, 'Volvo', '960', 1992);
5971
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5971, 'Acura', 'Integra', 1991);
5972
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5972, 'Acura', 'Legend', 1991);
5973
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5973, 'Acura', 'NSX', 1991);
5974
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5974, 'Alfa Romeo', '164', 1991);
5975
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5975, 'Alfa Romeo', 'Spider', 1991);
5976
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5976, 'Audi', '100', 1991);
5977
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5977, 'Audi', '200', 1991);
5978
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5978, 'Audi', '80', 1991);
5979
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5979, 'Audi', '90', 1991);
5980
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5980, 'Audi', 'Quattro', 1991);
5981
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5981, 'BMW', '3 Series', 1991);
5982
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5982, 'BMW', '5 Series', 1991);
5983
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5983, 'BMW', '7 Series', 1991);
5984
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5984, 'BMW', '8 Series', 1991);
5985
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5985, 'BMW', 'M3', 1991);
5986
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5986, 'BMW', 'M5', 1991);
5987
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5987, 'Buick', 'Century', 1991);
5988
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5988, 'Buick', 'LeSabre', 1991);
5989
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5989, 'Buick', 'Park Avenue', 1991);
5990
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5990, 'Buick', 'Reatta', 1991);
5991
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5991, 'Buick', 'Regal', 1991);
5992
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5992, 'Buick', 'Riviera', 1991);
5993
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5993, 'Buick', 'Roadmaster', 1991);
5994
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5994, 'Buick', 'Skylark', 1991);
5995
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5995, 'Cadillac', 'Allante', 1991);
5996
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5996, 'Cadillac', 'Brougham', 1991);
5997
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5997, 'Cadillac', 'DeVille', 1991);
5998
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5998, 'Cadillac', 'Eldorado', 1991);
5999
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (5999, 'Cadillac', 'Fleetwood', 1991);
6000
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6000, 'Cadillac', 'Seville', 1991);
6001
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6001, 'Chevrolet', '1500 Extended Cab', 1991);
6002
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6002, 'Chevrolet', '1500 Regular Cab', 1991);
6003
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6003, 'Chevrolet', '2500 Extended Cab', 1991);
6004
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6004, 'Chevrolet', '2500 Regular Cab', 1991);
6005
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6005, 'Chevrolet', '3500 Bonus Cab', 1991);
6006
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6006, 'Chevrolet', '3500 Crew Cab', 1991);
6007
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6007, 'Chevrolet', '3500 Extended Cab', 1991);
6008
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6008, 'Chevrolet', '3500 Regular Cab', 1991);
6009
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6009, 'Chevrolet', 'APV Cargo', 1991);
6010
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6010, 'Chevrolet', 'Astro Cargo', 1991);
6011
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6011, 'Chevrolet', 'Astro Passenger', 1991);
6012
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6012, 'Chevrolet', 'Beretta', 1991);
6013
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6013, 'Chevrolet', 'Blazer', 1991);
6014
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6014, 'Chevrolet', 'Camaro', 1991);
6015
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6015, 'Chevrolet', 'Caprice', 1991);
6016
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6016, 'Chevrolet', 'Cavalier', 1991);
6017
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6017, 'Chevrolet', 'Corsica', 1991);
6018
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6018, 'Chevrolet', 'Corvette', 1991);
6019
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6019, 'Chevrolet', 'G-Series G10', 1991);
6020
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6020, 'Chevrolet', 'G-Series G20', 1991);
6021
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6021, 'Chevrolet', 'G-Series G30', 1991);
6022
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6022, 'Chevrolet', 'Lumina', 1991);
6023
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6023, 'Chevrolet', 'Lumina APV', 1991);
6024
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6024, 'Chevrolet', 'S10 Blazer', 1991);
6025
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6025, 'Chevrolet', 'S10 Extended Cab', 1991);
6026
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6026, 'Chevrolet', 'S10 Regular Cab', 1991);
6027
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6027, 'Chevrolet', 'Sportvan G10', 1991);
6028
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6028, 'Chevrolet', 'Sportvan G20', 1991);
6029
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6029, 'Chevrolet', 'Sportvan G30', 1991);
6030
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6030, 'Chevrolet', 'Suburban 1500', 1991);
6031
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6031, 'Chevrolet', 'Suburban 2500', 1991);
6032
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6032, 'Chrysler', 'Fifth Ave', 1991);
6033
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6033, 'Chrysler', 'Imperial', 1991);
6034
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6034, 'Chrysler', 'LeBaron', 1991);
6035
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6035, 'Chrysler', 'New Yorker', 1991);
6036
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6036, 'Chrysler', 'TC', 1991);
6037
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6037, 'Chrysler', 'Town & Country', 1991);
6038
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6038, 'Daihatsu', 'Charade', 1991);
6039
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6039, 'Daihatsu', 'Rocky', 1991);
6040
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6040, 'Dodge', 'Caravan Cargo', 1991);
6041
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6041, 'Dodge', 'Caravan Passenger', 1991);
6042
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6042, 'Dodge', 'Colt', 1991);
6043
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6043, 'Dodge', 'Colt Vista', 1991);
6044
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6044, 'Dodge', 'D150 Club Cab', 1991);
6045
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6045, 'Dodge', 'D150 Regular Cab', 1991);
6046
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6046, 'Dodge', 'D250 Club Cab', 1991);
6047
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6047, 'Dodge', 'D250 Regular Cab', 1991);
6048
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6048, 'Dodge', 'D350 Regular Cab', 1991);
6049
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6049, 'Dodge', 'Dakota Club Cab', 1991);
6050
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6050, 'Dodge', 'Dakota Regular Cab', 1991);
6051
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6051, 'Dodge', 'Daytona', 1991);
6052
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6052, 'Dodge', 'Dynasty', 1991);
6053
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6053, 'Dodge', 'Grand Caravan Passenger', 1991);
6054
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6054, 'Dodge', 'Monaco', 1991);
6055
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6055, 'Dodge', 'Ram 50 Regular Cab', 1991);
6056
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6056, 'Dodge', 'Ram 50 Sport Cab', 1991);
6057
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6057, 'Dodge', 'Ram Van B150', 1991);
6058
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6058, 'Dodge', 'Ram Van B250', 1991);
6059
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6059, 'Dodge', 'Ram Van B350', 1991);
6060
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6060, 'Dodge', 'Ram Wagon B150', 1991);
6061
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6061, 'Dodge', 'Ram Wagon B250', 1991);
6062
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6062, 'Dodge', 'Ram Wagon B350', 1991);
6063
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6063, 'Dodge', 'Ramcharger', 1991);
6064
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6064, 'Dodge', 'Shadow', 1991);
6065
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6065, 'Dodge', 'Spirit', 1991);
6066
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6066, 'Dodge', 'Stealth', 1991);
6067
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6067, 'Eagle', 'Premier', 1991);
6068
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6068, 'Eagle', 'Summit', 1991);
6069
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6069, 'Eagle', 'Talon', 1991);
6070
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6070, 'Ford', 'Aerostar Cargo', 1991);
6071
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6071, 'Ford', 'Aerostar Passenger', 1991);
6072
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6072, 'Ford', 'Bronco', 1991);
6073
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6073, 'Ford', 'Club Wagon', 1991);
6074
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6074, 'Ford', 'Country Squire', 1991);
6075
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6075, 'Ford', 'Crown Victoria', 1991);
6076
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6076, 'Ford', 'Econoline E150 Cargo', 1991);
6077
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6077, 'Ford', 'Econoline E250 Cargo', 1991);
6078
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6078, 'Ford', 'Econoline E350 Cargo', 1991);
6079
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6079, 'Ford', 'Escort', 1991);
6080
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6080, 'Ford', 'Explorer', 1991);
6081
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6081, 'Ford', 'F150 Regular Cab', 1991);
6082
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6082, 'Ford', 'F150 Super Cab', 1991);
6083
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6083, 'Ford', 'F250 Regular Cab', 1991);
6084
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6084, 'Ford', 'F250 Super Cab', 1991);
6085
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6085, 'Ford', 'F350 Crew Cab', 1991);
6086
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6086, 'Ford', 'F350 Regular Cab', 1991);
6087
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6087, 'Ford', 'F350 Super Cab', 1991);
6088
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6088, 'Ford', 'Festiva', 1991);
6089
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6089, 'Ford', 'Mustang', 1991);
6090
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6090, 'Ford', 'Probe', 1991);
6091
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6091, 'Ford', 'Ranger Regular Cab', 1991);
6092
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6092, 'Ford', 'Ranger Super Cab', 1991);
6093
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6093, 'Ford', 'Taurus', 1991);
6094
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6094, 'Ford', 'Tempo', 1991);
6095
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6095, 'Ford', 'Thunderbird', 1991);
6096
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6096, 'Geo', 'Metro', 1991);
6097
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6097, 'Geo', 'Prizm', 1991);
6098
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6098, 'Geo', 'Storm', 1991);
6099
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6099, 'Geo', 'Tracker', 1991);
6100
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6100, 'GMC', '1500 Club Coupe', 1991);
6101
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6101, 'GMC', '1500 Regular Cab', 1991);
6102
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6102, 'GMC', '2500 Club Coupe', 1991);
6103
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6103, 'GMC', '2500 Regular Cab', 1991);
6104
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6104, 'GMC', '3500 Bonus Cab', 1991);
6105
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6105, 'GMC', '3500 Club Coupe', 1991);
6106
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6106, 'GMC', '3500 Crew Cab', 1991);
6107
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6107, 'GMC', '3500 Regular Cab', 1991);
6108
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6108, 'GMC', 'Jimmy', 1991);
6109
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6109, 'GMC', 'Rally Wagon 1500', 1991);
6110
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6110, 'GMC', 'Rally Wagon 2500', 1991);
6111
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6111, 'GMC', 'Rally Wagon 3500', 1991);
6112
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6112, 'GMC', 'S15 Jimmy', 1991);
6113
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6113, 'GMC', 'Safari Cargo', 1991);
6114
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6114, 'GMC', 'Safari Passenger', 1991);
6115
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6115, 'GMC', 'Sonoma Club Cab', 1991);
6116
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6116, 'GMC', 'Sonoma Regular Cab', 1991);
6117
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6117, 'GMC', 'Suburban 1500', 1991);
6118
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6118, 'GMC', 'Suburban 2500', 1991);
6119
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6119, 'GMC', 'Vandura 1500', 1991);
6120
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6120, 'GMC', 'Vandura 2500', 1991);
6121
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6121, 'GMC', 'Vandura 3500', 1991);
6122
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6122, 'Honda', 'Accord', 1991);
6123
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6123, 'Honda', 'Civic', 1991);
6124
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6124, 'Honda', 'Prelude', 1991);
6125
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6125, 'Hyundai', 'Excel', 1991);
6126
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6126, 'Hyundai', 'Scoupe', 1991);
6127
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6127, 'Hyundai', 'Sonata', 1991);
6128
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6128, 'Infiniti', 'G', 1991);
6129
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6129, 'Infiniti', 'M', 1991);
6130
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6130, 'Infiniti', 'Q', 1991);
6131
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6131, 'Isuzu', 'Amigo', 1991);
6132
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6132, 'Isuzu', 'Impulse', 1991);
6133
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6133, 'Isuzu', 'Regular Cab', 1991);
6134
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6134, 'Isuzu', 'Rodeo', 1991);
6135
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6135, 'Isuzu', 'Spacecab', 1991);
6136
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6136, 'Isuzu', 'Stylus', 1991);
6137
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6137, 'Isuzu', 'Trooper', 1991);
6138
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6138, 'Jaguar', 'XJ Series', 1991);
6139
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6139, 'Jeep', 'Cherokee', 1991);
6140
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6140, 'Jeep', 'Comanche Regular Cab', 1991);
6141
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6141, 'Jeep', 'Grand Wagoneer', 1991);
6142
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6142, 'Jeep', 'Wrangler', 1991);
6143
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6143, 'Land Rover', 'Range Rover', 1991);
6144
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6144, 'Lexus', 'ES', 1991);
6145
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6145, 'Lexus', 'LS', 1991);
6146
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6146, 'Lincoln', 'Continental', 1991);
6147
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6147, 'Lincoln', 'Mark VII', 1991);
6148
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6148, 'Lincoln', 'Town Car', 1991);
6149
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6149, 'Mazda', '323', 1991);
6150
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6150, 'Mazda', '626', 1991);
6151
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6151, 'Mazda', '929', 1991);
6152
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6152, 'Mazda', 'B-Series Cab Plus', 1991);
6153
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6153, 'Mazda', 'B-Series Regular Cab', 1991);
6154
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6154, 'Mazda', 'Miata MX-5', 1991);
6155
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6155, 'Mazda', 'MPV', 1991);
6156
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6156, 'Mazda', 'MX-6', 1991);
6157
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6157, 'Mazda', 'Navajo', 1991);
6158
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6158, 'Mazda', 'Protege', 1991);
6159
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6159, 'Mazda', 'RX-7', 1991);
6160
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6160, 'Mercedes-Benz', '190E', 1991);
6161
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6161, 'Mercedes-Benz', '300CE', 1991);
6162
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6162, 'Mercedes-Benz', '300D', 1991);
6163
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6163, 'Mercedes-Benz', '300E', 1991);
6164
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6164, 'Mercedes-Benz', '300SE', 1991);
6165
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6165, 'Mercedes-Benz', '300SEL', 1991);
6166
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6166, 'Mercedes-Benz', '300SL', 1991);
6167
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6167, 'Mercedes-Benz', '300TE', 1991);
6168
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6168, 'Mercedes-Benz', '350SD', 1991);
6169
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6169, 'Mercedes-Benz', '350SDL', 1991);
6170
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6170, 'Mercedes-Benz', '420SEL', 1991);
6171
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6171, 'Mercedes-Benz', '500SL', 1991);
6172
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6172, 'Mercedes-Benz', '560SEC', 1991);
6173
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6173, 'Mercedes-Benz', '560SEL', 1991);
6174
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6174, 'Mercury', 'Capri', 1991);
6175
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6175, 'Mercury', 'Cougar', 1991);
6176
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6176, 'Mercury', 'Grand Marquis', 1991);
6177
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6177, 'Mercury', 'Sable', 1991);
6178
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6178, 'Mercury', 'Topaz', 1991);
6179
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6179, 'Mercury', 'Tracer', 1991);
6180
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6180, 'Mitsubishi', '3000GT', 1991);
6181
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6181, 'Mitsubishi', 'Eclipse', 1991);
6182
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6182, 'Mitsubishi', 'Galant', 1991);
6183
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6183, 'Mitsubishi', 'Mighty Max Macro Cab', 1991);
6184
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6184, 'Mitsubishi', 'Mighty Max Regular Cab', 1991);
6185
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6185, 'Mitsubishi', 'Mirage', 1991);
6186
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6186, 'Mitsubishi', 'Montero', 1991);
6187
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6187, 'Mitsubishi', 'Precis', 1991);
6188
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6188, 'Nissan', '240SX', 1991);
6189
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6189, 'Nissan', '300ZX', 1991);
6190
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6190, 'Nissan', 'King Cab', 1991);
6191
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6191, 'Nissan', 'Maxima', 1991);
6192
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6192, 'Nissan', 'NX', 1991);
6193
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6193, 'Nissan', 'Pathfinder', 1991);
6194
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6194, 'Nissan', 'Regular Cab', 1991);
6195
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6195, 'Nissan', 'Sentra', 1991);
6196
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6196, 'Nissan', 'Stanza', 1991);
6197
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6197, 'Oldsmobile', '88', 1991);
6198
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6198, 'Oldsmobile', '98', 1991);
6199
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6199, 'Oldsmobile', 'Bravada', 1991);
6200
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6200, 'Oldsmobile', 'Calais', 1991);
6201
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6201, 'Oldsmobile', 'Ciera', 1991);
6202
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6202, 'Oldsmobile', 'Custom Cruiser', 1991);
6203
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6203, 'Oldsmobile', 'Cutlass Supreme', 1991);
6204
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6204, 'Oldsmobile', 'Silhouette', 1991);
6205
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6205, 'Oldsmobile', 'Toronado', 1991);
6206
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6206, 'Peugeot', '405', 1991);
6207
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6207, 'Peugeot', '505', 1991);
6208
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6208, 'Plymouth', 'Acclaim', 1991);
6209
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6209, 'Plymouth', 'Colt', 1991);
6210
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6210, 'Plymouth', 'Colt Vista', 1991);
6211
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6211, 'Plymouth', 'Grand Voyager', 1991);
6212
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6212, 'Plymouth', 'Laser', 1991);
6213
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6213, 'Plymouth', 'Sundance', 1991);
6214
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6214, 'Plymouth', 'Voyager', 1991);
6215
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6215, 'Pontiac', '6000', 1991);
6216
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6216, 'Pontiac', 'Bonneville', 1991);
6217
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6217, 'Pontiac', 'Firebird', 1991);
6218
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6218, 'Pontiac', 'Grand Am', 1991);
6219
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6219, 'Pontiac', 'Grand Prix', 1991);
6220
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6220, 'Pontiac', 'LeMans', 1991);
6221
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6221, 'Pontiac', 'Sunbird', 1991);
6222
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6222, 'Pontiac', 'Trans Sport', 1991);
6223
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6223, 'Porsche', '911', 1991);
6224
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6224, 'Porsche', '928', 1991);
6225
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6225, 'Porsche', '944', 1991);
6226
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6226, 'Saab', '900', 1991);
6227
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6227, 'Saab', '9000', 1991);
6228
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6228, 'Saturn', 'S-Series', 1991);
6229
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6229, 'Sterling', '827', 1991);
6230
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6230, 'Subaru', 'Justy', 1991);
6231
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6231, 'Subaru', 'Legacy', 1991);
6232
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6232, 'Subaru', 'Loyale', 1991);
6233
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6233, 'Subaru', 'XT', 1991);
6234
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6234, 'Subaru', 'XT6', 1991);
6235
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6235, 'Suzuki', 'Samurai', 1991);
6236
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6236, 'Suzuki', 'Sidekick', 1991);
6237
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6237, 'Suzuki', 'Swift', 1991);
6238
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6238, 'Toyota', '4Runner', 1991);
6239
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6239, 'Toyota', 'Camry', 1991);
6240
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6240, 'Toyota', 'Celica', 1991);
6241
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6241, 'Toyota', 'Corolla', 1991);
6242
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6242, 'Toyota', 'Cressida', 1991);
6243
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6243, 'Toyota', 'Land Cruiser', 1991);
6244
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6244, 'Toyota', 'MR2', 1991);
6245
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6245, 'Toyota', 'Previa', 1991);
6246
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6246, 'Toyota', 'Regular Cab', 1991);
6247
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6247, 'Toyota', 'Supra', 1991);
6248
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6248, 'Toyota', 'Tercel', 1991);
6249
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6249, 'Toyota', 'Xtra Cab', 1991);
6250
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6250, 'Volkswagen', 'Cabriolet', 1991);
6251
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6251, 'Volkswagen', 'Corrado', 1991);
6252
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6252, 'Volkswagen', 'Fox', 1991);
6253
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6253, 'Volkswagen', 'Golf', 1991);
6254
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6254, 'Volkswagen', 'GTI', 1991);
6255
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6255, 'Volkswagen', 'Jetta', 1991);
6256
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6256, 'Volkswagen', 'Passat', 1991);
6257
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6257, 'Volkswagen', 'Vanagon', 1991);
6258
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6258, 'Volvo', '240', 1991);
6259
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6259, 'Volvo', '740', 1991);
6260
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6260, 'Volvo', '940', 1991);
6261
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6261, 'Volvo', 'Coupe', 1991);
6262
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6262, 'Yugo', 'Cabrio', 1991);
6263
+INSERT INTO `devghai_vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES (6263, 'Yugo', 'GV', 1991);
... ...
@@ -0,0 +1,112 @@
1
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (10, 15);
2
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (16, 20);
3
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (21, 25);
4
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (26, 30);
5
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (31, 35);
6
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (36, 40);
7
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (41, 45);
8
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (46, 50);
9
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (51, 55);
10
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (56, 60);
11
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (61, 65);
12
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (66, 70);
13
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (71, 75);
14
+INSERT INTO `ages`(`ages_from`,`ages_to`) VALUES (76, 80);
15
+
16
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (51, 60);
17
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (61, 70);
18
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (71, 80);
19
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (81, 90);
20
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (91, 100);
21
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (101, 110);
22
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (111, 120);
23
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (121, 130);
24
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (131, 140);
25
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (141, 150);
26
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (151, 160);
27
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (161, 170);
28
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (171, 180);
29
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (181, 190);
30
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (191, 200);
31
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (201, 210);
32
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (211, 220);
33
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (221, 230);
34
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (231, 240);
35
+INSERT INTO `weights`(`weights_from`,`weights_to`) VALUES (241, 250);
36
+
37
+---
38
+
39
+-- password = loginId
40
+
41
+INSERT INTO `users` (`users_loginId`,`users_password`,`users_ageid`,`users_gender`,`users_height`,`users_shoesize`,`users_weightid`,`users_zip`,`users_shirtsize`,`users_email`,`user_sittingheight`,`user_upperleglength`) VALUES ('andy','*F96F1632B76CC8C3AE6A600874573B1077718130',7,'Female',144,8,10,15219,'L','[email protected]',0,90);
42
+INSERT INTO `users` (`users_loginId`,`users_password`,`users_ageid`,`users_gender`,`users_height`,`users_shoesize`,`users_weightid`,`users_zip`,`users_shirtsize`,`users_email`,`user_sittingheight`,`user_upperleglength`) VALUES ('anmol','*87863E3501735644D77670A7D729A26C657661EB',2,'Male',148,13,10,15219,'L','[email protected]',0,0);
43
+INSERT INTO `users` (`users_loginId`,`users_password`,`users_ageid`,`users_gender`,`users_height`,`users_shoesize`,`users_weightid`,`users_zip`,`users_shirtsize`,`users_email`,`user_sittingheight`,`user_upperleglength`) VALUES ('demo','*6949B1E7D9C44BAA168886E033AE9F551C8814D3',1,'Female',23,1,1,15219,'L','[email protected]',NULL,NULL);
44
+INSERT INTO `users` (`users_loginId`,`users_password`,`users_ageid`,`users_gender`,`users_height`,`users_shoesize`,`users_weightid`,`users_zip`,`users_shirtsize`,`users_email`,`user_sittingheight`,`user_upperleglength`) VALUES ('dev','*2785BFFB673C3DAB53F814D0812920DE22C6510F',7,'Female',147,12.5,3,15219,'L','[email protected]',11,12);
45
+INSERT INTO `users` (`users_loginId`,`users_password`,`users_ageid`,`users_gender`,`users_height`,`users_shoesize`,`users_weightid`,`users_zip`,`users_shirtsize`,`users_email`,`user_sittingheight`,`user_upperleglength`) VALUES ('eve','*1A6EFD23741853F1DD5DF9B944BE40169F3931F1',4,'Female',23,1,12,15219,'L','[email protected]',NULL,NULL);
46
+INSERT INTO `users` (`users_loginId`,`users_password`,`users_ageid`,`users_gender`,`users_height`,`users_shoesize`,`users_weightid`,`users_zip`,`users_shirtsize`,`users_email`,`user_sittingheight`,`user_upperleglength`) VALUES ('henry','*D16D342FF41C2C8ACDBCB10489FE202964BEF327',3,'Male',69,10,7,15219,'SM','[email protected]',90,45);
47
+INSERT INTO `users` (`users_loginId`,`users_password`,`users_ageid`,`users_gender`,`users_height`,`users_shoesize`,`users_weightid`,`users_zip`,`users_shirtsize`,`users_email`,`user_sittingheight`,`user_upperleglength`) VALUES ('Stacey Gu','*4666BD964DDABA4BD0E30927671FFEB5F76E28F9',7,'Female',62,0,1,0,'None','[email protected]',1,3);
48
+INSERT INTO `users` (`users_loginId`,`users_password`,`users_ageid`,`users_gender`,`users_height`,`users_shoesize`,`users_weightid`,`users_zip`,`users_shirtsize`,`users_email`,`user_sittingheight`,`user_upperleglength`) VALUES ('sam','*B5007B8831AA7CC0E2C2F5EA35A97C126011E8B9',3,'Female',63,7,10,15219,'L','[email protected]',0,0);
49
+INSERT INTO `users` (`users_loginId`,`users_password`,`users_ageid`,`users_gender`,`users_height`,`users_shoesize`,`users_weightid`,`users_zip`,`users_shirtsize`,`users_email`,`user_sittingheight`,`user_upperleglength`) VALUES ('tim','*E8CB293030DF5929BF3D3F0D285E235E46ABE9B1',4,'Male',69,11,13,15219,'L','[email protected]',0,0);
50
+-- ------------------
51
+INSERT INTO `questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (1,'... your ability to see out in this area to your left?','Integer','HigherIsBetter',-0.978,-0.025,-0.563,1);
52
+INSERT INTO `questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (2,'...getting out of this vehicle?','Integer','HigherIsBetter',-3.624,0.911,-0.89,1);
53
+INSERT INTO `questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (3,'... your ability to see the front end of this vehicle?','Integer','HigherIsBetter',0.873,0.157,-0.658,1);
54
+INSERT INTO `questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (4,'... your headroom?','Integer','HigherIsBetter',0.128,-0.514,-0.355,1);
55
+INSERT INTO `questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (5,'... your ability to see the dashboard gauges?','Integer','HigherIsBetter',0.257,0.334,-0.563,1);
56
+INSERT INTO `questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (6,'... your ability to see out in this area to your right?','Integer','HigherIsBetter',3.93,0,-0.57,1);
57
+INSERT INTO `questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (7,'... your ability to see out front?','Integer','HigherIsBetter',0.514,-0.334,-0.658,1);
58
+INSERT INTO `questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (8,'... the center console?','Integer','HigherIsBetter',1.414,0.746,-0.658,1);
59
+INSERT INTO `questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (9,'...your ability to see out left?','Integer','HigherIsBetter',-3.624,0,-0.89,1);
60
+INSERT INTO `questions` (`questions_id`,`questions_text`,`questions_ans_value_type`,`questions_ans_direction`,`questions_location_x`,`questions_location_y`,`questions_location_z`,`questions_active`) VALUES (10,'... your ability to see out right?','Integer','HigherIsBetter',4.419,0.18,-0.694,1);
61
+
62
+-- -----------------------------------
63
+-- admins
64
+-- -----------------------------------
65
+INSERT INTO `admins` (`admins_id`,`admins_password`,`admins_email`,`admins_active`,`admins_modified_by`,`admins_modification_date`) VALUES ('admin','*4ACFE3202A5FF5CF467898FC58AAB1D615029441','[email protected]',1,'dev','1969-12-31 19:00:00');
66
+INSERT INTO `admins` (`admins_id`,`admins_password`,`admins_email`,`admins_active`,`admins_modified_by`,`admins_modification_date`) VALUES ('dev','*27AEDA0D3A56422C3F1D20DAFF0C8109058134F3','[email protected]',0,'dev','1969-12-31 19:00:00');
67
+INSERT INTO `admins` (`admins_id`,`admins_password`,`admins_email`,`admins_active`,`admins_modified_by`,`admins_modification_date`) VALUES ('foo','*E8D46CE25265E545D225A8A6F1BAF642FEBEE5CB','[email protected]',1,'admin','2011-11-27 05:09:48');
68
+INSERT INTO `admins` (`admins_id`,`admins_password`,`admins_email`,`admins_active`,`admins_modified_by`,`admins_modification_date`) VALUES ('john','*DACDE7F5744D3CB439B40D938673B8240B824853','[email protected]',1,'dev','1969-12-31 19:00:00');
69
+-- -----------------------------------
70
+INSERT INTO `question_set` (`questionset_id`,`questionset_setname`,`questionset_active`,`questionset_modified_by`,`questionset_modification_date`) VALUES (1,'Visibility',1,'admin','2011-11-27 06:49:14');
71
+INSERT INTO `question_set` (`questionset_id`,`questionset_setname`,`questionset_active`,`questionset_modified_by`,`questionset_modification_date`) VALUES (2,'Roominess',1,'admin','2011-11-27 06:49:14');
72
+-- -----------------------------------
73
+-- ----------
74
+-- Visibility = 1
75
+-- ----------
76
+-- 1, 3, 5, 6, 7, 9, 10
77
+INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (1, 1);
78
+INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (1, 3);
79
+INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (1, 5);
80
+INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (1, 6);
81
+INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (1, 7);
82
+INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (1, 9);
83
+INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (1, 10);
84
+
85
+-- ----------
86
+-- Roominess = 2
87
+-- ----------
88
+-- 2, 4, 8
89
+INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (2, 2);
90
+INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (2, 4);
91
+INSERT INTO `questions_in_set`(`questionsinset_set_id`, `questionsinset_question_id`) VALUES (2, 8);
92
+-- ------------------------------------
93
+
94
+-- ------------------------------------
95
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (1, 'Second Survey', 1);
96
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (2, 'Third Survey', 1);
97
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (3, 'First Comment', 1);
98
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (4, 'Five Comments', 1);
99
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (5, 'Completed a Survey With Comments For All Questions', 1);
100
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (6, 'Completed 1 Survey', 1);
101
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (7, 'Completed 2 Surveys', 1);
102
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (8, 'Completed 3 Surveys', 1);
103
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (9, 'First User of the System', 1);
104
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (10, 'Second User of the System', 1);
105
+INSERT INTO `badges` (`badges_id`, `badges_description`, `badges_weight`) VALUES (11, 'Third User of the System', 1);
106
+-- ------------------------------------
107
+INSERT INTO `user_badges` (`userbadges_badgeid`, `userbadges_userid`) VALUES (1, 'dev');
108
+INSERT INTO `user_badges` (`userbadges_badgeid`, `userbadges_userid`) VALUES (1, 'henry');
109
+INSERT INTO `user_badges` (`userbadges_badgeid`, `userbadges_userid`) VALUES (1, 'anmol');
110
+INSERT INTO `user_badges` (`userbadges_badgeid`, `userbadges_userid`) VALUES (1, 'andy');
111
+INSERT INTO `user_badges` (`userbadges_badgeid`, `userbadges_userid`) VALUES (1, 'sam');
112
+INSERT INTO `user_badges` (`userbadges_badgeid`, `userbadges_userid`) VALUES (1, 'eve');
... ...
@@ -0,0 +1 @@
1
+2011
@"Acura",@"Audi",@"BMW",@"Buick",@"Cadillac",@"Chevrolet",@"Dodge",@"Ford",@"GMC",@"Honda",@"Hyundai",@"Infiniti",@"Jeep",@"Kia",@"Lexus",@"Lincoln",@"Mazda",@"Mercedes-Benz",@"Mercury",@"MINI",@"Mitsubishi",@"Nissan",@"Ram",@"Scion",@"Subaru",@"Suzuki",@"Toyota",@"Volkswagen",@"Volvo", nil
-------
2010
@"Acura",@"Aston Martin",@"Audi",@"Bentley",@"BMW",@"Buick",@"Cadillac",@"Chevrolet",@"Chrysler",@"Dodge",@"Ford",@"GMC",@"Honda",@"HUMMER",@"Hyundai",@"Infiniti",@"Jaguar",@"Jeep",@"Kia",@"Land Rover",@"Lexus",@"Lincoln",@"Lotus",@"Maybach",@"Mazda",@"Mercedes-Benz",@"Mercury",@"MINI",@"Mitsubishi",@"Nissan",@"Pontiac",@"Porsche",@"Rolls-Royce",@"Saab",@"Saturn",@"Scion",@"Smart",@"Subaru",@"Suzuki",@"Toyota",@"Volkswagen",@"Volvo", nil
-------
2009
@"Acura",@"Aston Martin",@"Audi",@"Bentley",@"BMW",@"Buick",@"Cadillac",@"Chevrolet",@"Chrysler",@"Dodge",@"Ford",@"GMC",@"Honda",@"HUMMER",@"Hyundai",@"Infiniti",@"Jaguar",@"Jeep",@"Kia",@"Land Rover",@"Lexus",@"Lincoln",@"Lotus",@"Maybach",@"Mazda",@"Mercedes-Benz",@"Mercury",@"MINI",@"Mitsubishi",@"Nissan",@"Pontiac",@"Porsche",@"Rolls-Royce",@"Saab",@"Saturn",@"Scion",@"Smart",@"Subaru",@"Suzuki",@"Toyota",@"Volkswagen",@"Volvo", nil
-------
2008
@"Acura",@"Aston Martin",@"Audi",@"Bentley",@"BMW",@"Buick",@"Cadillac",@"Chevrolet",@"Chrysler",@"Dodge",@"Ford",@"GMC",@"Honda",@"HUMMER",@"Hyundai",@"Infiniti",@"Isuzu",@"Jaguar",@"Jeep",@"Kia",@"Land Rover",@"Lexus",@"Lincoln",@"Lotus",@"Maybach",@"Mazda",@"Mercedes-Benz",@"Mercury",@"MINI",@"Mitsubishi",@"Nissan",@"Pontiac",@"Porsche",@"Rolls-Royce",@"Saab",@"Saturn",@"Scion",@"Smart",@"Subaru",@"Suzuki",@"Toyota",@"Volkswagen",@"Volvo", nil
-------
2007
@"Acura",@"Aston Martin",@"Audi",@"Bentley",@"BMW",@"Buick",@"Cadillac",@"Chevrolet",@"Chrysler",@"Dodge",@"Ford",@"GMC",@"Honda",@"HUMMER",@"Hyundai",@"Infiniti",@"Isuzu",@"Jaguar",@"Jeep",@"Kia",@"Land Rover",@"Lexus",@"Lincoln",@"Lotus",@"Maybach",@"Mazda",@"Mercedes-Benz",@"Mercury",@"MINI",@"Mitsubishi",@"Nissan",@"Pontiac",@"Porsche",@"Rolls-Royce",@"Saab",@"Saturn",@"Scion",@"Subaru",@"Suzuki",@"Toyota",@"Volkswagen",@"Volvo", nil
-------
2006
@"Acura",@"Aston Martin",@"Audi",@"Bentley",@"BMW",@"Buick",@"Cadillac",@"Chevrolet",@"Chrysler",@"Dodge",@"Ford",@"GMC",@"Honda",@"HUMMER",@"Hyundai",@"Infiniti",@"Isuzu",@"Jaguar",@"Jeep",@"Kia",@"Land Rover",@"Lexus",@"Lincoln",@"Lotus",@"Maybach",@"Mazda",@"Mercedes-Benz",@"Mercury",@"MINI",@"Mitsubishi",@"Nissan",@"Panoz",@"Pontiac",@"Porsche",@"Rolls-Royce",@"Saab",@"Saturn",@"Scion",@"Subaru",@"Suzuki",@"Toyota",@"Volkswagen",@"Volvo", nil
-------
2005
@"Acura",@"Aston Martin",@"Audi",@"Bentley",@"BMW",@"Buick",@"Cadillac",@"Chevrolet",@"Chrysler",@"Dodge",@"Ford",@"GMC",@"Honda",@"HUMMER",@"Hyundai",@"Infiniti",@"Isuzu",@"Jaguar",@"Jeep",@"Kia",@"Land Rover",@"Lexus",@"Lincoln",@"Lotus",@"Maybach",@"Mazda",@"Mercedes-Benz",@"Mercury",@"MINI",@"Mitsubishi",@"Nissan",@"Panoz",@"Pontiac",@"Porsche",@"Rolls-Royce",@"Saab",@"Saturn",@"Scion",@"Subaru",@"Suzuki",@"Toyota",@"Volkswagen",@"Volvo", nil
-------
2004
@"Acura",@"Audi",@"BMW",@"Buick",@"Cadillac",@"Chevrolet",@"Chrysler",@"Dodge",@"Ford",@"GMC",@"Honda",@"HUMMER",@"Hyundai",@"Infiniti",@"Isuzu",@"Jaguar",@"Jeep",@"Kia",@"Land Rover",@"Lexus",@"Lincoln",@"Mazda",@"Mercedes-Benz",@"Mercury",@"MINI",@"Mitsubishi",@"Nissan",@"Oldsmobile",@"Pontiac",@"Porsche",@"Saab",@"Saturn",@"Scion",@"Subaru",@"Suzuki",@"Toyota",@"Volkswagen",@"Volvo", nil
-------
2003
@"Acura",@"Audi",@"BMW",@"Buick",@"Cadillac",@"Chevrolet",@"Chrysler",@"Dodge",@"Ford",@"GMC",@"Honda",@"HUMMER",@"Hyundai",@"Infiniti",@"Isuzu",@"Jaguar",@"Jeep",@"Kia",@"Land Rover",@"Lexus",@"Lincoln",@"Mazda",@"Mercedes-Benz",@"Mercury",@"MINI",@"Mitsubishi",@"Nissan",@"Oldsmobile",@"Pontiac",@"Porsche",@"Saab",@"Saturn",@"Subaru",@"Suzuki",@"Toyota",@"Volkswagen",@"Volvo", nil
-------
2002
@"Acura",@"Audi",@"BMW",@"Buick",@"Cadillac",@"Chevrolet",@"Chrysler",@"Daewoo",@"Dodge",@"Ford",@"GMC",@"Honda",@"HUMMER",@"Hyundai",@"Infiniti",@"Isuzu",@"Jaguar",@"Jeep",@"Kia",@"Land Rover",@"Lexus",@"Lincoln",@"Mazda",@"Mercedes-Benz",@"Mercury",@"MINI",@"Mitsubishi",@"Nissan",@"Oldsmobile",@"Pontiac",@"Porsche",@"Saab",@"Saturn",@"Subaru",@"Suzuki",@"Toyota",@"Volkswagen",@"Volvo", nil
-------
2001
@"Acura",@"Audi",@"BMW",@"Buick",@"Cadillac",@"Chevrolet",@"Chrysler",@"Daewoo",@"Dodge",@"Ford",@"GMC",@"Honda",@"HUMMER",@"Hyundai",@"Infiniti",@"Isuzu",@"Jaguar",@"Jeep",@"Kia",@"Land Rover",@"Lexus",@"Lincoln",@"Mazda",@"Mercedes-Benz",@"Mercury",@"Mitsubishi",@"Nissan",@"Oldsmobile",@"Plymouth",@"Pontiac",@"Porsche",@"Saab",@"Saturn",@"Subaru",@"Suzuki",@"Toyota",@"Volkswagen",@"Volvo", nil
-------
2000
@"Acura",@"Audi",@"BMW",@"Buick",@"Cadillac",@"Chevrolet",@"Chrysler",@"Daewoo",@"Dodge",@"Ford",@"GMC",@"Honda",@"HUMMER",@"Hyundai",@"Infiniti",@"Isuzu",@"Jaguar",@"Jeep",@"Kia",@"Land Rover",@"Lexus",@"Lincoln",@"Mazda",@"Mercedes-Benz",@"Mercury",@"Mitsubishi",@"Nissan",@"Oldsmobile",@"Plymouth",@"Pontiac",@"Porsche",@"Saab",@"Saturn",@"Subaru",@"Suzuki",@"Toyota",@"Volkswagen",@"Volvo", nil
-------
1999
@"Acura",@"Audi",@"BMW",@"Buick",@"Cadillac",@"Chevrolet",@"Chrysler",@"Daewoo",@"Dodge",@"Ford",@"GMC",@"Honda",@"HUMMER",@"Hyundai",@"Infiniti",@"Isuzu",@"Jaguar",@"Jeep",@"Kia",@"Land Rover",@"Lexus",@"Lincoln",@"Mazda",@"Mercedes-Benz",@"Mercury",@"Mitsubishi",@"Nissan",@"Oldsmobile",@"Plymouth",@"Pontiac",@"Porsche",@"Saab",@"Saturn",@"Subaru",@"Suzuki",@"Toyota",@"Volkswagen",@"Volvo", nil
-------
1998
@"Acura",@"Audi",@"BMW",@"Buick",@"Cadillac",@"Chevrolet",@"Chrysler",@"Dodge",@"Eagle",@"Ford",@"GMC",@"Honda",@"HUMMER",@"Hyundai",@"Infiniti",@"Isuzu",@"Jaguar",@"Jeep",@"Kia",@"Land Rover",@"Lexus",@"Lincoln",@"Mazda",@"Mercedes-Benz",@"Mercury",@"Mitsubishi",@"Nissan",@"Oldsmobile",@"Plymouth",@"Pontiac",@"Porsche",@"Saab",@"Saturn",@"Subaru",@"Suzuki",@"Toyota",@"Volkswagen",@"Volvo", nil
-------
1997
@"Acura",@"Audi",@"BMW",@"Buick",@"Cadillac",@"Chevrolet",@"Chrysler",@"Dodge",@"Eagle",@"Ford",@"Geo",@"GMC",@"Honda",@"HUMMER",@"Hyundai",@"Infiniti",@"Isuzu",@"Jaguar",@"Jeep",@"Kia",@"Land Rover",@"Lexus",@"Lincoln",@"Mazda",@"Mercedes-Benz",@"Mercury",@"Mitsubishi",@"Nissan",@"Oldsmobile",@"Plymouth",@"Pontiac",@"Porsche",@"Saab",@"Saturn",@"Subaru",@"Suzuki",@"Toyota",@"Volkswagen",@"Volvo", nil
-------
1996
@"Acura",@"Audi",@"BMW",@"Buick",@"Cadillac",@"Chevrolet",@"Chrysler",@"Dodge",@"Eagle",@"Ford",@"Geo",@"GMC",@"Honda",@"HUMMER",@"Hyundai",@"Infiniti",@"Isuzu",@"Jaguar",@"Jeep",@"Kia",@"Land Rover",@"Lexus",@"Lincoln",@"Mazda",@"Mercedes-Benz",@"Mercury",@"Mitsubishi",@"Nissan",@"Oldsmobile",@"Plymouth",@"Pontiac",@"Porsche",@"Saab",@"Saturn",@"Subaru",@"Suzuki",@"Toyota",@"Volkswagen",@"Volvo", nil
-------
1995
@"Acura",@"Alfa Romeo",@"Audi",@"BMW",@"Buick",@"Cadillac",@"Chevrolet",@"Chrysler",@"Dodge",@"Eagle",@"Ford",@"Geo",@"GMC",@"Honda",@"HUMMER",@"Hyundai",@"Infiniti",@"Isuzu",@"Jaguar",@"Jeep",@"Kia",@"Land Rover",@"Lexus",@"Lincoln",@"Mazda",@"Mercedes-Benz",@"Mercury",@"Mitsubishi",@"Nissan",@"Oldsmobile",@"Plymouth",@"Pontiac",@"Porsche",@"Saab",@"Saturn",@"Subaru",@"Suzuki",@"Toyota",@"Volkswagen",@"Volvo", nil
-------
1994
@"Acura",@"Alfa Romeo",@"Audi",@"BMW",@"Buick",@"Cadillac",@"Chevrolet",@"Chrysler",@"Dodge",@"Eagle",@"Ford",@"Geo",@"GMC",@"Honda",@"HUMMER",@"Hyundai",@"Infiniti",@"Isuzu",@"Jaguar",@"Jeep",@"Kia",@"Land Rover",@"Lexus",@"Lincoln",@"Mazda",@"Mercedes-Benz",@"Mercury",@"Mitsubishi",@"Nissan",@"Oldsmobile",@"Plymouth",@"Pontiac",@"Porsche",@"Saab",@"Saturn",@"Subaru",@"Suzuki",@"Toyota",@"Volkswagen",@"Volvo", nil
-------
1993
@"Acura",@"Alfa Romeo",@"Audi",@"BMW",@"Buick",@"Cadillac",@"Chevrolet",@"Chrysler",@"Dodge",@"Eagle",@"Ford",@"Geo",@"GMC",@"Honda",@"HUMMER",@"Hyundai",@"Infiniti",@"Isuzu",@"Jaguar",@"Jeep",@"Land Rover",@"Lexus",@"Lincoln",@"Mazda",@"Mercedes-Benz",@"Mercury",@"Mitsubishi",@"Nissan",@"Oldsmobile",@"Plymouth",@"Pontiac",@"Porsche",@"Saab",@"Saturn",@"Subaru",@"Suzuki",@"Toyota",@"Volkswagen",@"Volvo", nil
-------
1992
@"Acura",@"Alfa Romeo",@"Audi",@"BMW",@"Buick",@"Cadillac",@"Chevrolet",@"Chrysler",@"Daihatsu",@"Dodge",@"Eagle",@"Ford",@"Geo",@"GMC",@"Honda",@"Hyundai",@"Infiniti",@"Isuzu",@"Jaguar",@"Jeep",@"Land Rover",@"Lexus",@"Lincoln",@"Mazda",@"Mercedes-Benz",@"Mercury",@"Mitsubishi",@"Nissan",@"Oldsmobile",@"Plymouth",@"Pontiac",@"Porsche",@"Saab",@"Saturn",@"Subaru",@"Suzuki",@"Toyota",@"Volkswagen",@"Volvo", nil
-------
1991
@"Acura",@"Alfa Romeo",@"Audi",@"BMW",@"Buick",@"Cadillac",@"Chevrolet",@"Chrysler",@"Daihatsu",@"Dodge",@"Eagle",@"Ford",@"Geo",@"GMC",@"Honda",@"Hyundai",@"Infiniti",@"Isuzu",@"Jaguar",@"Jeep",@"Land Rover",@"Lexus",@"Lincoln",@"Mazda",@"Mercedes-Benz",@"Mercury",@"Mitsubishi",@"Nissan",@"Oldsmobile",@"Peugeot",@"Plymouth",@"Pontiac",@"Porsche",@"Saab",@"Saturn",@"Sterling",@"Subaru",@"Suzuki",@"Toyota",@"Volkswagen",@"Volvo",@"Yugo", nil
-------
0 2
\ No newline at end of file
... ...
@@ -0,0 +1 @@
1
+2011
@"Alfa Romeo",@"Aston Martin",@"Bentley",@"Chrysler",@"Daewoo",@"Daihatsu",@"Eagle",@"Geo",@"HUMMER",@"Isuzu",@"Jaguar",@"Land Rover",@"Lotus",@"Maybach",@"Oldsmobile",@"Panoz",@"Peugeot",@"Plymouth",@"Pontiac",@"Porsche",@"Rolls-Royce",@"Saab",@"Saturn",@"Smart",@"Sterling",@"Yugo", nil
-------
2010
@"Alfa Romeo",@"Daewoo",@"Daihatsu",@"Eagle",@"Geo",@"Isuzu",@"Oldsmobile",@"Panoz",@"Peugeot",@"Plymouth",@"Ram",@"Sterling",@"Yugo", nil
-------
2009
@"Alfa Romeo",@"Daewoo",@"Daihatsu",@"Eagle",@"Geo",@"Isuzu",@"Oldsmobile",@"Panoz",@"Peugeot",@"Plymouth",@"Ram",@"Sterling",@"Yugo", nil
-------
2008
@"Alfa Romeo",@"Daewoo",@"Daihatsu",@"Eagle",@"Geo",@"Oldsmobile",@"Panoz",@"Peugeot",@"Plymouth",@"Ram",@"Sterling",@"Yugo", nil
-------
2007
@"Alfa Romeo",@"Daewoo",@"Daihatsu",@"Eagle",@"Geo",@"Oldsmobile",@"Panoz",@"Peugeot",@"Plymouth",@"Ram",@"Smart",@"Sterling",@"Yugo", nil
-------
2006
@"Alfa Romeo",@"Daewoo",@"Daihatsu",@"Eagle",@"Geo",@"Oldsmobile",@"Peugeot",@"Plymouth",@"Ram",@"Smart",@"Sterling",@"Yugo", nil
-------
2005
@"Alfa Romeo",@"Daewoo",@"Daihatsu",@"Eagle",@"Geo",@"Oldsmobile",@"Peugeot",@"Plymouth",@"Ram",@"Smart",@"Sterling",@"Yugo", nil
-------
2004
@"Alfa Romeo",@"Aston Martin",@"Bentley",@"Daewoo",@"Daihatsu",@"Eagle",@"Geo",@"Lotus",@"Maybach",@"Panoz",@"Peugeot",@"Plymouth",@"Ram",@"Rolls-Royce",@"Smart",@"Sterling",@"Yugo", nil
-------
2003
@"Alfa Romeo",@"Aston Martin",@"Bentley",@"Daewoo",@"Daihatsu",@"Eagle",@"Geo",@"Lotus",@"Maybach",@"Panoz",@"Peugeot",@"Plymouth",@"Ram",@"Rolls-Royce",@"Scion",@"Smart",@"Sterling",@"Yugo", nil
-------
2002
@"Alfa Romeo",@"Aston Martin",@"Bentley",@"Daihatsu",@"Eagle",@"Geo",@"Lotus",@"Maybach",@"Panoz",@"Peugeot",@"Plymouth",@"Ram",@"Rolls-Royce",@"Scion",@"Smart",@"Sterling",@"Yugo", nil
-------
2001
@"Alfa Romeo",@"Aston Martin",@"Bentley",@"Daihatsu",@"Eagle",@"Geo",@"Lotus",@"Maybach",@"MINI",@"Panoz",@"Peugeot",@"Ram",@"Rolls-Royce",@"Scion",@"Smart",@"Sterling",@"Yugo", nil
-------
2000
@"Alfa Romeo",@"Aston Martin",@"Bentley",@"Daihatsu",@"Eagle",@"Geo",@"Lotus",@"Maybach",@"MINI",@"Panoz",@"Peugeot",@"Ram",@"Rolls-Royce",@"Scion",@"Smart",@"Sterling",@"Yugo", nil
-------
1999
@"Alfa Romeo",@"Aston Martin",@"Bentley",@"Daihatsu",@"Eagle",@"Geo",@"Lotus",@"Maybach",@"MINI",@"Panoz",@"Peugeot",@"Ram",@"Rolls-Royce",@"Scion",@"Smart",@"Sterling",@"Yugo", nil
-------
1998
@"Alfa Romeo",@"Aston Martin",@"Bentley",@"Daewoo",@"Daihatsu",@"Geo",@"Lotus",@"Maybach",@"MINI",@"Panoz",@"Peugeot",@"Ram",@"Rolls-Royce",@"Scion",@"Smart",@"Sterling",@"Yugo", nil
-------
1997
@"Alfa Romeo",@"Aston Martin",@"Bentley",@"Daewoo",@"Daihatsu",@"Lotus",@"Maybach",@"MINI",@"Panoz",@"Peugeot",@"Ram",@"Rolls-Royce",@"Scion",@"Smart",@"Sterling",@"Yugo", nil
-------
1996
@"Alfa Romeo",@"Aston Martin",@"Bentley",@"Daewoo",@"Daihatsu",@"Lotus",@"Maybach",@"MINI",@"Panoz",@"Peugeot",@"Ram",@"Rolls-Royce",@"Scion",@"Smart",@"Sterling",@"Yugo", nil
-------
1995
@"Aston Martin",@"Bentley",@"Daewoo",@"Daihatsu",@"Lotus",@"Maybach",@"MINI",@"Panoz",@"Peugeot",@"Ram",@"Rolls-Royce",@"Scion",@"Smart",@"Sterling",@"Yugo", nil
-------
1994
@"Aston Martin",@"Bentley",@"Daewoo",@"Daihatsu",@"Lotus",@"Maybach",@"MINI",@"Panoz",@"Peugeot",@"Ram",@"Rolls-Royce",@"Scion",@"Smart",@"Sterling",@"Yugo", nil
-------
1993
@"Aston Martin",@"Bentley",@"Daewoo",@"Daihatsu",@"Kia",@"Lotus",@"Maybach",@"MINI",@"Panoz",@"Peugeot",@"Ram",@"Rolls-Royce",@"Scion",@"Smart",@"Sterling",@"Yugo", nil
-------
1992
@"Aston Martin",@"Bentley",@"Daewoo",@"HUMMER",@"Kia",@"Lotus",@"Maybach",@"MINI",@"Panoz",@"Peugeot",@"Ram",@"Rolls-Royce",@"Scion",@"Smart",@"Sterling",@"Yugo", nil
-------
1991
@"Aston Martin",@"Bentley",@"Daewoo",@"HUMMER",@"Kia",@"Lotus",@"Maybach",@"MINI",@"Panoz",@"Ram",@"Rolls-Royce",@"Scion",@"Smart", nil
-------
0 2
\ No newline at end of file
... ...
@@ -0,0 +1,94 @@
1
+<?php
2
+set_time_limit(0);
3
+$filename = "insert_cars.sql";
4
+$filehandle = fopen($filename, "a+b");
5
+$vehicle_id = 0;
6
+$query = "INSERT INTO `vroom360`.`vehicle`(`vehicle_id`, `vehicle_make`, `vehicle_model`, `vehicle_year`) VALUES ({vehicle_id}, {vehicle_make}, {vehicle_model}, {vehicle_year});";
7
+fwrite($filehandle, date('d F Y h:i:s A', time()). chr(13).$rawRequest.chr(13).'-------------'.chr(13).chr(13));
8
+
9
+ create a new cURL resource
10
+$ch = curl_init();
11
+
12
+ set URL and other appropriate options
13
+$options = array(
14
+                 CURLOPT_HEADER => false,
15
+                 CURLOPT_RETURNTRANSFER  => 1,
16
+                 CURLOPT_REFERER => '',
17
+                );
18
+
19
+curl_setopt_array($ch, $options);
20
+
21
+year - 2011 - 1991
22
+makes from year. collect makes and id
23
+
24
+for($i = 2011; $i>1990; $i--)
25
+{
26
+    $url = "http://www.kbb.com/jsdata/2.0.0.149_38333/_makes?vehicleclass=UsedCar&yearid=$i&filterbycpo=false&filter=&priceMin=&priceMax=&categoryId=0";
27
+    curl_setopt($ch, CURLOPT_URL, $url);
28
+    $makes = json_decode(curl_exec($ch), true);
29
+    for($j = 0; $j<count($makes); $j++)
30
+    {
31
+        $modelUrl = "http://www.kbb.com/jsdata/2.0.0.149_38333/_models?vehicleclass=UsedCar&yearid=$i&makeid=".$makes[$j]['Id']."&filterbycpo=false&filter=&priceMin=&priceMax=&categoryId=0";
32
+        curl_setopt($ch, CURLOPT_URL, $modelUrl);
33
+        $models = json_decode(curl_exec($ch), true);
34
+        for($k = 0; $k<count($models); $k++)
35
+        {
36
+            $vehicle_id += 1;
37
+            $values = array(
38
+                '{vehicle_id}' => $vehicle_id,
39
+                '{vehicle_make}' => "'".$makes[$j]['Name']."'",
40
+                '{vehicle_model}' => "'".$models[$k]['Name']."'",
41
+                '{vehicle_year}' => $i
42
+            );
43
+            $insertQuery = strtr($query, $values);
44
+            echo "$insertQuery<br/>";
45
+            fwrite($filehandle, $insertQuery.chr(13));
46
+        }
47
+    }
48
+}
49
+model from make and year
50
+http://www.kbb.com/jsdata/2.0.0.149_38333/_models?vehicleclass=UsedCar&yearid=2009&makeid=57&filterbycpo=false&filter=&priceMin=&priceMax=&categoryId=0
51
+ close cURL resource, and free up system resources
52
+curl_close($ch);
53
+fclose($filehandle);
54
+echo 'Done with data mining';
55
+
56
+//Code to dump Unavailable car data in iOS array format so that we can straight away copy it to Objective-C.
57
+//Remove NOT IN in the query to get available car markers...
58
+//dont forget to change the name of the file to write to! Just trying to help my team mates. :)
59
+$dbConnection = new mysqli(
60
+                                    'localhost',
61
+                                    'webuser',
62
+                                    '2b00a6ee707290a755f1a880783fcc40',
63
+                                    'vroom360',
64
+                                    3306
65
+                                   );
66
+if ($dbConnection == null || $dbConnection == false)
67
+{
68
+    echo "\nCouldn't get hold of the DB.";
69
+    return;
70
+}
71
+$filename = "UnavailableMakers.txt";
72
+$filehandle = fopen($filename, "wb");
73
+$unavailableQuery = 'select distinct vehicle_make from vehicle
74
+where vehicle_make NOT IN (SELECT vehicle_make from vehicle where vehicle_year=?) order by vehicle_make asc';
75
+$availableQuery = 'select distinct vehicle_make from vehicle where vehicle_year=?  order by vehicle_make asc';
76
+$query = $unavailableQuery;
77
+$stmt = $dbConnection->prepare($query);
78
+for($year = 2011; $year > 1990; $year--)
79
+{
80
+    fwrite($filehandle, $year.chr(13));
81
+    $stmt->bind_param('i', $year);
82
+    $stmt->execute();
83
+    $stmt->store_result();
84
+    $stmt->bind_result($make);
85
+    while($stmt->fetch())
86
+    {
87
+        fwrite($filehandle, "@\"$make\",");
88
+    }
89
+
90
+    fwrite($filehandle, ' nil'.chr(13).'-------'.chr(13));
91
+}
92
+fclose($filehandle);
93
+echo "\nDone"
94
+?>
... ...
@@ -0,0 +1,18 @@
1
+<?php
2
+echo 'Php epoch: ' . date('Y-m-d G:i:s', 0);
3
+//phpinfo();
4
+echo '<p>'.  microtime().'</p>';
5
+echo sha1(uniqid(microtime(), true));
6
+echo '<br/>';
7
+echo sha1(uniqid(microtime(), true));
8
+function StringToFloat( $val )
9
+{
10
+    preg_match( "#^([\+\-]|)([0-9]*)(\.([0-9]*?)|)(0*)$#", trim($val), $o );
11
+    if(count($o) == 0 )
12
+        return 'NaN';
13
+    return floatval($o[1].sprintf('%d',$o[2]).($o[3]!='.'?$o[3]:''));
14
+}
15
+
16
+echo '<p>'.StringToFloat('0p').'</p>';
17
+echo intval('');
18
+?>
0 19
\ No newline at end of file
... ...
@@ -0,0 +1,108 @@
1
+RSA Key pair seed
2
+Generated randomly using phpseclib
3
+---
4
+Configuring Apache.
5
+Windows: [Install rootdir]\conf\httpd.conf
6
+Linux  : lies in /etc
7
+- [httpd.conf changed a lot to reflect what URL it appears on. Go thru it once
8
+  more before delivery.]
9
+- Install it with modssl enabled.
10
+
11
+- Configure to run the server on a non-standard port
12
+  [Line 46] Listen 4096
13
+
14
+- Webadmin email
15
+  [Line 167] ServerAdmin [email protected]
16
+
17
+- Server LAN identifier [machineName.domain:port]
18
+  [Line 176] etc-dghai.andrew.ad.cmu.edu:4096
19
+
20
+- Default root directory of the server
21
+  [Line 183] DocumentRoot "<path>"
22
+
23
+- Permissions on default root
24
+  [Lines 210 - 238]
25
+  <Directory "<path>">
26
+    Options Indexes FollowSymLinks
27
+    AllowOverride None
28
+    Order allow,deny
29
+    Allow from all
30
+  </Directory>
31
+
32
+- Add an environment variable to identify it as a production or development
33
+  server. It can go into httpd.conf or .htaccess. Production server will
34
+  have value set to 1.
35
+  [Line 133]
36
+  SetEnv production_server 0
37
+
38
+--------------------
39
+Add PHP to Apache
40
+--------------------
41
+- Use PHP 5.2.17 thread safe version for installation.
42
+- Search for LoadModule string. Add in section with that data
43
+  [Line 130] LoadModule php5_module "<path to php5apache2_2.dll>"
44
+
45
+- Search for AddType string. Add in section with that data
46
+  [Line 392] AddType application/x-httpd-php .php
47
+
48
+- (optional) To make server look for index.php in directory
49
+  [Line 247] DirectoryIndex index.php
50
+
51
+- making mysqli (php) work on WAMP
52
+  http://www.apachelounge.com/viewtopic.php?t=3890
53
+  Install MySQL Workbench tools, replace libmysql.dll in php install dir
54
+  with that from C:\Program Files (x86)\MySQL\MySQL Workbench CE 5.2.34.2
55
+  - paste php_mysqli.dll in <php_install_dir>\ext and modify php.ini as
56
+    {Lines 1906 - 1907}
57
+    {Search for PHP_MYSQL. Following lines will go in that section}
58
+    [PHP_MYSQLI]
59
+    extension=php_mysqli.dll
60
+
61
+- Openssl on windows
62
+  PHP does not include php_openssl.dll by default. Download it from
63
+  http://windows.php.net/downloads/releases/php-5.3.8-Win32-VC9-x86.zip
64
+  Its in the extension folder. Copy it to <PHP_Install_dir>\ext
65
+  and put the following lines in php.ini
66
+    [PHP_OPENSSL]
67
+    extension=php_openssl.dll
68
+==========
69
+MySQL
70
+- root pass: vroom 360
71
+  the password does have a space.
72
+
73
+- schema: vroom360
74
+  user: webuser
75
+  password: 2b00a6ee707290a755f1a880783fcc40
76
+  -password is md5 of string "vroom 360"
77
+  -Following string will be stored in mysql db which is result of SELECT PASSWORD('2b00a6ee707290a755f1a880783fcc40') FROM DUAL;
78
+   *C5DF9C11FDCEA187921EEB5DDDFF0C32FE9CB352    //it includes asterisk.
79
+  -look for privileges below. This is a very restricted user.
80
+
81
+- schema: vroom360
82
+  user: vroomadmin
83
+  password: 3e2b57d2622012ec92a10a11e548f1c4
84
+  -password is md5 of string "carview"
85
+  -Following string will be stored in mysql db which is result of SELECT PASSWORD('3e2b57d2622012ec92a10a11e548f1c4') FROM DUAL;
86
+   *D272B26E75F3D18F7EB3C0714F77960D0015DB79
87
+  -This user only has Delete privileges in addition to the ones normal
88
+   webuser has.
89
+-- --------------------------------------------------
90
+-- USERS
91
+-- --------------------------------------------------
92
+-- Create user with qualified domain and ip address. Not using wildcards.
93
+CREATE USER 'webuser'@'127.0.0.1' IDENTIFIED BY PASSWORD '*C5DF9C11FDCEA187921EEB5DDDFF0C32FE9CB352';
94
+CREATE USER 'webuser'@'localhost' IDENTIFIED BY PASSWORD '*C5DF9C11FDCEA187921EEB5DDDFF0C32FE9CB352';
95
+
96
+-- http://dev.mysql.com/doc/refman/5.6/en/grant.html#grant-privileges
97
+GRANT SELECT, INSERT, UPDATE, EXECUTE ON vroom360.* TO 'webuser'@'127.0.0.1';
98
+GRANT SELECT, INSERT, UPDATE, EXECUTE ON vroom360.* TO 'webuser'@'localhost';
99
+
100
+-- User for the admin mode for website
101
+CREATE USER 'vroomadmin'@'127.0.0.1' IDENTIFIED BY PASSWORD '*D272B26E75F3D18F7EB3C0714F77960D0015DB79';
102
+CREATE USER 'vroomadmin'@'localhost' IDENTIFIED BY PASSWORD '*D272B26E75F3D18F7EB3C0714F77960D0015DB79';
103
+
104
+GRANT SELECT, INSERT, UPDATE, EXECUTE, DELETE ON vroom360.* TO 'vroomadmin'@'127.0.0.1';
105
+GRANT SELECT, INSERT, UPDATE, EXECUTE, DELETE ON vroom360.* TO 'vroomadmin'@'localhost';
106
+======================================================
107
+- admin mode needs to have digest authentication implemented.
108
+- One database connection per page. So connections are managed by UI.
0 109
\ No newline at end of file
... ...
@@ -0,0 +1,16 @@
1
+CREDITS
2
+=======
3
+
4
+eZ Components team
5
+------------------
6
+
7
+- Sergey Alexeev
8
+- Sebastian Bergmann
9
+- Jan Borsodi
10
+- Raymond Bosman
11
+- Frederik Holljen
12
+- Kore Nordmann
13
+- Derick Rethans
14
+- Vadym Savchuk
15
+- Tobias Schlitt
16
+- Alexandru Stanoi
... ...
@@ -0,0 +1,332 @@
1
+1.8 - Monday 21 December 2009
2
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3
+
4
+- Fixed issue #15896: Autoload not working for all lowercase class names.
5
+
6
+
7
+1.7 - Monday 29 June 2009
8
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
9
+
10
+- No changes
11
+
12
+
13
+1.7rc1 - Monday 22 June 2009
14
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15
+
16
+- Fixed an issue with the PEAR reader as sometimes the returned structure is
17
+  different.
18
+
19
+
20
+1.7beta1 - Monday 08 June 2009
21
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
22
+
23
+- Made sure that we (try) to load the PEAR Registry class so that PEAR doesn't
24
+  have to be in autoload.
25
+
26
+
27
+1.7alpha1 - Tuesday 26 May 2009
28
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
29
+
30
+- Added 'SunOS' to the list of Unices to make finding binaries work on Solaris
31
+  as well.
32
+- Implemented issue #13718: Include metadata about installed components that
33
+  can be queried to figure out required PHP versions, dependencies and
34
+  component versions.
35
+
36
+
37
+1.6.1 - Monday 09 February 2009
38
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
39
+
40
+- Fixed issue #14402: Auto detection of external programs (binaries) does not
41
+  throw warnings anymore.
42
+
43
+
44
+1.6 - Monday 05 January 2009
45
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
46
+
47
+- Added a workaround for a segfault in call_user_func() in PHP 5.2.x.
48
+
49
+
50
+1.6rc1 - Monday 15 December 2008
51
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
52
+
53
+- Implemented issue #12542: Refactored the ezcBaseFile::findRecursive() method
54
+  into the ezcBase::walkRecursive() method so that you can setup your own
55
+  callbacks to "do things". The findRecursive() method is now implemented
56
+  through this.
57
+- Fixed issue #14091: Incorrect documentation for
58
+  ezcBaseConfigurationInitializer.
59
+
60
+
61
+1.6beta1 - Monday 01 December 2008
62
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
63
+
64
+- Added the exception class ezcBaseFunctionalityNotSupportedException.
65
+
66
+
67
+1.5.2 - Monday 06 October 2008
68
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
69
+
70
+- Fixed an issue in ezcBaseFile::removeRecursive, where the parent directory
71
+  could not be written to. We now make sure nothing is deleted until we're sure
72
+  everything can be deleted.
73
+
74
+
75
+1.5.1 - Monday 04 August 2008
76
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
77
+
78
+- Fixed issue #13370: Infinitive loop in ezcBaseFile::calculateRelativePath().
79
+- Implemented issue #11865: Different development modes.
80
+
81
+
82
+1.5 - Monday 16 June 2008
83
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
84
+
85
+- No changes.
86
+
87
+
88
+1.5rc1 - Tuesday 10 June 2008
89
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
90
+
91
+- No changes
92
+
93
+
94
+1.5beta1 - Tuesday 27 May 2008
95
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
96
+
97
+- Added the ezcBasePersistable interface that can be used to ensure that the
98
+  object implementing this interface can be used with PersistentObject and
99
+  Search.
100
+
101
+
102
+1.5alpha2 - Tuesday 13 May 2008
103
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
104
+
105
+- Fixed a bug in ezcBaseFile::findRecursive that prevented you from passing an
106
+  empty array to collect statistics.
107
+- Changed ezcBase::getInstallationPath() so that it always returns a trailing
108
+  directory separator.
109
+
110
+
111
+1.5alpha1 - Monday 07 April 2008
112
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
113
+
114
+- Implemented issue #8529: Added a by-reference argument to
115
+  ezcBaseFile::findRecursive that returns statistsics (count and total size)
116
+  of all files that are returned by this function.
117
+- Implemented issue #11506: Added the static method
118
+  ezcBase::getInstallationPath().
119
+- Implemented issue #12694: replace reflection test for class type with spl
120
+  function.
121
+
122
+
123
+1.4.1 - Monday 14 January 2008
124
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
125
+
126
+- Fixed issue #11448: ezc_bootsrap.php uses relative paths. 
127
+- Fixed issue #12316: Numbers in own component prefix not possible.
128
+- Fixed issue #12329: ezcBaseFeatures::findExecutableInPath's return value
129
+  does not include the extension to the executable at the end on Windows.
130
+- Added an optional argument to the ezcBaseValueException constructor to allow
131
+  the exception to be used for non-property/setting type violations as well.
132
+
133
+
134
+1.4 - Monday 17 December 2007
135
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
136
+
137
+- No changes.
138
+
139
+
140
+1.4rc1 - Wednesday 05 December 2007
141
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
142
+
143
+- No changes.
144
+
145
+
146
+1.4beta1 - Wednesday 28 November 2007
147
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
148
+
149
+- No changes.
150
+
151
+
152
+1.4alpha2 - Monday 29 October 2007
153
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
154
+
155
+- Added the ezcBaseFile::copyRecursive() method, to recursively copy files or
156
+  directories
157
+- Fixed issue #11540: Problems with ezcFile::findRecursive and
158
+  ezcFile::calculateRelativePath on systems where DIRECTORY_SEPERATOR is not
159
+  //.
160
+
161
+
162
+1.4alpha1 - Tuesday 18 September 2007
163
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
164
+
165
+- Added the ezcBaseFile class, which was moved from the File component.
166
+- Added the ezcBaseFile::isAbsolutePath() method, which returns whether a path
167
+  is absolute or relative.
168
+
169
+
170
+1.3.1 - Monday 30 July 2007
171
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
172
+
173
+- Fixed issue #11057: The ezcBaseConfigurationInitializer inteface is not
174
+  enforced for callback classes.
175
+
176
+
177
+1.3 - Monday 02 July 2007
178
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
179
+
180
+- Documentation fixes and updates.
181
+
182
+
183
+1.3rc1 - Monday 25 June 2007
184
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
185
+
186
+- Documentation fixes and updates.
187
+
188
+
189
+1.3beta2 - Thursday 31 May 2007
190
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
191
+
192
+- Fixed issue #10704: Autoload fails on class not found. The exception is now
193
+  off by default, but can be turned on through the "debug" property of the
194
+  ezcBaseAutoloadOptions class. This option class can be set with
195
+  ezcBase::setOptions().
196
+
197
+
198
+1.3beta1 - Monday 07 May 2007
199
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
200
+
201
+- Fixed issue #8433: ezcBase::getRepositoryDirectories() problems.
202
+- Fixed issue #10583: ezcBaseOptions misses __isset().
203
+- Fixed issue #10666: ezc_bootstrap.php fails on Windows.
204
+- Implemented issue #9569: Add "autoload.php" as 3rd fallback autoload file to
205
+  search for.
206
+- Implemented issue #9988: Implement component preloading for better opcode
207
+  cache performance.
208
+- Added exception class ezcBaseExtensionNotFoundException to be thrown when an
209
+  extension is required but is not found.
210
+- Changed the ezcBaseInit::fetchConfig() method to return the value that was 
211
+  returned from the callback function. 
212
+
213
+
214
+1.2 - Monday 18 December 2006
215
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
216
+
217
+- Fixed issue #9658: Checking if $_ENV['PATH'] is set before using it in
218
+  ezcBaseFeatures.
219
+- Fixed issue #9780: ezcBaseFeatures throws notice about non-existing array
220
+  key "PATH".
221
+- Fixed issue #9819: Let all components deal with the ezcBaseAutoloadException
222
+  properly.
223
+- Fixed the exception name for 'ezcBaseDoubleClassRepositoryPrefix' - it was
224
+  missing "Exception".
225
+- Implemented issue #9811: If a file for a class can not be found through
226
+  autoloading, we now throw the ezcBaseAutoloadException which makes debugging
227
+  easier.
228
+- Added the static method ezcBaseFeatures::findExecutableInPath() that searches the
229
+  path for the given executable.
230
+- Added the static method ezcBaseFeatures::os() that returns a sanitized
231
+  version of the current OS' name.
232
+
233
+
234
+1.2beta2 - Monday 20 November 2006
235
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
236
+
237
+- Fixed issue #8507: Two autoload directories with the same basepath don't
238
+  work.
239
+- Fixed issue #9390: Classes in external repositories that map to the same
240
+  autoload filename of an internal component were added to the external
241
+  autoload cache array as well.
242
+
243
+
244
+1.2beta1 - Tuesday 24 October 2006
245
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
246
+
247
+- Added the ezcBaseFeatures class to check whether the current PHP
248
+  installation and environment provides features that can be used in the
249
+  components.
250
+- Added the ezcBaseInit class that assists you by setting up on-demand
251
+  configurations for objects (most notable useful for singleton classes).
252
+- Implemented FR #8508: Display search paths for the autoload files in case of
253
+  a missing class.
254
+- Implemented FR #8753: Added the 'Base/ezc_bootstrap.php' file which sets up
255
+  the autoload environment for you to facilitate an easier way of starting to
256
+  use the eZ components.
257
+
258
+
259
+1.1.1 - Monday 28 August 2006
260
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
261
+
262
+- Added the ezcBaseStruct class from which all structs in all components
263
+  should inherit from.
264
+
265
+
266
+1.1 - Friday 09 June 2006
267
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
268
+
269
+- Fixed bug #8434: ezcBase autoload system does not handle classes without a
270
+  prefix.
271
+- Fixed bug #8435: ezcBase::addClassRepository assumes the ezc way of
272
+  structuring files. From now on the path specifying the autoload directory is
273
+  *not* relative to the repository directory anymore.
274
+	
275
+	
276
+1.1rc1 - Monday 29 May 2006
277
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
278
+
279
+- Fixed bug #8252: Autoloading for external repositories only works for the
280
+  first such class.
281
+
282
+
283
+1.1beta2 - Tuesday 09 May 2006
284
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
285
+
286
+- Added support for external class repositories. You can now add a class
287
+  repository to the autoload mechanism by using the addClassRepository()
288
+  method.
289
+- Added a method to return all configured class repositories.
290
+- Added the REMOVE constant to the ezcBaseFileException.
291
+- Added the ezcBaseOptions class that serves as base class for all option
292
+  classes in the components.
293
+
294
+
295
+1.1beta1 - Wednesday 19 April 2006
296
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
297
+
298
+- Changed the way how files are included when the SVN checkout of the eZ
299
+  components was used. This does not affect normal use of the components.
300
+- Fixed class descriptions for the exceptions in the documentation.
301
+
302
+
303
+1.0 - Monday 30 January 2006
304
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
305
+
306
+- Added HTML escaping of exception messages so that they show up correctly in 
307
+  a browser. The original message is stored in the originalMessage property
308
+  in the exception object.
309
+
310
+
311
+1.0rc1 - Monday 16 January 2006
312
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
313
+
314
+- Added the ezcBaseException that all exceptions in the components library
315
+  should descent from.
316
+- Added generic File and IO exceptions that all other components can use
317
+  instead of having to reimplement them.
318
+- Added ezcBase::checkDependency() method that allows components to specify
319
+  dependencies on either a PHP version or a PHP extension.
320
+
321
+
322
+1.0beta2 - Wednesday 21 December 2005
323
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
324
+
325
+- Added the ezcBasePropertyException that can be used by components to signal
326
+  that an property was assigned a value which it does not allows.
327
+
328
+
329
+1.0beta1 - Tuesday 22 November 2005
330
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
331
+
332
+- Initial release of this package.
... ...
@@ -0,0 +1,2 @@
1
+The Base package provides the basic infrastructure that all packages rely on.
2
+Therefore every component relies on this package.
... ...
@@ -0,0 +1,23 @@
1
+Review Alexandru 2008-05-08
2
+===========================
3
+
4
+[X] Regarding feature request #8529 (a du -s implementation). The documentation
5
+    for ezcBaseFile::findRecursive() says that you can supply an empty array
6
+    as the 4th argument to get the statistics.
7
+
8
+    If I pass for example $stats which I initialized with array() before, then
9
+    I get notices: "Undefined index: count in /home/as/dev/ezcomponents/trunk/Base/src/file.php
10
+    on line 139", and the same notice for index "size".
11
+
12
+    Also the documentation does not mention that you need to pass a variable and not
13
+    a value - if I pass array() as the 4th argument I get the error "Cannot pass
14
+    parameter 4 by reference"
15
+
16
+    If I pass $stats which I initialize with null, false or empty string before,
17
+    then the function works.
18
+
19
+    Also all the file recursive tests fail on Windows (slash issues mostly).
20
+
21
+[X] Regarding feature request #11506 (method ezcBase::getInstallationPath()). On
22
+    Linux it returns the path without any slash at the end, but on Windows (Vista)
23
+    it adds a Windows slash at the end.
... ...
@@ -0,0 +1,658 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBase class.
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * Base class implements the methods needed to use the eZ components.
12
+ *
13
+ * @package Base
14
+ * @version 1.8
15
+ * @mainclass
16
+ */
17
+class ezcBase
18
+{
19
+    /**
20
+     * Used for dependency checking, to check for a PHP extension.
21
+     */
22
+    const DEP_PHP_EXTENSION = "extension";
23
+
24
+    /**
25
+     * Used for dependency checking, to check for a PHP version.
26
+     */
27
+    const DEP_PHP_VERSION = "version";
28
+
29
+    /**
30
+     * Denotes the production mode
31
+     */
32
+    const MODE_PRODUCTION = 0;
33
+
34
+    /**
35
+     * Denotes the development mode
36
+     */
37
+    const MODE_DEVELOPMENT = 1;
38
+
39
+    /**
40
+     * Indirectly it determines the path where the autoloads are stored.
41
+     *
42
+     * @var string
43
+     */
44
+    private static $libraryMode = "tarball";
45
+
46
+    /**
47
+     * Contains the current working directory, which is used when the
48
+     * $libraryMode is set to "custom".
49
+     *
50
+     * @var string
51
+     */
52
+    private static $currentWorkingDirectory = null;
53
+
54
+    /**
55
+     * The full path to the autoload directory.
56
+     *
57
+     * @var string
58
+     */
59
+    protected static $packageDir = null;
60
+
61
+    /**
62
+     * Contains which development mode is used. It's "development" by default,
63
+     * because of backwards compatibility reasons.
64
+     */
65
+    private static $runMode = self::MODE_DEVELOPMENT;
66
+
67
+    /**
68
+     * Stores info with additional paths where autoload files and classes for
69
+     * autoloading could be found. Each item of $repositoryDirs looks like
70
+     * array( autoloadFileDir, baseDir ). The array key is the prefix belonging
71
+     * to classes within that repository - if provided when calling
72
+     * addClassRepository(), or an autoincrement integer otherwise.
73
+     *
74
+     * @var array(string=>array)
75
+     */
76
+    protected static $repositoryDirs = array();
77
+
78
+    /**
79
+     * This variable stores all the elements from the autoload arrays. When a
80
+     * new autoload file is loaded, their files are added to this array.
81
+     *
82
+     * @var array(string=>string)
83
+     */
84
+    protected static $autoloadArray = array();
85
+
86
+    /**
87
+     * This variable stores all the elements from the autoload arrays for
88
+     * external repositories. When a new autoload file is loaded, their files
89
+     * are added to this array.
90
+     *
91
+     * @var array(string=>string)
92
+     */
93
+    protected static $externalAutoloadArray = array();
94
+
95
+    /**
96
+     * Options for the ezcBase class.
97
+     *
98
+     * @var ezcBaseOptions
99
+     */
100
+    static private $options;
101
+
102
+    /**
103
+     * Associates an option object with this static class.
104
+     *
105
+     * @param ezcBaseAutoloadOptions $options
106
+     */
107
+    static public function setOptions( ezcBaseAutoloadOptions $options )
108
+    {
109
+        self::$options = $options;
110
+    }
111
+
112
+    /**
113
+     * Tries to autoload the given className. If the className could be found
114
+     * this method returns true, otherwise false.
115
+     *
116
+     * This class caches the requested class names (including the ones who
117
+     * failed to load).
118
+     *
119
+     * @param string $className  The name of the class that should be loaded.
120
+     *
121
+     * @return bool
122
+     */
123
+    public static function autoload( $className )
124
+    {
125
+        ezcBase::setPackageDir();
126
+
127
+        // Check whether the classname is already in the cached autoloadArray.
128
+        if ( array_key_exists( $className, ezcBase::$autoloadArray ) )
129
+        {
130
+            // Is it registered as 'unloadable'?
131
+            if ( ezcBase::$autoloadArray[$className] == false )
132
+            {
133
+                return false;
134
+            }
135
+            ezcBase::loadFile( ezcBase::$autoloadArray[$className] );
136
+
137
+            return true;
138
+        }
139
+
140
+        // Check whether the classname is already in the cached autoloadArray
141
+        // for external repositories.
142
+        if ( array_key_exists( $className, ezcBase::$externalAutoloadArray ) )
143
+        {
144
+            // Is it registered as 'unloadable'?
145
+            if ( ezcBase::$externalAutoloadArray[$className] == false )
146
+            {
147
+                return false;
148
+            }
149
+            ezcBase::loadExternalFile( ezcBase::$externalAutoloadArray[$className] );
150
+
151
+            return true;
152
+        }
153
+
154
+        // Not cached, so load the autoload from the package.
155
+        // Matches the first and optionally the second 'word' from the classname.
156
+        $fileNames = array();
157
+        if ( preg_match( "/^([a-z0-9]*)([A-Z][a-z0-9]*)?([A-Z][a-z0-9]*)?/", $className, $matches ) !== false )
158
+        {
159
+            $autoloadFile = "";
160
+            // Try to match with both names, if available.
161
+            switch ( sizeof( $matches ) )
162
+            {
163
+                case 4:
164
+                    // check for x_y_autoload.php
165
+                    $autoloadFile = strtolower( "{$matches[2]}_{$matches[3]}_autoload.php" );
166
+                    $fileNames[] = $autoloadFile;
167
+                    if ( ezcBase::requireFile( $autoloadFile, $className, $matches[1] ) )
168
+                    {
169
+                        return true;
170
+                    }
171
+                    // break intentionally missing.
172
+
173
+                case 3:
174
+                    // check for x_autoload.php
175
+                    $autoloadFile = strtolower( "{$matches[2]}_autoload.php" );
176
+                    $fileNames[] = $autoloadFile;
177
+                    if ( ezcBase::requireFile( $autoloadFile, $className, $matches[1] ) )
178
+                    {
179
+                        return true;
180
+                    }
181
+                    // break intentionally missing.
182
+
183
+                case 2:
184
+                    // check for autoload.php
185
+                    $autoloadFile = 'autoload.php';
186
+                    $fileNames[] = $autoloadFile;
187
+                    if ( ezcBase::requireFile( $autoloadFile, $className, $matches[1] ) )
188
+                    {
189
+                        return true;
190
+                    }
191
+                    break;
192
+            }
193
+
194
+            // Maybe there is another autoload available.
195
+            // Register this classname as false.
196
+            ezcBase::$autoloadArray[$className] = false;
197
+        }
198
+
199
+        $path = ezcBase::$packageDir . 'autoload/';
200
+        $realPath = realpath( $path );
201
+
202
+        if ( $realPath == '' )
203
+        {
204
+            // Can not be tested, because if this happens, then the autoload
205
+            // environment has not been set-up correctly.
206
+            trigger_error( "Couldn't find autoload directory '$path'", E_USER_ERROR );
207
+        }
208
+
209
+        $dirs = self::getRepositoryDirectories();
210
+        if ( ezcBase::$options && ezcBase::$options->debug )
211
+        {
212
+            throw new ezcBaseAutoloadException( $className, $fileNames, $dirs );
213
+        }
214
+
215
+        return false;
216
+    }
217
+
218
+    /**
219
+     * Sets the current working directory to $directory.
220
+     *
221
+     * @param string $directory
222
+     */
223
+    public static function setWorkingDirectory( $directory )
224
+    {
225
+        self::$libraryMode = 'custom';
226
+        self::$currentWorkingDirectory = $directory;
227
+    }
228
+
229
+    /**
230
+     * Figures out the base path of the eZ Components installation.
231
+     *
232
+     * It stores the path that it finds in a static member variable. The path
233
+     * depends on the installation method of the eZ Components. The SVN version
234
+     * has a different path than the PEAR installed version.
235
+     */
236
+    protected static function setPackageDir()
237
+    {
238
+        if ( ezcBase::$packageDir !== null )
239
+        {
240
+            return;
241
+        }
242
+
243
+        // Get the path to the components.
244
+        $baseDir = dirname( __FILE__ );
245
+
246
+        switch ( ezcBase::$libraryMode )
247
+        {
248
+            case "custom":
249
+                ezcBase::$packageDir = self::$currentWorkingDirectory . '/';
250
+                break;
251
+            case "devel":
252
+            case "tarball":
253
+                ezcBase::$packageDir = $baseDir. "/../../";
254
+                break;
255
+            case "pear";
256
+                ezcBase::$packageDir = $baseDir. "/../";
257
+                break;
258
+        }
259
+    }
260
+
261
+    /**
262
+     * Tries to load the autoload array and, if loaded correctly, includes the class.
263
+     *
264
+     * @param string $fileName    Name of the autoload file.
265
+     * @param string $className   Name of the class that should be autoloaded.
266
+     * @param string $prefix      The prefix of the class repository.
267
+     *
268
+     * @return bool  True is returned when the file is correctly loaded.
269
+     *                   Otherwise false is returned.
270
+     */
271
+    protected static function requireFile( $fileName, $className, $prefix )
272
+    {
273
+        $autoloadDir = ezcBase::$packageDir . "autoload/";
274
+
275
+        // We need the full path to the fileName. The method file_exists() doesn't
276
+        // automatically check the (php.ini) library paths. Therefore:
277
+        // file_exists( "ezc/autoload/$fileName" ) doesn't work.
278
+        if ( $prefix === 'ezc' && file_exists( "$autoloadDir$fileName" ) )
279
+        {
280
+            $array = require( "$autoloadDir$fileName" );
281
+
282
+            if ( is_array( $array) && array_key_exists( $className, $array ) )
283
+            {
284
+                // Add the array to the cache, and include the requested file.
285
+                ezcBase::$autoloadArray = array_merge( ezcBase::$autoloadArray, $array );
286
+                if ( ezcBase::$options !== null && ezcBase::$options->preload && !preg_match( '/Exception$/', $className ) )
287
+                {
288
+                    foreach ( $array as $loadClassName => $file )
289
+                    {
290
+                        if ( $loadClassName !== 'ezcBase' && !class_exists( $loadClassName, false ) && !interface_exists( $loadClassName, false ) && !preg_match( '/Exception$/', $loadClassName ) /*&& !class_exists( $loadClassName, false ) && !interface_exists( $loadClassName, false )*/ )
291
+                        {
292
+                            ezcBase::loadFile( ezcBase::$autoloadArray[$loadClassName] );
293
+                        }
294
+                    }
295
+                }
296
+                else
297
+                {
298
+                    ezcBase::loadFile( ezcBase::$autoloadArray[$className] );
299
+                }
300
+                return true;
301
+            }
302
+        }
303
+
304
+        // It is not in components autoload/ dir.
305
+        // try to search in additional dirs.
306
+        foreach ( ezcBase::$repositoryDirs as $repositoryPrefix => $extraDir )
307
+        {
308
+            if ( gettype( $repositoryPrefix ) === 'string' && $repositoryPrefix !== $prefix )
309
+            {
310
+                continue;
311
+            }
312
+
313
+            if ( file_exists( $extraDir['autoloadDirPath'] . '/' . $fileName ) )
314
+            {
315
+                $array = array();
316
+                $originalArray = require( $extraDir['autoloadDirPath'] . '/' . $fileName );
317
+
318
+                // Building paths.
319
+                // Resulting path to class definition file consists of:
320
+                // path to extra directory with autoload file +
321
+                // basePath provided for current extra directory +
322
+                // path to class definition file stored in autoload file.
323
+                foreach ( $originalArray as $class => $classPath )
324
+                {
325
+                    $array[$class] = $extraDir['basePath'] . '/' . $classPath;
326
+                }
327
+
328
+                if ( is_array( $array ) && array_key_exists( $className, $array ) )
329
+                {
330
+                    // Add the array to the cache, and include the requested file.
331
+                    ezcBase::$externalAutoloadArray = array_merge( ezcBase::$externalAutoloadArray, $array );
332
+                    ezcBase::loadExternalFile( ezcBase::$externalAutoloadArray[$className] );
333
+                    return true;
334
+                }
335
+            }
336
+        }
337
+
338
+        // Nothing found :-(.
339
+        return false;
340
+    }
341
+
342
+    /**
343
+     * Loads, require(), the given file name. If we are in development mode,
344
+     * "/src/" is inserted into the path.
345
+     *
346
+     * @param string $file  The name of the file that should be loaded.
347
+     */
348
+    protected static function loadFile( $file )
349
+    {
350
+        switch ( ezcBase::$libraryMode )
351
+        {
352
+            case "devel":
353
+            case "tarball":
354
+                list( $first, $second ) = explode( '/', $file, 2 );
355
+                $file = $first . "/src/" . $second;
356
+                break;
357
+
358
+            case "custom":
359
+                list( $first, $second ) = explode( '/', $file, 2 );
360
+                // Add the "src/" after the package name.
361
+                if ( $first == 'Base' || $first == 'UnitTest' )
362
+                {
363
+                    list( $first, $second ) = explode( '/', $file, 2 );
364
+                    $file = $first . "/src/" . $second;
365
+                }
366
+                else
367
+                {
368
+                    list( $first, $second, $third ) = explode( '/', $file, 3 );
369
+                    $file = $first . '/' . $second . "/src/" . $third;
370
+                }
371
+                break;
372
+
373
+            case "pear":
374
+                /* do nothing, it's already correct */
375
+                break;
376
+        }
377
+
378
+        if ( file_exists( ezcBase::$packageDir . $file ) )
379
+        {
380
+            require( ezcBase::$packageDir . $file );
381
+        }
382
+        else
383
+        {
384
+            // Can not be tested, because if this happens, then one of the
385
+            // components has a broken autoload file.
386
+            throw new ezcBaseFileNotFoundException( ezcBase::$packageDir.$file );
387
+        }
388
+    }
389
+
390
+    /**
391
+     * Loads, require(), the given file name from an external package.
392
+     *
393
+     * @param string $file  The name of the file that should be loaded.
394
+     */
395
+    protected static function loadExternalFile( $file )
396
+    {
397
+        if ( file_exists( $file ) )
398
+        {
399
+            require( $file );
400
+        }
401
+        else
402
+        {
403
+            throw new ezcBaseFileNotFoundException( $file );
404
+        }
405
+    }
406
+
407
+    /**
408
+     * Checks for dependencies on PHP versions or extensions
409
+     *
410
+     * The function as called by the $component component checks for the $type
411
+     * dependency. The dependency $type is compared against the $value. The
412
+     * function aborts the script if the dependency is not matched.
413
+     *
414
+     * @param string $component
415
+     * @param int $type
416
+     * @param mixed $value
417
+     */
418
+    public static function checkDependency( $component, $type, $value )
419
+    {
420
+        switch ( $type )
421
+        {
422
+            case self::DEP_PHP_EXTENSION:
423
+                if ( extension_loaded( $value ) )
424
+                {
425
+                    return;
426
+                }
427
+                else
428
+                {
429
+                    // Can not be tested as it would abort the PHP script.
430
+                    die( "\nThe {$component} component depends on the default PHP extension '{$value}', which is not loaded.\n" );
431
+                }
432
+                break;
433
+
434
+            case self::DEP_PHP_VERSION:
435
+                $phpVersion = phpversion();
436
+                if ( version_compare( $phpVersion, $value, '>=' ) )
437
+                {
438
+                    return;
439
+                }
440
+                else
441
+                {
442
+                    // Can not be tested as it would abort the PHP script.
443
+                    die( "\nThe {$component} component depends on the PHP version '{$value}', but the current version is '{$phpVersion}'.\n" );
444
+                }
445
+                break;
446
+        }
447
+    }
448
+
449
+    /**
450
+     * Return the list of directories that contain class repositories.
451
+     *
452
+     * The path to the eZ components directory is always included in the result
453
+     * array. Each element in the returned array has the format of:
454
+     * packageDirectory => ezcBaseRepositoryDirectory
455
+     *
456
+     * @return array(string=>ezcBaseRepositoryDirectory)
457
+     */
458
+    public static function getRepositoryDirectories()
459
+    {
460
+        $autoloadDirs = array();
461
+        ezcBase::setPackageDir();
462
+        $repositoryDir = self::$currentWorkingDirectory ? self::$currentWorkingDirectory : ( realpath( dirname( __FILE__ ) . '/../../' ) );
463
+        $autoloadDirs['ezc'] = new ezcBaseRepositoryDirectory( ezcBaseRepositoryDirectory::TYPE_INTERNAL, $repositoryDir, $repositoryDir . "/autoload" );
464
+
465
+        foreach ( ezcBase::$repositoryDirs as $extraDirKey => $extraDirArray )
466
+        {
467
+            $repositoryDirectory = new ezcBaseRepositoryDirectory( ezcBaseRepositoryDirectory::TYPE_EXTERNAL, realpath( $extraDirArray['basePath'] ), realpath( $extraDirArray['autoloadDirPath'] ) );
468
+            $autoloadDirs[$extraDirKey] = $repositoryDirectory;
469
+        }
470
+
471
+        return $autoloadDirs;
472
+    }
473
+
474
+    /**
475
+     * Adds an additional class repository.
476
+     *
477
+     * Used for adding class repositoryies outside the eZ components to be
478
+     * loaded by the autoload system.
479
+     *
480
+     * This function takes two arguments: $basePath is the base path for the
481
+     * whole class repository and $autoloadDirPath the path where autoload
482
+     * files for this repository are found. The paths in the autoload files are
483
+     * relative to the package directory as specified by the $basePath
484
+     * argument. I.e. class definition file will be searched at location
485
+     * $basePath + path to the class definition file as stored in the autoload
486
+     * file.
487
+     *
488
+     * addClassRepository() should be called somewhere in code before external classes
489
+     * are used.
490
+     *
491
+     * Example:
492
+     * Take the following facts:
493
+     * <ul>
494
+     * <li>there is a class repository stored in the directory "./repos"</li>
495
+     * <li>autoload files for that repository are stored in "./repos/autoloads"</li>
496
+     * <li>there are two components in this repository: "Me" and "You"</li>
497
+     * <li>the "Me" component has the classes "erMyClass1" and "erMyClass2"</li>
498
+     * <li>the "You" component has the classes "erYourClass1" and "erYourClass2"</li>
499
+     * </ul>
500
+     *
501
+     * In this case you would need to create the following files in
502
+     * "./repos/autoloads". Please note that the part before _autoload.php in
503
+     * the filename is the first part of the <b>classname</b>, not considering
504
+     * the all lower-case letter prefix.
505
+     *
506
+     * "my_autoload.php":
507
+     * <code>
508
+     * <?php
509
+     *     return array (
510
+     *       'erMyClass1' => 'Me/myclass1.php',
511
+     *       'erMyClass2' => 'Me/myclass2.php',
512
+     *     );
513
+     * ?>
514
+     * </code>
515
+     *
516
+     * "your_autoload.php":
517
+     * <code>
518
+     * <?php
519
+     *     return array (
520
+     *       'erYourClass1' => 'You/yourclass1.php',
521
+     *       'erYourClass2' => 'You/yourclass2.php',
522
+     *     );
523
+     * ?>
524
+     * </code>
525
+     *
526
+     * The directory structure for the external repository is then:
527
+     * <code>
528
+     * ./repos/autoloads/my_autoload.php
529
+     * ./repos/autoloads/you_autoload.php
530
+     * ./repos/Me/myclass1.php
531
+     * ./repos/Me/myclass2.php
532
+     * ./repos/You/yourclass1.php
533
+     * ./repos/You/yourclass2.php
534
+     * </code>
535
+     *
536
+     * To use this repository with the autoload mechanism you have to use the
537
+     * following code:
538
+     * <code>
539
+     * <?php
540
+     * ezcBase::addClassRepository( './repos', './repos/autoloads' );
541
+     * $myVar = new erMyClass2();
542
+     * ?>
543
+     * </code>
544
+     *
545
+     * @throws ezcBaseFileNotFoundException if $autoloadDirPath or $basePath do not exist.
546
+     * @param string $basePath
547
+     * @param string $autoloadDirPath
548
+     * @param string $prefix
549
+     */
550
+    public static function addClassRepository( $basePath, $autoloadDirPath = null, $prefix = null )
551
+    {
552
+        // check if base path exists
553
+        if ( !is_dir( $basePath ) )
554
+        {
555
+            throw new ezcBaseFileNotFoundException( $basePath, 'base directory' );
556
+        }
557
+
558
+        // calculate autoload path if it wasn't given
559
+        if ( is_null( $autoloadDirPath ) )
560
+        {
561
+            $autoloadDirPath = $basePath . '/autoload';
562
+        }
563
+
564
+        // check if autoload dir exists
565
+        if ( !is_dir( $autoloadDirPath ) )
566
+        {
567
+            throw new ezcBaseFileNotFoundException( $autoloadDirPath, 'autoload directory' );
568
+        }
569
+
570
+        // add info to $repositoryDirs
571
+        if ( $prefix === null )
572
+        {
573
+            $array = array( 'basePath' => $basePath, 'autoloadDirPath' => $autoloadDirPath );
574
+
575
+            // add info to the list of extra dirs
576
+            ezcBase::$repositoryDirs[] = $array;
577
+        }
578
+        else
579
+        {
580
+            if ( array_key_exists( $prefix, ezcBase::$repositoryDirs ) )
581
+            {
582
+                throw new ezcBaseDoubleClassRepositoryPrefixException( $prefix, $basePath, $autoloadDirPath );
583
+            }
584
+
585
+            // add info to the list of extra dirs, and use the prefix to identify the new repository.
586
+            ezcBase::$repositoryDirs[$prefix] = array( 'basePath' => $basePath, 'autoloadDirPath' => $autoloadDirPath );
587
+        }
588
+    }
589
+
590
+    /**
591
+     * Returns the base path of the eZ Components installation
592
+     *
593
+     * This method returns the base path, including a trailing directory
594
+     * separator.
595
+     *
596
+     * @return string
597
+     */
598
+    public static function getInstallationPath()
599
+    {
600
+        self::setPackageDir();
601
+
602
+        $path = realpath( self::$packageDir );
603
+        if ( substr( $path, -1 ) !== DIRECTORY_SEPARATOR )
604
+        {
605
+            $path .= DIRECTORY_SEPARATOR;
606
+        }
607
+        return $path;
608
+    }
609
+
610
+    /**
611
+     * Sets the development mode to the one specified.
612
+     *
613
+     * @param int $runMode
614
+     */
615
+    public static function setRunMode( $runMode )
616
+    {
617
+        if ( !in_array( $runMode, array( ezcBase::MODE_PRODUCTION, ezcBase::MODE_DEVELOPMENT ) ) )
618
+        {
619
+            throw new ezcBaseValueException( 'runMode', $runMode, 'ezcBase::MODE_PRODUCTION or ezcBase::MODE_DEVELOPMENT' );
620
+        }
621
+
622
+        self::$runMode = $runMode;
623
+    }
624
+
625
+    /**
626
+     * Returns the current development mode.
627
+     *
628
+     * @return int
629
+     */
630
+    public static function getRunMode()
631
+    {
632
+        return self::$runMode;
633
+    }
634
+
635
+    /**
636
+     * Returns true when we are in development mode.
637
+     *
638
+     * @return bool
639
+     */
640
+    public static function inDevMode()
641
+    {
642
+        return self::$runMode == ezcBase::MODE_DEVELOPMENT;
643
+    }
644
+
645
+    /**
646
+     * Returns the installation method
647
+     *
648
+     * Possible return values are 'custom', 'devel', 'tarball' and 'pear'. Only
649
+     * 'tarball' and 'pear' are returned for user-installed versions.
650
+     *
651
+     * @return string
652
+     */
653
+    public static function getInstallMethod()
654
+    {
655
+        return self::$libraryMode;
656
+    }
657
+}
658
+?>
... ...
@@ -0,0 +1,38 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseAutoloadException class
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * ezcBaseAutoloadException is thrown whenever a class can not be found with
12
+ * the autoload mechanism.
13
+ *
14
+ * @package Base
15
+ * @version 1.8
16
+ */
17
+class ezcBaseAutoloadException extends ezcBaseException
18
+{
19
+    /**
20
+     * Constructs a new ezcBaseAutoloadException for the $className that was
21
+     * searched for in the autoload files $fileNames from the directories
22
+     * specified in $dirs.
23
+     *
24
+     * @param string $className
25
+     * @param array(string) $files
26
+     * @param array(ezcBaseRepositoryDirectory) $dirs
27
+     */
28
+    function __construct( $className, $files, $dirs )
29
+    {
30
+        $paths = array();
31
+        foreach ( $dirs as $dir )
32
+        {
33
+            $paths[] = realpath( $dir->autoloadPath );
34
+        }
35
+        parent::__construct( "Could not find a class to file mapping for '{$className}'. Searched for ". implode( ', ', $files ) . " in: " . implode( ', ', $paths ) );
36
+    }
37
+}
38
+?>
... ...
@@ -0,0 +1,34 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseDoubleClassRepositoryPrefixException class
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * ezcBaseDoubleClassRepositoryPrefixException is thrown whenever you try to
12
+ * register a class repository with a prefix that has already been added
13
+ * before.
14
+ *
15
+ * @package Base
16
+ * @version 1.8
17
+ */
18
+class ezcBaseDoubleClassRepositoryPrefixException extends ezcBaseException
19
+{
20
+    /**
21
+     * Constructs a new ezcBaseDoubleClassRepositoryPrefixException for the
22
+     * $prefix that points to $basePath with autoload directory
23
+     * $autoloadDirPath.
24
+     *
25
+     * @param string $prefix
26
+     * @param string $basePath
27
+     * @param string $autoloadDirPath
28
+     */
29
+    function __construct( $prefix, $basePath, $autoloadDirPath )
30
+    {
31
+        parent::__construct( "The class repository in '{$basePath}' (with autoload dir '{$autoloadDirPath}') can not be added because another class repository already uses the prefix '{$prefix}'." );
32
+    }
33
+}
34
+?>
... ...
@@ -0,0 +1,43 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseException class.
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * ezcBaseException is a container from which all other exceptions in the
12
+ * components library descent.
13
+ *
14
+ * @package Base
15
+ * @version 1.8
16
+ */
17
+abstract class ezcBaseException extends Exception
18
+{
19
+    /**
20
+     * Original message, before escaping
21
+     */
22
+    public $originalMessage;
23
+
24
+    /**
25
+     * Constructs a new ezcBaseException with $message
26
+     *
27
+     * @param string $message
28
+     */
29
+    public function __construct( $message )
30
+    {
31
+        $this->originalMessage = $message;
32
+
33
+        if ( php_sapi_name() == 'cli' )
34
+        {
35
+            parent::__construct( $message );
36
+        }
37
+        else
38
+        {
39
+            parent::__construct( htmlspecialchars( $message ) );
40
+        }
41
+    }
42
+}
43
+?>
... ...
@@ -0,0 +1,38 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseExtensionNotFoundException class
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * ezcBaseExtensionNotFoundException is thrown when a requested PHP extension was not found.
13
+ *
14
+ * @package Base
15
+ * @version 1.8
16
+ */
17
+class ezcBaseExtensionNotFoundException extends ezcBaseException
18
+{
19
+    /**
20
+     * Constructs a new ezcBaseExtensionNotFoundException.
21
+     *
22
+     * @param string $name The name of the extension
23
+     * @param string $version The version of the extension
24
+     * @param string $message Additional text
25
+     */
26
+    function __construct( $name, $version = null, $message = null )
27
+    {
28
+        if ( $version === null )
29
+        {
30
+            parent::__construct( "The extension '{$name}' could not be found. {$message}" );
31
+        }
32
+        else
33
+        {
34
+            parent::__construct( "The extension '{$name}' with version '{$version}' could not be found. {$message}" );
35
+        }
36
+    }
37
+}
38
+?>
... ...
@@ -0,0 +1,25 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseFileException class
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * ezcBaseFileException is the exception from which all file related exceptions
12
+ * inherit.
13
+ *
14
+ * @package Base
15
+ * @version 1.8
16
+ */
17
+abstract class ezcBaseFileException extends ezcBaseException
18
+{
19
+    const READ    = 1;
20
+    const WRITE   = 2;
21
+    const EXECUTE = 4;
22
+    const CHANGE  = 8;
23
+    const REMOVE  = 16;
24
+}
25
+?>
... ...
@@ -0,0 +1,50 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseFileIoException class
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * ezcBaseFileIoException is thrown when a problem occurs while writing
12
+ * and reading to/from an open file.
13
+ *
14
+ * @package Base
15
+ * @version 1.8
16
+ */
17
+class ezcBaseFileIoException extends ezcBaseFileException
18
+{
19
+    /**
20
+     * Constructs a new ezcBaseFileIoException for the file $path.
21
+     *
22
+     * @param string $path The name of the file.
23
+     * @param int    $mode The mode of the property that is allowed
24
+     *               (ezcBaseFileException::READ, ezcBaseFileException::WRITE,
25
+     *               ezcBaseFileException::EXECUTE or
26
+     *               ezcBaseFileException::CHANGE).
27
+     * @param string $message A string with extra information.
28
+     */
29
+    function __construct( $path, $mode, $message = null )
30
+    {
31
+        switch ( $mode )
32
+        {
33
+            case ezcBaseFileException::READ:
34
+                $operation = "An error occurred while reading from '{$path}'";
35
+                break;
36
+            case ezcBaseFileException::WRITE:
37
+                $operation = "An error occurred while writing to '{$path}'";
38
+                break;
39
+        }
40
+
41
+        $messagePart = '';
42
+        if ( $message )
43
+        {
44
+            $messagePart = " ($message)";
45
+        }
46
+
47
+        parent::__construct( "$operation.$messagePart" );
48
+    }
49
+}
50
+?>
... ...
@@ -0,0 +1,43 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseFileNotFoundException class
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * ezcBaseFileNotFoundException is thrown when a file or directory was tried to
12
+ * be opened, but did not exist.
13
+ *
14
+ * @package Base
15
+ * @version 1.8
16
+ */
17
+class ezcBaseFileNotFoundException extends ezcBaseFileException
18
+{
19
+    /**
20
+     * Constructs a new ezcBaseFileNotFoundException.
21
+     *
22
+     * @param string $path The name of the file.
23
+     * @param string $type The type of the file.
24
+     * @param string $message A string with extra information.
25
+     */
26
+    function __construct( $path, $type = null, $message = null )
27
+    {
28
+        $typePart = '';
29
+        if ( $type )
30
+        {
31
+            $typePart = "$type ";
32
+        }
33
+
34
+        $messagePart = '';
35
+        if ( $message )
36
+        {
37
+            $messagePart = " ($message)";
38
+        }
39
+
40
+        parent::__construct( "The {$typePart}file '{$path}' could not be found.$messagePart" );
41
+    }
42
+}
43
+?>
... ...
@@ -0,0 +1,63 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseFilePermissionException class
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * ezcBaseFilePermissionException is thrown whenever a permission problem with
12
+ * a file, directory or stream occurred.
13
+ *
14
+ * @package Base
15
+ * @version 1.8
16
+ */
17
+class ezcBaseFilePermissionException extends ezcBaseFileException
18
+{
19
+    /**
20
+     * Constructs a new ezcPropertyPermissionException for the property $name.
21
+     *
22
+     * @param string $path The name of the file.
23
+     * @param int    $mode The mode of the property that is allowed
24
+     *               (ezcBaseFileException::READ, ezcBaseFileException::WRITE,
25
+     *               ezcBaseFileException::EXECUTE,
26
+     *               ezcBaseFileException::CHANGE or
27
+     *               ezcBaseFileException::REMOVE).
28
+     * @param string $message A string with extra information.
29
+     */
30
+    function __construct( $path, $mode, $message = null )
31
+    {
32
+        switch ( $mode )
33
+        {
34
+            case ezcBaseFileException::READ:
35
+                $operation = "The file '{$path}' can not be opened for reading";
36
+                break;
37
+            case ezcBaseFileException::WRITE:
38
+                $operation = "The file '{$path}' can not be opened for writing";
39
+                break;
40
+            case ezcBaseFileException::EXECUTE:
41
+                $operation = "The file '{$path}' can not be executed";
42
+                break;
43
+            case ezcBaseFileException::CHANGE:
44
+                $operation = "The permissions for '{$path}' can not be changed";
45
+                break;
46
+            case ezcBaseFileException::REMOVE:
47
+                $operation = "The file '{$path}' can not be removed";
48
+                break;
49
+            case ( ezcBaseFileException::READ || ezcBaseFileException::WRITE ):
50
+                $operation = "The file '{$path}' can not be opened for reading and writing";
51
+                break;
52
+        }
53
+
54
+        $messagePart = '';
55
+        if ( $message )
56
+        {
57
+            $messagePart = " ($message)";
58
+        }
59
+
60
+        parent::__construct( "$operation.$messagePart" );
61
+    }
62
+}
63
+?>
... ...
@@ -0,0 +1,31 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseFunctionalityNotSupportedException class.
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * The ezcBaseFunctionalityNotSupportedException is thrown when a requested
13
+ * PHP function was not found.
14
+ *
15
+ * @package Base
16
+ * @version 1.8
17
+ */
18
+class ezcBaseFunctionalityNotSupportedException extends ezcBaseException
19
+{
20
+    /**
21
+     * Constructs a new ezcBaseFunctionalityNotSupportedException.
22
+     *
23
+     * @param string $message The message to throw
24
+     * @param string $reason The reason for the exception
25
+     */
26
+    function __construct( $message, $reason )
27
+    {
28
+        parent::__construct( "{$message} is not supported. Reason: {$reason}." );
29
+    }
30
+}
31
+?>
... ...
@@ -0,0 +1,31 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseInitCallbackConfiguredException class
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * ezcBaseInitCallbackConfiguredException is thrown when you try to assign a
12
+ * callback clasname to an identifier, while there is already a callback class
13
+ * configured for this identifier.
14
+ *
15
+ * @package Base
16
+ * @version 1.8
17
+ */
18
+class ezcBaseInitCallbackConfiguredException extends ezcBaseException
19
+{
20
+    /**
21
+     * Constructs a new ezcBaseInitCallbackConfiguredException.
22
+     *
23
+     * @param string $identifier
24
+     * @param string $originalCallbackClassName
25
+     */
26
+    function __construct( $identifier, $originalCallbackClassName )
27
+    {
28
+        parent::__construct( "The '{$identifier}' is already configured with callback class '{$originalCallbackClassName}'." );
29
+    }
30
+}
31
+?>
... ...
@@ -0,0 +1,31 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseInitInvalidCallbackClassException class
4
+ *
5
+ * @package Configuration
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Exception that is thrown if an invalid class is passed as callback class for
13
+ * delayed object configuration.
14
+ *
15
+ * @package Configuration
16
+ * @version 1.8
17
+ */
18
+class ezcBaseInitInvalidCallbackClassException extends ezcBaseException
19
+{
20
+    /**
21
+     * Constructs a new ezcBaseInitInvalidCallbackClassException for the $callbackClass.
22
+     *
23
+     * @param string $callbackClass
24
+     * @return void
25
+     */
26
+    function __construct( $callbackClass )
27
+    {
28
+        parent::__construct( "Class '{$callbackClass}' does not exist, or does not implement the 'ezcBaseConfigurationInitializer' interface." );
29
+    }
30
+}
31
+?>
... ...
@@ -0,0 +1,29 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseInvalidParentClassException class
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * Exception that is thrown if an invalid class is passed as custom class.
12
+ *
13
+ * @package Base
14
+ * @version 1.8
15
+ */
16
+class ezcBaseInvalidParentClassException extends ezcBaseException
17
+{
18
+    /**
19
+     * Constructs an ezcBaseInvalidParentClassException for custom class $customClass
20
+     *
21
+     * @param string $expectedParentClass
22
+     * @param string $customClass
23
+     */
24
+    function __construct( $expectedParentClass, $customClass )
25
+    {
26
+        parent::__construct( "Class '{$customClass}' does not exist, or does not inherit from the '{$expectedParentClass}' class." );
27
+    }
28
+}
29
+?>
... ...
@@ -0,0 +1,30 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBasePropertyNotFoundException class
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * ezcBasePropertyNotFoundException is thrown whenever a non existent property
12
+ * is accessed in the Components library.
13
+ *
14
+ * @package Base
15
+ * @version 1.8
16
+ */
17
+class ezcBasePropertyNotFoundException extends ezcBaseException
18
+{
19
+    /**
20
+     * Constructs a new ezcBasePropertyNotFoundException for the property
21
+     * $name.
22
+     *
23
+     * @param string $name The name of the property
24
+     */
25
+    function __construct( $name )
26
+    {
27
+        parent::__construct( "No such property name '{$name}'." );
28
+    }
29
+}
30
+?>
... ...
@@ -0,0 +1,42 @@
1
+<?php
2
+/**
3
+ * File containing the ezcPropertyReadOnlyException class
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * ezcBasePropertyPermissionException is thrown whenever a read-only property
12
+ * is tried to be changed, or when a write-only property was accessed for reading.
13
+ *
14
+ * @package Base
15
+ * @version 1.8
16
+ */
17
+class ezcBasePropertyPermissionException extends ezcBaseException
18
+{
19
+    /**
20
+     * Used when the property is read-only.
21
+     */
22
+    const READ  = 1;
23
+
24
+    /**
25
+     * Used when the property is write-only.
26
+     */
27
+    const WRITE = 2;
28
+
29
+    /**
30
+     * Constructs a new ezcPropertyPermissionException for the property $name.
31
+     *
32
+     * @param string $name The name of the property.
33
+     * @param int    $mode The mode of the property that is allowed (::READ or ::WRITE).
34
+     */
35
+    function __construct( $name, $mode )
36
+    {
37
+        parent::__construct( "The property '{$name}' is " .
38
+            ( $mode == self::READ ? "read" : "write" ) .
39
+            "-only." );
40
+    }
41
+}
42
+?>
... ...
@@ -0,0 +1,29 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseSettingNotFoundException class.
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * ezcBaseSettingNotFoundException is thrown whenever there is a name passed as
12
+ * part as the options array to setOptions() for an option that doesn't exist.
13
+ *
14
+ * @package Base
15
+ * @version 1.8
16
+ */
17
+class ezcBaseSettingNotFoundException extends ezcBaseException
18
+{
19
+    /**
20
+     * Constructs a new ezcBaseSettingNotFoundException for $settingName.
21
+     *
22
+     * @param string $settingName The name of the setting that does not exist.
23
+     */
24
+    function __construct( $settingName )
25
+    {
26
+        parent::__construct( "The setting '{$settingName}' is not a valid configuration setting." );
27
+    }
28
+}
29
+?>
... ...
@@ -0,0 +1,42 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseSettingValueException class.
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * ezcBaseSettingValueExeception is thrown whenever a value to a class'
12
+ * configuration option is either of the wrong type, or has a wrong value.
13
+ *
14
+ * @package Base
15
+ * @version 1.8
16
+ */
17
+class ezcBaseSettingValueException extends ezcBaseException
18
+{
19
+    /**
20
+     * Constructs a new ezcBaseConfigException
21
+     *
22
+     * @param string  $settingName The name of the setting where something was
23
+     *                wrong with.
24
+     * @param mixed   $value The value that the option was tried to be set too.
25
+     * @param string  $expectedValue A string explaining the allowed type and value range.
26
+     */
27
+    function __construct( $settingName, $value, $expectedValue = null )
28
+    {
29
+        $type = gettype( $value );
30
+        if ( in_array( $type, array( 'array', 'object', 'resource' ) ) )
31
+        {
32
+            $value = serialize( $value );
33
+        }
34
+        $msg = "The value '{$value}' that you were trying to assign to setting '{$settingName}' is invalid.";
35
+        if ( $expectedValue )
36
+        {
37
+            $msg .= " Allowed values are: " . $expectedValue;
38
+        }
39
+        parent::__construct( $msg );
40
+    }
41
+}
42
+?>
... ...
@@ -0,0 +1,43 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseValueException class.
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * ezcBaseValueException is thrown whenever the type or value of the given
12
+ * variable is not as expected.
13
+ *
14
+ * @package Base
15
+ * @version 1.8
16
+ */
17
+class ezcBaseValueException extends ezcBaseException
18
+{
19
+    /**
20
+     * Constructs a new ezcBaseValueException on the $name variable.
21
+     *
22
+     * @param string  $settingName The name of the setting where something was
23
+     *                wrong with.
24
+     * @param mixed   $value The value that the option was tried to be set too.
25
+     * @param string  $expectedValue A string explaining the allowed type and value range.
26
+     * @param string  $variableType  What type of variable was tried to be set (setting, argument).
27
+     */
28
+    function __construct( $settingName, $value, $expectedValue = null, $variableType = 'setting' )
29
+    {
30
+        $type = gettype( $value );
31
+        if ( in_array( $type, array( 'array', 'object', 'resource' ) ) )
32
+        {
33
+            $value = serialize( $value );
34
+        }
35
+        $msg = "The value '{$value}' that you were trying to assign to $variableType '{$settingName}' is invalid.";
36
+        if ( $expectedValue )
37
+        {
38
+            $msg .= " Allowed values are: " . $expectedValue . '.';
39
+        }
40
+        parent::__construct( $msg );
41
+    }
42
+}
43
+?>
... ...
@@ -0,0 +1,40 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseWhateverException class
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * ezcBaseWhateverException is thrown whenever something is so seriously wrong.
12
+ *
13
+ * If this happens it is not possible to repair anything gracefully. An
14
+ * example for this could be, that your eZ components installation has thrown
15
+ * far to many exceptions. Whenever you receive an ezcBaseWhateverException, do
16
+ * not even try to catch it, but forget your project completely and immediately
17
+ * stop coding! ;)
18
+ *
19
+ * @access private
20
+ * @package Base
21
+ * @version 1.8
22
+ */
23
+class ezcBaseWhateverException extends ezcBaseException
24
+{
25
+    /**
26
+     * Constructs a new ezcBaseWhateverException.
27
+     *
28
+     * @param string $what  What happened?
29
+     * @param string $where Where did it happen?
30
+     * @param string $who   Who is responsible?
31
+     * @param string $why   Why did is happen?
32
+     * @access protected
33
+     * @return void
34
+     */
35
+    function __construct( $what, $where, $who, $why )
36
+    {
37
+        parent::__construct( "Thanks for using eZ components. Hope you like it! Greetings from Amos, Derick, El Frederico, Ray and Toby." );
38
+    }
39
+}
40
+?>
... ...
@@ -0,0 +1,40 @@
1
+<?php
2
+/**
3
+ * Include file that can be used for a quick setup of the eZ Components.
4
+ *
5
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.8
8
+ * @filesource
9
+ * @package Base
10
+ * @access private
11
+ */
12
+$dir = dirname( __FILE__ );
13
+$dirParts = explode( DIRECTORY_SEPARATOR, $dir );
14
+
15
+if ( $dirParts[count( $dirParts ) - 1] === 'src' )
16
+{
17
+    $baseDir = join( DIRECTORY_SEPARATOR, array_slice( $dirParts, 0, -2 ) );
18
+    require $baseDir . '/Base/src/base.php'; // svn, bundle
19
+}
20
+else if ( $dirParts[count( $dirParts ) - 2] === 'ezc' )
21
+{
22
+    $baseDir = join( DIRECTORY_SEPARATOR, array_slice( $dirParts, 0, -2 ) );
23
+    require $baseDir . '/ezc/Base/base.php'; // pear
24
+}
25
+else
26
+{
27
+    die( "Your environment isn't properly set-up. Please refer to the eZ components documentation at http://components.ez.no/doc ." );
28
+}
29
+
30
+/**
31
+ * Implements the __autoload mechanism for PHP - which can only be done once
32
+ * per request.
33
+ *
34
+ * @param string $className  The name of the class that should be loaded.
35
+ */
36
+function __autoload( $className )
37
+{
38
+	ezcBase::autoload( $className );
39
+}
40
+?>
... ...
@@ -0,0 +1,365 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseFeatures class.
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Provides methods needed to check for features.
13
+ *
14
+ * Example:
15
+ * <code>
16
+ * <?php
17
+ * echo "supports uid: " . ezcBaseFeatures::supportsUserId() . "\n";
18
+ * echo "supports symlink: " . ezcBaseFeatures::supportsSymLink() . "\n";
19
+ * echo "supports hardlink: " . ezcBaseFeatures::supportsLink() . "\n";
20
+ * echo "has imagemagick identify: " . ezcBaseFeatures::hasImageIdentify() . "\n";
21
+ * echo " identify path: " . ezcBaseFeatures::getImageIdentifyExecutable() . "\n";
22
+ * echo "has imagemagick convert: " . ezcBaseFeatures::hasImageConvert() . "\n";
23
+ * echo " convert path: " . ezcBaseFeatures::getImageConvertExecutable() . "\n";
24
+ * echo "has gzip extension: " . ezcBaseFeatures::hasExtensionSupport( 'zlib' ) . "\n";
25
+ * echo "has pdo_mysql 1.0.2: " . ezcBaseFeatures::hasExtensionSupport( 'pdo_mysql', '1.0.2' ) . "\n"
26
+ * ?>
27
+ * </code>
28
+ *
29
+ * @package Base
30
+ * @version 1.8
31
+ */
32
+class ezcBaseFeatures
33
+{
34
+    /**
35
+      * Used to store the path of the ImageMagick convert utility.
36
+      *
37
+      * It is initialized in the {@link getImageConvertExecutable()} function.
38
+      *
39
+      * @var string
40
+      */
41
+    private static $imageConvert = null;
42
+
43
+    /**
44
+      * Used to store the path of the ImageMagick identify utility.
45
+      *
46
+      * It is initialized in the {@link getImageIdentifyExecutable()} function.
47
+      *
48
+      * @var string
49
+      */
50
+    private static $imageIdentify = null;
51
+
52
+    /**
53
+      * Used to store the operating system.
54
+      *
55
+      * It is initialized in the {@link os()} function.
56
+      *
57
+      * @var string
58
+      */
59
+    private static $os = null;
60
+
61
+    /**
62
+     * Determines if hardlinks are supported.
63
+     *
64
+     * @return bool
65
+     */
66
+    public static function supportsLink()
67
+    {
68
+        return function_exists( 'link' );
69
+    }
70
+
71
+    /**
72
+     * Determines if symlinks are supported.
73
+     *
74
+     * @return bool
75
+     */
76
+    public static function supportsSymLink()
77
+    {
78
+        return function_exists( 'symlink' );
79
+    }
80
+
81
+    /**
82
+     * Determines if posix uids are supported.
83
+     *
84
+     * @return bool
85
+     */
86
+    public static function supportsUserId()
87
+    {
88
+        return function_exists( 'posix_getpwuid' );
89
+    }
90
+
91
+    /**
92
+     * Determines if the ImageMagick convert utility is installed.
93
+     *
94
+     * @return bool
95
+     */
96
+    public static function hasImageConvert()
97
+    {
98
+        return !is_null( self::getImageConvertExecutable() );
99
+    }
100
+
101
+    /**
102
+     * Returns the path to the ImageMagick convert utility.
103
+     *
104
+     * On Linux, Unix,... it will return something like: /usr/bin/convert
105
+     * On Windows it will return something like: C:\Windows\System32\convert.exe
106
+     *
107
+     * @return string
108
+     */
109
+    public static function getImageConvertExecutable()
110
+    {
111
+        if ( !is_null( self::$imageConvert ) )
112
+        {
113
+            return self::$imageConvert;
114
+        }
115
+        return ( self::$imageConvert = self::findExecutableInPath( 'convert' ) );
116
+    }
117
+
118
+    /**
119
+     * Determines if the ImageMagick identify utility is installed.
120
+     *
121
+     * @return bool
122
+     */
123
+    public static function hasImageIdentify()
124
+    {
125
+        return !is_null( self::getImageIdentifyExecutable() );
126
+    }
127
+
128
+    /**
129
+     * Returns the path to the ImageMagick identify utility.
130
+     *
131
+     * On Linux, Unix,... it will return something like: /usr/bin/identify
132
+     * On Windows it will return something like: C:\Windows\System32\identify.exe
133
+     *
134
+     * @return string
135
+     */
136
+    public static function getImageIdentifyExecutable()
137
+    {
138
+        if ( !is_null( self::$imageIdentify ) )
139
+        {
140
+            return self::$imageIdentify;
141
+        }
142
+        return ( self::$imageIdentify = self::findExecutableInPath( 'identify' ) );
143
+    }
144
+
145
+    /**
146
+     * Determines if the specified extension is loaded.
147
+     *
148
+     * If $version is specified, the specified extension will be tested also
149
+     * against the version of the loaded extension.
150
+     *
151
+     * Examples:
152
+     * <code>
153
+     * hasExtensionSupport( 'gzip' );
154
+     * </code>
155
+     * will return true if gzip extension is loaded.
156
+     *
157
+     * <code>
158
+     * hasExtensionSupport( 'pdo_mysql', '1.0.2' );
159
+     * </code>
160
+     * will return true if pdo_mysql extension is loaded and its version is at least 1.0.2.
161
+     *
162
+     * @param string $extension
163
+     * @param string $version
164
+     * @return bool
165
+     */
166
+    public static function hasExtensionSupport( $extension, $version = null )
167
+    {
168
+        if ( is_null( $version ) )
169
+        {
170
+            return extension_loaded( $extension );
171
+        }
172
+        return extension_loaded( $extension ) && version_compare( phpversion( $extension ), $version, ">=" ) ;
173
+    }
174
+
175
+    /**
176
+     * Determines if the specified function is available.
177
+     *
178
+     * Examples:
179
+     * <code>
180
+     * ezcBaseFeatures::hasFunction( 'imagepstext' );
181
+     * </code>
182
+     * will return true if support for Type 1 fonts is available with your GD
183
+     * extension.
184
+     *
185
+     * @param string $functionName
186
+     * @return bool
187
+     */
188
+    public static function hasFunction( $functionName )
189
+    {
190
+        return function_exists( $functionName );
191
+    }
192
+
193
+    /**
194
+     * Returns if a given class exists.
195
+     * Checks for a given class name and returns if this class exists or not.
196
+     * Catches the ezcBaseAutoloadException and returns false, if it was thrown.
197
+     *
198
+     * @param string $className The class to check for.
199
+     * @param bool $autoload True to use __autoload(), otherwise false.
200
+     * @return bool True if the class exists. Otherwise false.
201
+     */
202
+    public static function classExists( $className, $autoload = true )
203
+    {
204
+        try
205
+        {
206
+            if ( class_exists( $className, $autoload ) )
207
+            {
208
+                return true;
209
+            }
210
+            return false;
211
+        }
212
+        catch ( ezcBaseAutoloadException $e )
213
+        {
214
+            return false;
215
+        }
216
+    }
217
+
218
+    /**
219
+     * Returns the operating system on which PHP is running.
220
+     *
221
+     * This method returns a sanitized form of the OS name, example
222
+     * return values are "Windows", "Mac", "Linux" and "FreeBSD". In
223
+     * all other cases it returns the value of the internal PHP constant
224
+     * PHP_OS.
225
+     *
226
+     * @return string
227
+     */
228
+    public static function os()
229
+    {
230
+        if ( is_null( self::$os ) )
231
+        {
232
+            $uname = php_uname( 's' );
233
+            if ( substr( $uname, 0, 7 ) == 'Windows' )
234
+            {
235
+                self::$os = 'Windows';
236
+            }
237
+            elseif ( substr( $uname, 0, 3 ) == 'Mac' )
238
+            {
239
+                self::$os = 'Mac';
240
+            }
241
+            elseif ( strtolower( $uname ) == 'linux' )
242
+            {
243
+                self::$os = 'Linux';
244
+            }
245
+            elseif ( strtolower( substr( $uname, 0, 7 ) ) == 'freebsd' )
246
+            {
247
+                self::$os = 'FreeBSD';
248
+            }
249
+            else
250
+            {
251
+                self::$os = PHP_OS;
252
+            }
253
+        }
254
+        return self::$os;
255
+    }
256
+
257
+    /**
258
+     * Returns the path of the specified executable, if it can be found in the system's path.
259
+     *
260
+     * It scans the PATH enviroment variable based on the OS to find the
261
+     * $fileName. For Windows, the path is with \, not /.  If $fileName is not
262
+     * found, it returns null.
263
+     *
264
+     * @todo consider using getenv( 'PATH' ) instead of $_ENV['PATH']
265
+     *       (but that won't work under IIS)
266
+     *
267
+     * @param string $fileName
268
+     * @return string
269
+     */
270
+    public static function findExecutableInPath( $fileName )
271
+    {
272
+        if ( array_key_exists( 'PATH', $_ENV ) )
273
+        {
274
+            $envPath = trim( $_ENV['PATH'] );
275
+        }
276
+        else if ( ( $envPath = getenv( 'PATH' ) ) !== false )
277
+        {
278
+            $envPath = trim( $envPath );
279
+        }
280
+        if ( is_string( $envPath ) && strlen( trim( $envPath ) ) == 0 )
281
+        {
282
+            $envPath = false;
283
+        }
284
+
285
+        switch ( self::os() )
286
+        {
287
+            case 'Unix':
288
+            case 'FreeBSD':
289
+            case 'Mac':
290
+            case 'MacOS':
291
+            case 'Darwin':
292
+            case 'Linux':
293
+            case 'SunOS':
294
+                if ( $envPath )
295
+                {
296
+                    $dirs = explode( ':', $envPath );
297
+                    foreach ( $dirs as $dir )
298
+                    {
299
+                        // The @-operator is used here mainly to avoid
300
+                        // open_basedir warnings. If open_basedir (or any other
301
+                        // circumstance) prevents the desired file from being
302
+                        // accessed, it is fine for file_exists() to return
303
+                        // false, since it is useless for use then, anyway.
304
+                        if ( file_exists( "{$dir}/{$fileName}" ) )
305
+                        {
306
+                            return "{$dir}/{$fileName}";
307
+                        }
308
+                    }
309
+                }
310
+                // The @-operator is used here mainly to avoid open_basedir
311
+                // warnings. If open_basedir (or any other circumstance)
312
+                // prevents the desired file from being accessed, it is fine
313
+                // for file_exists() to return false, since it is useless for
314
+                // use then, anyway.
315
+                elseif ( @file_exists( "./{$fileName}" ) )
316
+                {
317
+                    return $fileName;
318
+                }
319
+                break;
320
+            case 'Windows':
321
+                if ( $envPath )
322
+                {
323
+                    $dirs = explode( ';', $envPath );
324
+                    foreach ( $dirs as $dir )
325
+                    {
326
+                        // The @-operator is used here mainly to avoid
327
+                        // open_basedir warnings. If open_basedir (or any other
328
+                        // circumstance) prevents the desired file from being
329
+                        // accessed, it is fine for file_exists() to return
330
+                        // false, since it is useless for use then, anyway.
331
+                        if ( @file_exists( "{$dir}\\{$fileName}.exe" ) )
332
+                        {
333
+                            return "{$dir}\\{$fileName}.exe";
334
+                        }
335
+                    }
336
+                }
337
+                // The @-operator is used here mainly to avoid open_basedir
338
+                // warnings. If open_basedir (or any other circumstance)
339
+                // prevents the desired file from being accessed, it is fine
340
+                // for file_exists() to return false, since it is useless for
341
+                // use then, anyway.
342
+                elseif ( @file_exists( "{$fileName}.exe" ) )
343
+                {
344
+                    return "{$fileName}.exe";
345
+                }
346
+                break;
347
+        }
348
+        return null;
349
+    }
350
+
351
+    /**
352
+     * Reset the cached information. 
353
+     * 
354
+     * @return void
355
+     * @access private
356
+     * @ignore
357
+     */
358
+    public static function reset()
359
+    {
360
+        self::$imageIdentify = null;
361
+        self::$imageConvert  = null;
362
+        self::$os            = null;
363
+    }
364
+}
365
+?>
... ...
@@ -0,0 +1,495 @@
1
+<?php
2
+/**
3
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
4
+ * @license http://ez.no/licenses/new_bsd New BSD License
5
+ * @version 1.8
6
+ * @filesource
7
+ * @package Base
8
+ */
9
+
10
+/**
11
+ * Provides a selection of static independent methods to provide functionality
12
+ * for file and file system handling.
13
+ *
14
+ * This example shows how to use the findRecursive method:
15
+ * <code>
16
+ * <?php
17
+ * // lists all the files under /etc (including subdirectories) that end in
18
+ * // .conf
19
+ * $confFiles = ezcBaseFile::findRecursive( "/etc", array( '@\.conf$@' ) );
20
+ *
21
+ * // lists all autoload files in the components source tree and excludes the
22
+ * // ones in the autoload subdirectory. Statistics are returned in the $stats
23
+ * // variable which is passed by reference.
24
+ * $files = ezcBaseFile::findRecursive(
25
+ *     "/dat/dev/ezcomponents",
26
+ *     array( '@src/.*_autoload.php$@' ),
27
+ *     array( '@/autoload/@' ),
28
+ *     $stats
29
+ * );
30
+ *
31
+ * // lists all binaries in /bin except the ones starting with a "g"
32
+ * $data = ezcBaseFile::findRecursive( "/bin", array(), array( '@^/bin/g@' ) );
33
+ * ?>
34
+ * </code>
35
+ *
36
+ * @package Base
37
+ * @version 1.8
38
+ * @mainclass
39
+ */
40
+class ezcBaseFile
41
+{
42
+    /**
43
+     * This is the callback used by findRecursive to collect data.
44
+     *
45
+     * This callback method works together with walkRecursive() and is called
46
+     * for every file/and or directory. The $context is a callback specific
47
+     * container in which data can be stored and shared between the different
48
+     * calls to the callback function. The walkRecursive() function also passes
49
+     * in the full absolute directory in $sourceDir, the filename in $fileName
50
+     * and file information (such as size, modes, types) as an array as
51
+     * returned by PHP's stat() in the $fileInfo parameter.
52
+     *
53
+     * @param ezcBaseFileFindContext $context
54
+     * @param string $sourceDir
55
+     * @param string $fileName
56
+     * @param array(stat) $fileInfo
57
+     */
58
+    static protected function findRecursiveCallback( ezcBaseFileFindContext $context, $sourceDir, $fileName, $fileInfo )
59
+    {
60
+        // ignore if we have a directory
61
+        if ( $fileInfo['mode'] & 0x4000 )
62
+        {
63
+            return;
64
+        }
65
+
66
+        // update the statistics
67
+        $context->elements[] = $sourceDir . DIRECTORY_SEPARATOR . $fileName;
68
+        $context->count++;
69
+        $context->size += $fileInfo['size'];
70
+    }
71
+
72
+    /**
73
+     * Walks files and directories recursively on a file system
74
+     *
75
+     * This method walks over a directory and calls a callback from every file
76
+     * and directory it finds. You can use $includeFilters to include only
77
+     * specific files, and $excludeFilters to exclude certain files from being
78
+     * returned. The function will always go into subdirectories even if the
79
+     * entry would not have passed the filters.
80
+     *
81
+     * The callback is passed in the $callback parameter, and the
82
+     * $callbackContext will be send to the callback function/method as
83
+     * parameter so that you can store data in there that persists with all the
84
+     * calls and recursive calls to this method. It's up to the callback method
85
+     * to do something useful with this. The callback function's parameters are
86
+     * in order:
87
+     *
88
+     * <ul>
89
+     * <li>ezcBaseFileFindContext $context</li>
90
+     * <li>string $sourceDir</li>
91
+     * <li>string $fileName</li>
92
+     * <li>array(stat) $fileInfo</li>
93
+     * </ul>
94
+     *
95
+     * See {@see findRecursiveCallback()} for an example of a callback function.
96
+     *
97
+     * Filters are regular expressions and are therefore required to have
98
+     * starting and ending delimiters. The Perl Compatible syntax is used as
99
+     * regular expression language.
100
+     *
101
+     * @param string         $sourceDir
102
+     * @param array(string)  $includeFilters
103
+     * @param array(string)  $excludeFilters
104
+     * @param callback       $callback
105
+     * @param mixed          $callbackContext
106
+     *
107
+     * @throws ezcBaseFileNotFoundException if the $sourceDir directory is not
108
+     *         a directory or does not exist.
109
+     * @throws ezcBaseFilePermissionException if the $sourceDir directory could
110
+     *         not be opened for reading.
111
+     * @return array
112
+     */
113
+    static public function walkRecursive( $sourceDir, array $includeFilters = array(), array $excludeFilters = array(), $callback, &$callbackContext )
114
+    {
115
+        if ( !is_dir( $sourceDir ) )
116
+        {
117
+            throw new ezcBaseFileNotFoundException( $sourceDir, 'directory' );
118
+        }
119
+        $elements = array();
120
+        $d = @dir( $sourceDir );
121
+        if ( !$d )
122
+        {
123
+            throw new ezcBaseFilePermissionException( $sourceDir, ezcBaseFileException::READ );
124
+        }
125
+
126
+        while ( ( $entry = $d->read() ) !== false )
127
+        {
128
+            if ( $entry == '.' || $entry == '..' )
129
+            {
130
+                continue;
131
+            }
132
+
133
+            $fileInfo = @stat( $sourceDir . DIRECTORY_SEPARATOR . $entry );
134
+            if ( !$fileInfo )
135
+            {
136
+                $fileInfo = array( 'size' => 0, 'mode' => 0 );
137
+            }
138
+
139
+            if ( $fileInfo['mode'] & 0x4000 )
140
+            {
141
+                // We need to ignore the Permission exceptions here as it can
142
+                // be normal that a directory can not be accessed. We only need
143
+                // the exception if the top directory could not be read.
144
+                try
145
+                {
146
+                    call_user_func_array( $callback, array( $callbackContext, $sourceDir, $entry, $fileInfo ) );
147
+                    $subList = self::walkRecursive( $sourceDir . DIRECTORY_SEPARATOR . $entry, $includeFilters, $excludeFilters, $callback, $callbackContext );
148
+                    $elements = array_merge( $elements, $subList );
149
+                }
150
+                catch ( ezcBaseFilePermissionException $e )
151
+                {
152
+                }
153
+            }
154
+            else
155
+            {
156
+                // By default a file is included in the return list
157
+                $ok = true;
158
+                // Iterate over the $includeFilters and prohibit the file from
159
+                // being returned when atleast one of them does not match
160
+                foreach ( $includeFilters as $filter )
161
+                {
162
+                    if ( !preg_match( $filter, $sourceDir . DIRECTORY_SEPARATOR . $entry ) )
163
+                    {
164
+                        $ok = false;
165
+                        break;
166
+                    }
167
+                }
168
+                // Iterate over the $excludeFilters and prohibit the file from
169
+                // being returns when atleast one of them matches
170
+                foreach ( $excludeFilters as $filter )
171
+                {
172
+                    if ( preg_match( $filter, $sourceDir . DIRECTORY_SEPARATOR . $entry ) )
173
+                    {
174
+                        $ok = false;
175
+                        break;
176
+                    }
177
+                }
178
+
179
+                // If everything's allright, call the callback and add the
180
+                // entry to the elements array
181
+                if ( $ok )
182
+                {
183
+                    call_user_func( $callback, $callbackContext, $sourceDir, $entry, $fileInfo );
184
+                    $elements[] = $sourceDir . DIRECTORY_SEPARATOR . $entry;
185
+                }
186
+            }
187
+        }
188
+        sort( $elements );
189
+        return $elements;
190
+    }
191
+
192
+    /**
193
+     * Finds files recursively on a file system
194
+     *
195
+     * With this method you can scan the file system for files. You can use
196
+     * $includeFilters to include only specific files, and $excludeFilters to
197
+     * exclude certain files from being returned. The function will always go
198
+     * into subdirectories even if the entry would not have passed the filters.
199
+     * It uses the {@see walkRecursive()} method to do the actually recursion.
200
+     *
201
+     * Filters are regular expressions and are therefore required to have
202
+     * starting and ending delimiters. The Perl Compatible syntax is used as
203
+     * regular expression language.
204
+     *
205
+     * If you pass an empty array to the $statistics argument, the function
206
+     * will in details about the number of files found into the 'count' array
207
+     * element, and the total filesize in the 'size' array element. Because this
208
+     * argument is passed by reference, you *have* to pass a variable and you
209
+     * can not pass a constant value such as "array()".
210
+     *
211
+     * @param string         $sourceDir
212
+     * @param array(string)  $includeFilters
213
+     * @param array(string)  $excludeFilters
214
+     * @param array()        $statistics
215
+     *
216
+     * @throws ezcBaseFileNotFoundException if the $sourceDir directory is not
217
+     *         a directory or does not exist.
218
+     * @throws ezcBaseFilePermissionException if the $sourceDir directory could
219
+     *         not be opened for reading.
220
+     * @return array
221
+     */
222
+    static public function findRecursive( $sourceDir, array $includeFilters = array(), array $excludeFilters = array(), &$statistics = null )
223
+    {
224
+        // init statistics array
225
+        if ( !is_array( $statistics ) || !array_key_exists( 'size', $statistics ) || !array_key_exists( 'count', $statistics ) )
226
+        {
227
+            $statistics['size']  = 0;
228
+            $statistics['count'] = 0;
229
+        }
230
+
231
+        // create the context, and then start walking over the array
232
+        $context = new ezcBaseFileFindContext;
233
+        self::walkRecursive( $sourceDir, $includeFilters, $excludeFilters, array( 'ezcBaseFile', 'findRecursiveCallback' ), $context );
234
+
235
+        // collect the statistics
236
+        $statistics['size'] = $context->size;
237
+        $statistics['count'] = $context->count;
238
+
239
+        // return the found and pattern-matched files
240
+        sort( $context->elements );
241
+        return $context->elements;
242
+    }
243
+
244
+
245
+    /**
246
+     * Removes files and directories recursively from a file system
247
+     *
248
+     * This method recursively removes the $directory and all its contents.
249
+     * You should be <b>extremely</b> careful with this method as it has the
250
+     * potential to erase everything that the current user has access to.
251
+     *
252
+     * @param string $directory
253
+     */
254
+    static public function removeRecursive( $directory )
255
+    {
256
+        $sourceDir = realpath( $directory );
257
+        if ( !$sourceDir )
258
+        {
259
+            throw new ezcBaseFileNotFoundException( $directory, 'directory' );
260
+        }
261
+        $d = @dir( $sourceDir );
262
+        if ( !$d )
263
+        {
264
+            throw new ezcBaseFilePermissionException( $directory, ezcBaseFileException::READ );
265
+        }
266
+        // check if we can remove the dir
267
+        $parentDir = realpath( $directory . DIRECTORY_SEPARATOR . '..' );
268
+        if ( !is_writable( $parentDir ) )
269
+        {
270
+            throw new ezcBaseFilePermissionException( $parentDir, ezcBaseFileException::WRITE );
271
+        }
272
+        // loop over contents
273
+        while ( ( $entry = $d->read() ) !== false )
274
+        {
275
+            if ( $entry == '.' || $entry == '..' )
276
+            {
277
+                continue;
278
+            }
279
+
280
+            if ( is_dir( $sourceDir . DIRECTORY_SEPARATOR . $entry ) )
281
+            {
282
+                self::removeRecursive( $sourceDir . DIRECTORY_SEPARATOR . $entry );
283
+            }
284
+            else
285
+            {
286
+                if ( @unlink( $sourceDir . DIRECTORY_SEPARATOR . $entry ) === false )
287
+                {
288
+                    throw new ezcBaseFilePermissionException( $directory . DIRECTORY_SEPARATOR . $entry, ezcBaseFileException::REMOVE );
289
+                }
290
+            }
291
+        }
292
+        $d->close();
293
+        rmdir( $sourceDir );
294
+    }
295
+
296
+    /**
297
+    * Recursively copy a file or directory.
298
+    *
299
+    * Recursively copy a file or directory in $source to the given
300
+    * destination. If a depth is given, the operation will stop, if the given
301
+    * recursion depth is reached. A depth of -1 means no limit, while a depth
302
+    * of 0 means, that only the current file or directory will be copied,
303
+    * without any recursion.
304
+    *
305
+    * You may optionally define modes used to create files and directories.
306
+    *
307
+    * @throws ezcBaseFileNotFoundException
308
+    *      If the $sourceDir directory is not a directory or does not exist.
309
+    * @throws ezcBaseFilePermissionException
310
+    *      If the $sourceDir directory could not be opened for reading, or the
311
+    *      destination is not writeable.
312
+    *
313
+    * @param string $source
314
+    * @param string $destination
315
+    * @param int $depth
316
+    * @param int $dirMode
317
+    * @param int $fileMode
318
+    * @return void
319
+    */
320
+    static public function copyRecursive( $source, $destination, $depth = -1, $dirMode = 0775, $fileMode = 0664 )
321
+    {
322
+        // Check if source file exists at all.
323
+        if ( !is_file( $source ) && !is_dir( $source ) )
324
+        {
325
+            throw new ezcBaseFileNotFoundException( $source );
326
+        }
327
+
328
+        // Destination file should NOT exist
329
+        if ( is_file( $destination ) || is_dir( $destination ) )
330
+        {
331
+            throw new ezcBaseFilePermissionException( $destination, ezcBaseFileException::WRITE );
332
+        }
333
+
334
+        // Skip non readable files in source directory
335
+        if ( !is_readable( $source ) )
336
+        {
337
+            return;
338
+        }
339
+
340
+        // Copy
341
+        if ( is_dir( $source ) )
342
+        {
343
+            mkdir( $destination );
344
+            // To ignore umask, umask() should not be changed with
345
+            // multithreaded servers...
346
+            chmod( $destination, $dirMode );
347
+        }
348
+        elseif ( is_file( $source ) )
349
+        {
350
+            copy( $source, $destination );
351
+            chmod( $destination, $fileMode );
352
+        }
353
+
354
+        if ( ( $depth === 0 ) ||
355
+            ( !is_dir( $source ) ) )
356
+        {
357
+            // Do not recurse (any more)
358
+            return;
359
+        }
360
+
361
+        // Recurse
362
+        $dh = opendir( $source );
363
+        while ( ( $file = readdir( $dh ) ) !== false )
364
+        {
365
+            if ( ( $file === '.' ) ||
366
+                ( $file === '..' ) )
367
+            {
368
+                continue;
369
+            }
370
+
371
+            self::copyRecursive(
372
+                $source . '/' . $file,
373
+                $destination . '/' . $file,
374
+                $depth - 1, $dirMode, $fileMode
375
+            );
376
+        }
377
+    }
378
+
379
+    /**
380
+     * Calculates the relative path of the file/directory '$path' to a given
381
+     * $base path.
382
+     *
383
+     * $path and $base should be fully absolute paths. This function returns the
384
+     * answer of "How do I go from $base to $path". If the $path and $base are
385
+     * the same path, the function returns '.'. This method does not touch the
386
+     * filesystem.
387
+     *
388
+     * @param string $path
389
+     * @param string $base
390
+     * @return string
391
+     */
392
+    static public function calculateRelativePath( $path, $base )
393
+    {
394
+        // Sanitize the paths to use the correct directory separator for the platform
395
+        $path = strtr( $path, '\\/', DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR );
396
+        $base = strtr( $base, '\\/', DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR );
397
+
398
+        $base = explode( DIRECTORY_SEPARATOR, $base );
399
+        $path = explode( DIRECTORY_SEPARATOR, $path );
400
+
401
+        // If the paths are the same we return
402
+        if ( $base === $path )
403
+        {
404
+            return '.';
405
+        }
406
+
407
+        $result = '';
408
+
409
+        $pathPart = array_shift( $path );
410
+        $basePart = array_shift( $base );
411
+        while ( $pathPart == $basePart )
412
+        {
413
+            $pathPart = array_shift( $path );
414
+            $basePart = array_shift( $base );
415
+        }
416
+
417
+        if ( $pathPart != null )
418
+        {
419
+            array_unshift( $path, $pathPart );
420
+        }
421
+        if ( $basePart != null )
422
+        {
423
+            array_unshift( $base, $basePart );
424
+        }
425
+
426
+        $result = str_repeat( '..' . DIRECTORY_SEPARATOR, count( $base ) );
427
+        // prevent a trailing DIRECTORY_SEPARATOR in case there is only a ..
428
+        if ( count( $path ) == 0 )
429
+        {
430
+            $result = substr( $result, 0, -strlen( DIRECTORY_SEPARATOR ) );
431
+        }
432
+        $result .= join( DIRECTORY_SEPARATOR, $path );
433
+
434
+        return $result;
435
+    }
436
+
437
+    /**
438
+     * Returns whether the passed $path is an absolute path, giving the current $os.
439
+     *
440
+     * With the $os parameter you can tell this function to use the semantics
441
+     * for a different operating system to determine whether a path is
442
+     * absolute. The $os argument defaults to the OS that the script is running
443
+     * on.
444
+     *
445
+     * @param string $path
446
+     * @param string $os
447
+     * @return bool
448
+     */
449
+    public static function isAbsolutePath( $path, $os = null )
450
+    {
451
+        if ( $os === null )
452
+        {
453
+            $os = ezcBaseFeatures::os();
454
+        }
455
+
456
+        // Stream wrapper like phar can also be considered absolute paths
457
+        if ( preg_match( '(^[a-z]{3,}://)S', $path ) )
458
+        {
459
+            return true;
460
+        }
461
+
462
+        switch ( $os )
463
+        {
464
+            case 'Windows':
465
+                // Sanitize the paths to use the correct directory separator for the platform
466
+                $path = strtr( $path, '\\/', '\\\\' );
467
+
468
+                // Absolute paths with drive letter: X:\
469
+                if ( preg_match( '@^[A-Z]:\\\\@i', $path ) )
470
+                {
471
+                    return true;
472
+                }
473
+
474
+                // Absolute paths with network paths: \\server\share\
475
+                if ( preg_match( '@^\\\\\\\\[A-Z]+\\\\[^\\\\]@i', $path ) )
476
+                {
477
+                    return true;
478
+                }
479
+                break;
480
+            case 'Mac':
481
+            case 'Linux':
482
+            case 'FreeBSD':
483
+            default:
484
+                // Sanitize the paths to use the correct directory separator for the platform
485
+                $path = strtr( $path, '\\/', '//' );
486
+
487
+                if ( $path[0] == '/' )
488
+                {
489
+                    return true;
490
+                }
491
+        }
492
+        return false;
493
+    }
494
+}
495
+?>
... ...
@@ -0,0 +1,125 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseInit class.
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * Provides a method to implement delayed initialization of objects.
12
+ *
13
+ * With the methods in this class you can implement callbacks to configure
14
+ * singleton classes. In order to do so you will have to change the
15
+ * getInstance() method of your singleton class to include a call to
16
+ * ezcBaseInit::fetchConfig() as in the following example:
17
+ *
18
+ * <code>
19
+ * <?php
20
+ * public static function getInstance()
21
+ * {
22
+ *     if ( is_null( self::$instance ) )
23
+ *     {
24
+ *         self::$instance = new ezcConfigurationmanager();
25
+ *         ezcBaseInit::fetchConfig( 'ezcInitConfigurationManager', self::$instance );
26
+ *     }
27
+ *     return self::$instance;
28
+ * }
29
+ * ?>
30
+ * </code>
31
+ *
32
+ * You will also need to configure which callback class to call. This you do
33
+ * with the ezcBaseInit::setCallback() method. The following examples sets the
34
+ * callback classname for the configuration identifier
35
+ * 'ezcInitConfigurationManager' to 'cfgConfigurationManager':
36
+ *
37
+ * <code>
38
+ * <?php
39
+ * ezcBaseInit::setCallback( 'ezcInitConfigurationManager', 'cfgConfigurationManager' );
40
+ * ?>
41
+ * </code>
42
+ *
43
+ * The class 'cfgConfigurationManager' is required to implement the
44
+ * ezcBaseConfigurationInitializer interface, which defines only one method:
45
+ * configureObject(). An example on how to implement such a class could be:
46
+ *
47
+ * <code>
48
+ * <?php
49
+ * class cfgConfigurationManager implements ezcBaseConfigurationInitializer
50
+ * {
51
+ *     static public function configureObject( ezcConfigurationManager $cfgManagerObject )
52
+ *     {
53
+ *         $cfgManagerObject->init( 'ezcConfigurationIniReader', 'settings', array( 'useComments' => true ) );
54
+ *     }
55
+ * }
56
+ * ?>
57
+ * </code>
58
+ *
59
+ * Of course the implementation of this callback class is up to the application
60
+ * developer that uses the component (in this example the Configuration
61
+ * component's class ezcConfigurationManager).
62
+ *
63
+ * @package Base
64
+ * @version 1.8
65
+ */
66
+class ezcBaseInit
67
+{
68
+    /**
69
+     * Contains the callback where the identifier is the key of the array, and the classname to callback to the value.
70
+     *
71
+     * @var array(string=>string)
72
+     */
73
+    static private $callbackMap = array();
74
+
75
+    /**
76
+     * Adds the classname $callbackClassname as callback for the identifier $identifier.
77
+     *
78
+     * @param string $identifier
79
+     * @param string $callbackClassname
80
+     */
81
+    public static function setCallback( $identifier, $callbackClassname )
82
+    {
83
+        if ( array_key_exists( $identifier, self::$callbackMap ) )
84
+        {
85
+            throw new ezcBaseInitCallbackConfiguredException( $identifier, self::$callbackMap[$identifier] );
86
+        }
87
+        else
88
+        {
89
+            // Check if the passed classname actually exists
90
+            if ( !ezcBaseFeatures::classExists( $callbackClassname, true ) )
91
+            {
92
+                throw new ezcBaseInitInvalidCallbackClassException( $callbackClassname );
93
+            }
94
+
95
+            // Check if the passed classname actually implements the interface.
96
+            if ( !in_array( 'ezcBaseConfigurationInitializer', class_implements( $callbackClassname ) ) )
97
+            {
98
+                throw new ezcBaseInitInvalidCallbackClassException( $callbackClassname );
99
+            }
100
+
101
+            self::$callbackMap[$identifier] = $callbackClassname;
102
+        }
103
+    }
104
+
105
+    /**
106
+     * Uses the configured callback belonging to $identifier to configure the $object.
107
+     *
108
+     * The method will return the return value of the callback method, or null
109
+     * in case there was no callback set for the specified $identifier.
110
+     *
111
+     * @param string $identifier
112
+     * @param object $object
113
+     * @return mixed
114
+     */
115
+    public static function fetchConfig( $identifier, $object )
116
+    {
117
+        if ( isset( self::$callbackMap[$identifier] ) )
118
+        {
119
+            $callbackClassname = self::$callbackMap[$identifier];
120
+            return call_user_func( array( $callbackClassname, 'configureObject' ), $object );
121
+        }
122
+        return null;
123
+    }
124
+}
125
+?>
... ...
@@ -0,0 +1,32 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseConfigurationInitializer class
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * This class provides the interface that classes need to implement to act as
12
+ * an callback initializer class to work with the delayed initialization
13
+ * mechanism.
14
+ *
15
+ * @package Base
16
+ * @version 1.8
17
+ */
18
+interface ezcBaseConfigurationInitializer
19
+{
20
+    /**
21
+     * Configures the given object, or returns the proper object depending on
22
+     * the given identifier.
23
+     *
24
+     * In case a string identifier was given, it should return the associated
25
+     * object, in case an object was given the method should return null.
26
+     *
27
+     * @param string|object $object
28
+     * @return mixed
29
+     */
30
+    static public function configureObject( $object );
31
+}
32
+?>
... ...
@@ -0,0 +1,33 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseExportable interface.
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * Interface for class of which instances can be exported using var_export().
12
+ *
13
+ * In some components, objects can be stored (e.g. to disc) using the var_export() 
14
+ * function. To ensure that an object supports proper importing again, this 
15
+ * interface should be implemented.
16
+ *
17
+ * @see var_export()
18
+ */
19
+interface ezcBaseExportable
20
+{
21
+    /**
22
+     * Returns an instance of the desired object, initialized from $state.
23
+     *
24
+     * This method must return a new instance of the class it is implemented 
25
+     * in, which has its properties set from the given $state array.
26
+     *
27
+     * @param array $state 
28
+     * @return object
29
+     */
30
+    public static function __set_state( array $state );
31
+}
32
+
33
+?>
... ...
@@ -0,0 +1,40 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBasePersistable interface
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * This class provides the interface that classes need to implement to be able
12
+ * to be used by the PersistentObject and Search components.
13
+ *
14
+ * @package Base
15
+ * @version 1.8
16
+ */
17
+interface ezcBasePersistable
18
+{
19
+    /**
20
+     * The constructor for the object needs to be able to accept no arguments.
21
+     *
22
+     * The data is later set through the setState() method.
23
+     */
24
+    public function __construct();
25
+
26
+    /**
27
+     * Returns all the object's properties so that they can be stored or indexed.
28
+     *
29
+     * @return array(string=>mixed)
30
+     */
31
+    public function getState();
32
+
33
+    /**
34
+     * Accepts an array containing data for one or more of the class' properties.
35
+     *
36
+     * @param array $properties
37
+     */
38
+    public function setState( array $properties );
39
+}
40
+?>
... ...
@@ -0,0 +1,120 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseMetaData class.
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * Base class implements ways of fetching information about the installed
12
+ * eZ Components. It knows whether to use the PEAR registry or the bundled XML
13
+ * file, depending on how eZ Components is installed.
14
+ *
15
+ * @package Base
16
+ * @version 1.8
17
+ * @mainclass
18
+ */
19
+class ezcBaseMetaData
20
+{
21
+    /**
22
+     * Creates a ezcBaseMetaData object
23
+     *
24
+     * The sole parameter $installMethod should only be used if you are really
25
+     * sure that you need to use it. It is mostly there to make testing at
26
+     * least slightly possible. Again, do not set it unless instructed.
27
+     *
28
+     * @param string $installMethod
29
+     */
30
+    public function __construct( $installMethod = NULL )
31
+    {
32
+        $installMethod = $installMethod !== NULL ? $installMethod : ezcBase::getInstallMethod();
33
+
34
+        // figure out which reader to use
35
+        switch ( $installMethod )
36
+        {
37
+            case 'tarball':
38
+                $this->reader = new ezcBaseMetaDataTarballReader;
39
+                break;
40
+            case 'pear':
41
+                $this->reader = new ezcBaseMetaDataPearReader;
42
+                break;
43
+            default:
44
+                throw new ezcBaseMetaDataReaderException( "Unknown install method '$installMethod'." );
45
+                break;
46
+        }
47
+    }
48
+
49
+    /**
50
+     * Returns the version string for the installed eZ Components bundle.
51
+     *
52
+     * A version string such as "2008.2.2" is returned.
53
+     *
54
+     * @return string
55
+     */
56
+    public function getBundleVersion()
57
+    {
58
+        return $this->reader->getBundleVersion();
59
+    }
60
+
61
+    /**
62
+     * Returns a PHP version string that describes the required PHP version for
63
+     * this installed eZ Components bundle.
64
+     *
65
+     * @return string
66
+     */
67
+    public function getRequiredPhpVersion()
68
+    {
69
+        return $this->reader->getRequiredPhpVersion();
70
+    }
71
+
72
+    /**
73
+     * Returns whether $componentName is installed
74
+     *
75
+     * If installed with PEAR, it checks the PEAR registry whether the
76
+     * component is there. In case the tarball installation method is used, it
77
+     * will return true for every component that exists (because all of them
78
+     * are then available).
79
+     *
80
+     * @return bool
81
+     */
82
+    public function isComponentInstalled( $componentName )
83
+    {
84
+        return $this->reader->isComponentInstalled( $componentName );
85
+    }
86
+
87
+    /**
88
+     * Returns the version string of the available $componentName or false when
89
+     * the component is not installed.
90
+     *
91
+     * @return string
92
+     */
93
+    public function getComponentVersion( $componentName )
94
+    {
95
+        return $this->reader->getComponentVersion( $componentName );
96
+    }
97
+
98
+    /**
99
+     * Returns a list of components that $componentName depends on.
100
+     *
101
+     * If $componentName is left empty, all installed components are returned.
102
+     *
103
+     * The returned array has as keys the component names, and as values the
104
+     * version of the components.
105
+     *
106
+     * @return array(string=>string).
107
+     */
108
+    public function getComponentDependencies( $componentName = null )
109
+    {
110
+        if ( $componentName === null )
111
+        {
112
+            return $this->reader->getComponentDependencies();
113
+        }
114
+        else
115
+        {
116
+            return $this->reader->getComponentDependencies( $componentName );
117
+        }
118
+    }
119
+}
120
+?>
... ...
@@ -0,0 +1,129 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseMetaDataPearReader class.
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+@require 'PEAR/Registry.php';
12
+
13
+/**
14
+ * Base class implements ways of fetching information about the installed
15
+ * eZ Components when installed as tarball.
16
+ *
17
+ * Note: there are lots of @ used here, because PEAR still lives in the stone
18
+ * age with their PHP 3 code and general liberal use of throwing warnings and
19
+ * notices.
20
+ *
21
+ * @package Base
22
+ * @version 1.8
23
+ * @mainclass
24
+ */
25
+class ezcBaseMetaDataPearReader
26
+{
27
+    /**
28
+     * Stores the PEAR_Registry to query for information
29
+     *
30
+     * @var PEAR_Registry
31
+     */
32
+    private $registry;
33
+
34
+    /**
35
+     * Creates the reader object and initialized the registry for querying
36
+     */
37
+    public function __construct()
38
+    {
39
+        @$this->registry = new PEAR_Registry;
40
+    }
41
+
42
+    /**
43
+     * Returns the version string for the installed eZ Components bundle.
44
+     *
45
+     * A version string such as "2008.2.2" is returned.
46
+     *
47
+     * @return string
48
+     */
49
+    public function getBundleVersion()
50
+    {
51
+        @$packageInfo = $this->registry->packageInfo( 'ezcomponents', null, 'components.ez.no' );
52
+        return $packageInfo['version']['release'];
53
+    }
54
+
55
+    /**
56
+     * Returns a PHP version string that describes the required PHP version for
57
+     * this installed eZ Components bundle.
58
+     *
59
+     * @return string
60
+     */
61
+    public function getRequiredPhpVersion()
62
+    {
63
+        @$packageInfo = $this->registry->packageInfo( 'ezcomponents', null, 'components.ez.no' );
64
+        if ( array_key_exists( 'required', $packageInfo['dependencies'] ) )
65
+        {
66
+            return $packageInfo['dependencies']['required']['php']['min'];
67
+        }
68
+        return $packageInfo['dependencies']['php']['min'];
69
+    }
70
+
71
+    /**
72
+     * Returns whether $componentName is installed
73
+     *
74
+     * Checks the PEAR registry whether the component is there.
75
+     *
76
+     * @return bool
77
+     */
78
+    public function isComponentInstalled( $componentName )
79
+    {
80
+        @$packageInfo = $this->registry->packageInfo( $componentName, null, 'components.ez.no' );
81
+        return is_array( $packageInfo );
82
+    }
83
+
84
+    /**
85
+     * Returns the version string of the available $componentName or false when
86
+     * the component is not installed.
87
+     *
88
+     * @return string
89
+     */
90
+    public function getComponentVersion( $componentName )
91
+    {
92
+        @$packageInfo = $this->registry->packageInfo( $componentName, null, 'components.ez.no' );
93
+        $release = $packageInfo['version']['release'];
94
+        return $release === null ? false : $release;
95
+    }
96
+
97
+    /**
98
+     * Returns a list of components that $componentName depends on.
99
+     *
100
+     * If $componentName is left empty, all installed components are returned.
101
+     *
102
+     * The returned array has as keys the component names, and as values the
103
+     * version of the components.
104
+     *
105
+     * @return array(string=>string).
106
+     */
107
+    public function getComponentDependencies( $componentName = 'ezcomponents' )
108
+    {
109
+        @$packageInfo = $this->registry->packageInfo( $componentName, 'dependencies', 'components.ez.no' );
110
+        if ( isset( $packageInfo['required']['package'] ) )
111
+        {
112
+            $deps = array();
113
+            if ( isset( $packageInfo['required']['package']['name'] ) )
114
+            {
115
+                $deps[$packageInfo['required']['package']['name']] = $packageInfo['required']['package']['min'];
116
+            }
117
+            else
118
+            {
119
+                foreach ( $packageInfo['required']['package'] as $package )
120
+                {
121
+                    $deps[$package['name']] = $package['min'];
122
+                }
123
+            }
124
+            return $deps;
125
+        }
126
+        return array();
127
+    }
128
+}
129
+?>
... ...
@@ -0,0 +1,153 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseMetaDataTarballReader class.
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * Base class implements ways of fetching information about the installed
12
+ * eZ Components when installed as tarball.
13
+ *
14
+ * @package Base
15
+ * @version 1.8
16
+ * @mainclass
17
+ */
18
+class ezcBaseMetaDataTarballReader
19
+{
20
+    /**
21
+     * Contains the handler to the XML file containing the release information.
22
+     * @var SimpleXmlElement
23
+     */
24
+    private $xml;
25
+
26
+    /**
27
+     * Creates the reader object and opens the release-info file.
28
+     */
29
+    public function __construct()
30
+    {
31
+        $filename = dirname( __FILE__ ) . '/../../../release-info.xml';
32
+        $this->xml = simplexml_load_file( $filename );
33
+    }
34
+
35
+    /**
36
+     * Returns the version string for the installed eZ Components bundle.
37
+     *
38
+     * A version string such as "2008.2.2" is returned.
39
+     *
40
+     * @return string
41
+     */
42
+    public function getBundleVersion()
43
+    {
44
+        return (string) $this->xml->version;
45
+    }
46
+
47
+    /**
48
+     * Returns a PHP version string that describes the required PHP version for
49
+     * this installed eZ Components bundle.
50
+     *
51
+     * @return string
52
+     */
53
+    public function getRequiredPhpVersion()
54
+    {
55
+        return (string) $this->xml->deps->php;
56
+    }
57
+
58
+    /**
59
+     * Returns whether $componentName is installed
60
+     *
61
+     * Returns true for every component that exists (because all of them are
62
+     * then available).
63
+     *
64
+     * @return bool
65
+     */
66
+    public function isComponentInstalled( $componentName )
67
+    {
68
+        $root = $this->xml->deps->packages->package;
69
+
70
+        foreach ( $root as $package )
71
+        {
72
+            if ( (string) $package['name'] == $componentName )
73
+            {
74
+                return true;
75
+            }
76
+        }
77
+        return false;
78
+    }
79
+
80
+    /**
81
+     * Returns the version string of the available $componentName or false when
82
+     * the component is not installed.
83
+     *
84
+     * @return string
85
+     */
86
+    public function getComponentVersion( $componentName )
87
+    {
88
+        $root = $this->xml->deps->packages->package;
89
+
90
+        foreach ( $root as $package )
91
+        {
92
+            if ( (string) $package['name'] == $componentName )
93
+            {
94
+                return (string) $package['version'];
95
+            }
96
+        }
97
+        return false;
98
+    }
99
+
100
+    /**
101
+     * Returns a list of components that $componentName depends on.
102
+     *
103
+     * If $componentName is left empty, all installed components are returned.
104
+     *
105
+     * The returned array has as keys the component names, and as values the
106
+     * version of the components. It returns null of the $componentName
107
+     * is not found.
108
+     *
109
+     * @return array(string=>string).
110
+     */
111
+    public function getComponentDependencies( $componentName = null )
112
+    {
113
+        $baseVersion = false;
114
+        $root = $this->xml->deps->packages;
115
+        $found = $componentName === null ? true : false;
116
+
117
+        // in case $componentName != null, we loop through all the components
118
+        // in the file, and figure out the new root that we can list dependency
119
+        // packages from.
120
+        foreach ( $root->package as $package )
121
+        {
122
+            if ( (string) $package['name'] == 'Base' )
123
+            {
124
+                $baseVersion = $package['version'];
125
+            }
126
+            if ( !$found && (string) $package['name'] == $componentName )
127
+            {
128
+                $root = $package->deps;
129
+                $found = true;
130
+            }
131
+        }
132
+
133
+        if ( !$found )
134
+        {
135
+            return null;
136
+        }
137
+
138
+        // We always add the Base dependency even though it's not in the dependency file.
139
+        $deps = array();
140
+        $deps['Base'] = (string) $baseVersion;
141
+
142
+        if ( !isset( $root->package ) )
143
+        {
144
+            return $deps;
145
+        }
146
+        foreach ( $root->package as $package )
147
+        {
148
+            $deps[(string) $package['name']] = (string) $package['version'];
149
+        }
150
+        return $deps;
151
+    }
152
+}
153
+?>
... ...
@@ -0,0 +1,174 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseOptions class.
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Base options class for all eZ components.
13
+ *
14
+ * @package Base
15
+ * @version 1.8
16
+ */
17
+abstract class ezcBaseOptions implements ArrayAccess
18
+{
19
+    /**
20
+     * Container to hold the properties
21
+     *
22
+     * @var array(string=>mixed)
23
+     */
24
+    protected $properties;
25
+
26
+    /**
27
+     * Construct a new options object.
28
+     * Options are constructed from an option array by default. The constructor
29
+     * automatically passes the given options to the __set() method to set them
30
+     * in the class.
31
+     *
32
+     * @throws ezcBasePropertyNotFoundException
33
+     *         If trying to access a non existent property.
34
+     * @throws ezcBaseValueException
35
+     *         If the value for a property is out of range.
36
+     * @param array(string=>mixed) $options The initial options to set.
37
+     */
38
+    public function __construct( array $options = array() )
39
+    {
40
+        foreach ( $options as $option => $value )
41
+        {
42
+            $this->__set( $option, $value );
43
+        }
44
+    }
45
+
46
+    /**
47
+     * Merge an array into the actual options object.
48
+     * This method merges an array of new options into the actual options object.
49
+     *
50
+     * @throws ezcBasePropertyNotFoundException
51
+     *         If trying to access a non existent property.
52
+     * @throws ezcBaseValueException
53
+     *         If the value for a property is out of range.
54
+     * @param array(string=>mixed) $newOptions The new options.
55
+     */
56
+    public function merge( array $newOptions )
57
+    {
58
+        foreach ( $newOptions as $key => $value )
59
+        {
60
+            $this->__set( $key, $value );
61
+        }
62
+    }
63
+
64
+    /**
65
+     * Property get access.
66
+     * Simply returns a given option.
67
+     *
68
+     * @throws ezcBasePropertyNotFoundException
69
+     *         If a the value for the property options is not an instance of
70
+     * @param string $propertyName The name of the option to get.
71
+     * @return mixed The option value.
72
+     * @ignore
73
+     *
74
+     * @throws ezcBasePropertyNotFoundException
75
+     *         if the given property does not exist.
76
+     * @throws ezcBasePropertyPermissionException
77
+     *         if the property to be set is a write-only property.
78
+     */
79
+    public function __get( $propertyName )
80
+    {
81
+        if ( $this->__isset( $propertyName ) === true )
82
+        {
83
+            return $this->properties[$propertyName];
84
+        }
85
+        throw new ezcBasePropertyNotFoundException( $propertyName );
86
+    }
87
+
88
+    /**
89
+     * Sets an option.
90
+     * This method is called when an option is set.
91
+     *
92
+     * @param string $propertyName  The name of the option to set.
93
+     * @param mixed $propertyValue The option value.
94
+     * @ignore
95
+     *
96
+     * @throws ezcBasePropertyNotFoundException
97
+     *         if the given property does not exist.
98
+     * @throws ezcBaseValueException
99
+     *         if the value to be assigned to a property is invalid.
100
+     * @throws ezcBasePropertyPermissionException
101
+     *         if the property to be set is a read-only property.
102
+     */
103
+    abstract public function __set( $propertyName, $propertyValue );
104
+
105
+    /**
106
+     * Returns if a option exists.
107
+     *
108
+     * @param string $propertyName Option name to check for.
109
+     * @return bool Whether the option exists.
110
+     * @ignore
111
+     */
112
+    public function __isset( $propertyName )
113
+    {
114
+        return array_key_exists( $propertyName, $this->properties );
115
+    }
116
+
117
+    /**
118
+     * Returns if an option exists.
119
+     * Allows isset() using ArrayAccess.
120
+     *
121
+     * @param string $propertyName The name of the option to get.
122
+     * @return bool Whether the option exists.
123
+     */
124
+    public function offsetExists( $propertyName )
125
+    {
126
+        return $this->__isset( $propertyName );
127
+    }
128
+
129
+    /**
130
+     * Returns an option value.
131
+     * Get an option value by ArrayAccess.
132
+     *
133
+     * @throws ezcBasePropertyNotFoundException
134
+     *         If $propertyName is not a key in the $properties array.
135
+     * @param string $propertyName The name of the option to get.
136
+     * @return mixed The option value.
137
+     */
138
+    public function offsetGet( $propertyName )
139
+    {
140
+        return $this->__get( $propertyName );
141
+    }
142
+
143
+    /**
144
+     * Set an option.
145
+     * Sets an option using ArrayAccess.
146
+     *
147
+     * @throws ezcBasePropertyNotFoundException
148
+     *         If $propertyName is not a key in the $properties array.
149
+     * @throws ezcBaseValueException
150
+     *         If the value for a property is out of range.
151
+     * @param string $propertyName The name of the option to set.
152
+     * @param mixed $propertyValue The value for the option.
153
+     */
154
+    public function offsetSet( $propertyName, $propertyValue )
155
+    {
156
+        $this->__set( $propertyName, $propertyValue );
157
+    }
158
+
159
+    /**
160
+     * Unset an option.
161
+     * Unsets an option using ArrayAccess.
162
+     *
163
+     * @throws ezcBasePropertyNotFoundException
164
+     *         If $propertyName is not a key in the $properties array.
165
+     * @throws ezcBaseValueException
166
+     *         If a the value for a property is out of range.
167
+     * @param string $propertyName The name of the option to unset.
168
+     */
169
+    public function offsetUnset( $propertyName )
170
+    {
171
+        $this->__set( $propertyName, null );
172
+    }
173
+}
174
+?>
... ...
@@ -0,0 +1,75 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseAutoloadOptions class
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Class containing the basic options for ezcBase' autoload.
13
+ *
14
+ * @property bool $preload
15
+ *           If component preloading is enabled then as soon as one of the
16
+ *           classes of a component is request, all other classes in the
17
+ *           component are loaded as well (except for Exception classes).
18
+ * @property bool $debug
19
+ *           If debug is enabled then the autoload method will show exceptions
20
+ *           when a class can not be found. Because exceptions are ignored by
21
+ *           PHP in the autoload handler, you have to catch them in autoload()
22
+ *           yourself and do something with the exception message.
23
+ *
24
+ * @package Base
25
+ * @version 1.8
26
+ */
27
+class ezcBaseAutoloadOptions extends ezcBaseOptions
28
+{
29
+    /**
30
+     * Constructs an object with the specified values.
31
+     *
32
+     * @throws ezcBasePropertyNotFoundException
33
+     *         if $options contains a property not defined
34
+     * @throws ezcBaseValueException
35
+     *         if $options contains a property with a value not allowed
36
+     * @param array(string=>mixed) $options
37
+     */
38
+    public function __construct( array $options = array() )
39
+    {
40
+        $this->preload = false;
41
+        $this->debug = false;
42
+
43
+        parent::__construct( $options );
44
+    }
45
+
46
+    /**
47
+     * Sets the option $name to $value.
48
+     *
49
+     * @throws ezcBasePropertyNotFoundException
50
+     *         if the property $name is not defined
51
+     * @throws ezcBaseValueException
52
+     *         if $value is not correct for the property $name
53
+     * @param string $name
54
+     * @param mixed $value
55
+     * @ignore
56
+     */
57
+    public function __set( $name, $value )
58
+    {
59
+        switch ( $name )
60
+        {
61
+            case 'debug':
62
+            case 'preload':
63
+                if ( !is_bool( $value ) )
64
+                {
65
+                    throw new ezcBaseValueException( $name, $value, 'bool' );
66
+                }
67
+                $this->properties[$name] = $value;
68
+                break;
69
+
70
+            default:
71
+                throw new ezcBasePropertyNotFoundException( $name );
72
+        }
73
+    }
74
+}
75
+?>
... ...
@@ -0,0 +1,42 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseStruct.
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Base class for all struct classes.
13
+ *
14
+ * @package Base
15
+ * @version 1.8
16
+ */
17
+class ezcBaseStruct
18
+{
19
+    /**
20
+     * Throws a BasePropertyNotFound exception.
21
+     *
22
+     * @param string $name
23
+     * @param mixed $value
24
+     * @ignore
25
+     */
26
+    final public function __set( $name, $value )
27
+    {
28
+        throw new ezcBasePropertyNotFoundException( $name );
29
+    }
30
+
31
+    /**
32
+     * Throws a BasePropertyNotFound exception.
33
+     *
34
+     * @param string $name
35
+     * @ignore
36
+     */
37
+    final public function __get( $name )
38
+    {
39
+        throw new ezcBasePropertyNotFoundException( $name );
40
+    }
41
+}
42
+?>
... ...
@@ -0,0 +1,72 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseFileFindContext class.
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Struct which defines the information collected by the file walker for locating files.
13
+ *
14
+ * @package Base
15
+ * @version 1.8
16
+ */
17
+class ezcBaseFileFindContext extends ezcBaseStruct
18
+{
19
+    /**
20
+     * The list of files
21
+     *
22
+     * @var array(string)
23
+     */
24
+    public $elements;
25
+
26
+    /**
27
+     * The number of files
28
+     *
29
+     * @var int
30
+     */
31
+    public $count;
32
+
33
+    /**
34
+     * The total file size of all files found
35
+     *
36
+     * @var int
37
+     */
38
+    public $size;
39
+
40
+    /**
41
+     * Constructs a new ezcBaseFileFindContext with initial values.
42
+     *
43
+     * @param array(string) $elements
44
+     * @param int $count
45
+     * @param int $size
46
+     */
47
+    public function __construct( $elements = array(), $count = 0, $size = 0 )
48
+    {
49
+        $this->elements = $elements;
50
+        $this->count = $count;
51
+        $this->size = $size;
52
+    }
53
+
54
+    /**
55
+     * Returns a new instance of this class with the data specified by $array.
56
+     *
57
+     * $array contains all the data members of this class in the form:
58
+     * array('member_name'=>value).
59
+     *
60
+     * __set_state makes this class exportable with var_export.
61
+     * var_export() generates code, that calls this method when it
62
+     * is parsed with PHP.
63
+     *
64
+     * @param array(string=>mixed) $array
65
+     * @return ezcBaseFileFindContext
66
+     */
67
+    static public function __set_state( array $array )
68
+    {
69
+        return new ezcBaseFileFindContext( $array['elements'], $array['count'], $array['size'] );
70
+    }
71
+}
72
+?>
... ...
@@ -0,0 +1,83 @@
1
+<?php
2
+/**
3
+ * File containing the ezcBaseRepositoryDirectory.
4
+ *
5
+ * @package Base
6
+ * @version 1.8
7
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Struct which defines a repository directory.
13
+ *
14
+ * @package Base
15
+ * @version 1.8
16
+ */
17
+class ezcBaseRepositoryDirectory extends ezcBaseStruct
18
+{
19
+    /**
20
+     * Specifies that the entry is for the eZ Components repository.
21
+     */
22
+    const TYPE_INTERNAL = 0;
23
+
24
+    /**
25
+     * Specifies that the entry is for an external (user defined) repository.
26
+     */
27
+    const TYPE_EXTERNAL = 1;
28
+
29
+    /**
30
+     * The $type is one of the two TYPE_* constants defined in this class.
31
+     *
32
+     * @var string
33
+     */
34
+    public $type;
35
+
36
+    /**
37
+     * The path to the configured repository.
38
+     *
39
+     * @var string
40
+     */
41
+    public $basePath;
42
+
43
+    /**
44
+     * The path to the autoload files.
45
+     *
46
+     * @var string
47
+     */
48
+    public $autoloadPath;
49
+
50
+    /**
51
+     * Constructs a new ezcBaseRepositoryDirectory of type $type with base path
52
+     * $basePath and autoload path $autoloadPath.
53
+     *
54
+     * @param string $type
55
+     * @param string $basePath
56
+     * @param string $autoloadPath
57
+     */
58
+    public function __construct( $type, $basePath, $autoloadPath )
59
+    {
60
+        $this->type = $type;
61
+        $this->basePath = $basePath;
62
+        $this->autoloadPath = $autoloadPath;
63
+    }
64
+
65
+    /**
66
+     * Returns a new instance of this class with the data specified by $array.
67
+     *
68
+     * $array contains all the data members of this class in the form:
69
+     * array('member_name'=>value).
70
+     *
71
+     * __set_state makes this class exportable with var_export.
72
+     * var_export() generates code, that calls this method when it
73
+     * is parsed with PHP.
74
+     *
75
+     * @param array(string=>mixed) $array
76
+     * @return ezcBaseRepositoryDirectory
77
+     */
78
+    static public function __set_state( array $array )
79
+    {
80
+        return new ezcBaseRepositoryDirectory( $array['type'], $array['basePath'], $array['autoloadPath'] );
81
+    }
82
+}
83
+?>
... ...
@@ -0,0 +1,32 @@
1
+CREDITS
2
+=======
3
+
4
+eZ Components team
5
+------------------
6
+
7
+- Sergey Alexeev
8
+- Sebastian Bergmann
9
+- Jan Borsodi
10
+- Raymond Bosman
11
+- Frederik Holljen
12
+- Kore Nordmann
13
+- Derick Rethans
14
+- Vadym Savchuk
15
+- Tobias Schlitt
16
+- Alexandru Stanoi
17
+
18
+Contributors
19
+------------
20
+
21
+- Sinisa Dukaric
22
+
23
+  * searchMailbox addition for IMAP transport
24
+
25
+- Mikko Koppanen
26
+
27
+  * various IMAP transport enhancements
28
+  * SSL support for IMAP and POP3
29
+
30
+- Christian Michel
31
+
32
+  * SSL/TLS support for SMTP transport
... ...
@@ -0,0 +1,570 @@
1
+1.7.1 - Monday 22 March 2010
2
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3
+
4
+- Fixed #16154: Bcc headers are not stripped when using SMTP.
5
+- Fixed #16347: Inline images in the mail composer are not added other
6
+  attributes precede the src attribute.
7
+- Fixed #16348: Adding inline images in the mail composer with whitespace in
8
+  the path fails.
9
+- Fixed #16470: Mail test suite causes fatal errors because of transport
10
+  errors in destructor.
11
+
12
+
13
+1.7 - Monday 21 December 2009
14
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15
+
16
+- No changes.
17
+
18
+
19
+1.7rc1 - Monday 07 December 2009
20
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
21
+
22
+- No changes.
23
+
24
+
25
+1.7beta1 - Monday 23 November 2009
26
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
27
+
28
+- Fixed issue #15837: imap.google.com (google gmail) changed IMAP response.
29
+
30
+
31
+1.7alpha1 - Monday 09 November 2009
32
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
33
+
34
+- Fixed test cases for PHP 5.3 and later.
35
+- Implemented feature request #14023: Split ezcMailComposer's addAttachment
36
+  into a function for adding file attachments and for adding attachments from
37
+  strings.
38
+- Implemented feature request #14257: Problem accessing multiple headers with
39
+  same headername.
40
+- Implemented feature request #14487: Enable ezcMailComposer to specify
41
+  encoding for text and html parts.
42
+- Implemented feature request #14794: Add an option to parse text attachments
43
+  as file part instead of text part.
44
+- Fixed issue #15341: ezcMailFileParser class function appendStreamFilters not
45
+  working properly for quoted-printable.
46
+- Fixed issue #15456: Problems with parsing emails that have "charset = "
47
+  instead of "charset=".
48
+
49
+
50
+1.6.3 - Monday 22 June 2009
51
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
52
+
53
+- Fixed issue #15068: false ezcMail tests. Based on a patch from Thomas Koch.
54
+
55
+
56
+1.6.2 - Monday 11 May 2009
57
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
58
+
59
+- Fixed issue #14776: ezcMailStorageSet generates bad file names.
60
+
61
+
62
+1.6.1 - Monday 09 February 2009
63
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
64
+
65
+- Fixed issue #14242: Cannot append email through IMAP.
66
+- Fixed issue #14360: problems with $imap->top() command in gmail.
67
+
68
+
69
+1.6 - Monday 05 January 2009
70
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
71
+
72
+- Fixed issue #14220: File attachments mess up emails without body text.
73
+
74
+
75
+1.6rc1 - Monday 15 December 2008
76
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
77
+
78
+- Fixed issue #14025: Problem with ezcMailComposer::addAttachment when use the
79
+  fifth param to change the file name.
80
+
81
+
82
+1.6beta1 - Monday 01 December 2008
83
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
84
+
85
+- Fixed issue #14009: ezcMailTools::validateEmailAddressMx() uses wrong HELO
86
+  domain name.
87
+- The function ezcMailTools::validateEmailAddressMx() throws an exception if
88
+  there is no support for getmxrr() and checkdnsrr().
89
+- Altered the ezcMailTools::validateEmailAddress() regexp to protect against
90
+  locale issues.
91
+
92
+
93
+1.6alpha1 - Monday 10 November 2008
94
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
95
+
96
+- Implemented issue #13383: Add a method to extract/change/replace entities in
97
+  HTML mail with the CID elements replaced.
98
+- Implemented feature request #13539: Add new mail parser option fileClass.
99
+- Fixed issue #13878: Endless loop in ezcMailParser.
100
+
101
+
102
+1.5.2 - Monday 06 October 2008
103
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
104
+
105
+- Fixed an issue that caused the part boundaries from e-mail messages not
106
+  being correctly set in the parsed mail structure. Instead an auto-generated
107
+  one was used.
108
+- Fixed issue #13553: Documented how to access the raw value of headers.
109
+- Implemented feature request #13538: Added possibility to set a custom
110
+  message in mail multiparts for e-mail clients missing MIME support.
111
+
112
+
113
+1.5.1 - Monday 04 August 2008
114
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
115
+
116
+- Fixed issue #13329: ezcMail fetchParts() no longer generates an error when
117
+  parsing a mail with an empty body.
118
+- Fixed a special case in sortFromOffset() where $range was undefined.
119
+- Fixed an issue with duplicate properties arrays in mail part descendants.
120
+
121
+
122
+1.5 - Monday 16 June 2008
123
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
124
+
125
+- No changes.
126
+
127
+
128
+1.5rc1 - Tuesday 10 June 2008
129
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
130
+
131
+- Fixed issue #13038: Added support for non-ascii and mime-emcoded (non-RFC)
132
+  filenames for mail attachments.
133
+
134
+
135
+1.5beta1 - Tuesday 27 May 2008
136
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
137
+
138
+- Fixed issue #13010: The transport connection handles correcly cases where
139
+  CRLF is split in 2 different blocks read from server.
140
+
141
+
142
+1.5alpha1 - Monday 05 May 2008
143
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
144
+
145
+- Fixed issue #12844: getTmpDir() not properly set in Windows.
146
+- Fixed issue #12903: The mail digest size is not calculated twice anymore.
147
+- Fixed issue #12930: The SMTP authentication methods are used in correct
148
+  strength order now.
149
+- Implemented feature request #11937: Switch to turn off automatic inclusion
150
+  of files with the Mail Composer.
151
+- Implemented feature request #12203: Replaced hard-coded paths for temporary
152
+  directory with the PHP 5.2.1 function sys_get_temp_dir().
153
+- Implemented feature request #12694: Replace reflection test for class type
154
+  with SPL function.
155
+
156
+
157
+1.4.3 - Monday 03 March 2008
158
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
159
+
160
+- Fixed issue #12595: Folding is no longer applied twice for To, Cc and Bcc
161
+  headers.
162
+
163
+
164
+1.4.2 - Thursday 17 January 2008
165
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
166
+
167
+- Fixed issue #12372: MTA transport does not encode subject.
168
+
169
+
170
+1.4.1 - Monday 14 January 2008
171
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
172
+
173
+- Fixed issue #12318: Unsafe characters are replaces by underscores in
174
+  attachment file names during mail parsing.
175
+
176
+
177
+1.4 - Monday 17 December 2007
178
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
179
+
180
+- No changes
181
+
182
+
183
+1.4rc1 - Wednesday 05 December 2007
184
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
185
+
186
+- Fixed issue #12138: Mail's IMAP transport can hang when connection gets
187
+  dropped.
188
+
189
+
190
+1.4beta1 - Wednesday 28 November 2007
191
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
192
+
193
+- Fixed issue #11906: Only files inside an image tag are attached to the
194
+  composed email.
195
+- Fixed issue #11965: Reading from a transport connection is stopped at CRLF
196
+  or a problem in the connection, and not after a hard-coded number of loops.
197
+- Fixed issue #12062: Mails with no space or tabs after the colon in headers
198
+  are parsed correctly now.
199
+
200
+
201
+1.4alpha2 - Monday 29 October 2007
202
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
203
+
204
+- Fixed issue #11582: ezcMailImapSet won't be caught in an infinite loop if
205
+  the mail headers or body contain an IMAP tag.
206
+- The IMAP, POP3 and SMTP transports and the ezcMailParser class can receive
207
+  options objects in the constructor. They can still receive options as arrays
208
+  to keep compatibility.
209
+
210
+
211
+1.4alpha1 - Tuesday 18 September 2007
212
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
213
+
214
+- Implemented feature request #8436: Added the method validateEmailAddress()
215
+  in ezcMailTools.
216
+- Implemented feature request #10459: Added the searchMailbox() method to the
217
+  IMAP transport. Based on a patch from Sinisa Dukaric.
218
+- Implemented feature request #10659: Added the getHierarchyDelimiter() method
219
+  to the IMAP transport.
220
+- Implemented feature request #10996: Added support for the SMTP authentication
221
+  methods DIGEST-MD5, CRAM-MD5, NTLM and LOGIN.
222
+- Implemented feature request #10999: Added the possibility to refer to
223
+  messages by their unique IDs in IMAP.
224
+- Implemented feature request #11061: Added missing conditions for SMTP
225
+  methods.
226
+- Implemented feature request #11299: Added an optional argument to the
227
+  setHeader() method in ezcMailPart to assign a charset to a header.
228
+- Added the fetchSizes() method in IMAP which returns the sizes of the
229
+  specified messages.
230
+
231
+
232
+1.3.1 - Monday 30 July 2007
233
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
234
+
235
+- Fixed issue #11175: ezcMailTools::composeEmailAddress quotes the name part
236
+  if it contains special characters ( , @ < > : ; ' " ).
237
+- Fixed issue #11174: ezcMailHeaderFolder::foldAny doesn't add a line break in
238
+  front of the header value if it is exactly 76 characters.
239
+
240
+
241
+1.3 - Monday 02 July 2007
242
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
243
+
244
+- No changes.
245
+
246
+
247
+1.3rc1 - Monday 25 June 2007
248
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
249
+
250
+- Documentation updates and fixes.
251
+
252
+
253
+1.3beta2 - Thursday 31 May 2007
254
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
255
+
256
+- Fixed issue #10762: Mail file set does not work with php://stdin.
257
+
258
+
259
+1.3beta1 - Monday 07 May 2007
260
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
261
+
262
+- Added walkParts() to ezcMail and the class ezcMailPartWalkContext which can
263
+  be used to walk through all the parts in a mail and execute a callback
264
+  function on each part (for example save mail parts to disk or a database).
265
+- Added support for multipart/report and message/delivery-status mail parts,
266
+  connected to issue #8694.
267
+- Added header folding for the Content-Disposition header.
268
+- Fixed an issue with ezcMailHeaderFolder::foldAny() where notices were thrown
269
+  if the header contained a too long string without any white spaces.
270
+- Fixed issue #10656: Parsing of incomplete multipart/related mails does not
271
+  trigger a notice anymore.	
272
+- Fixed ezcMailTransportException to inherit from ezcMailException, and not
273
+  directly from ezcBaseException.
274
+- Implemented feature #8303: Added fetchParts() to ezcMail to return the mail
275
+  parts of a mail.
276
+- Implemented feature #8419: added the property size to ezcMailPart,
277
+  which is set when parsing a mail.
278
+- Implemented feature #8485: added the ezcMailStorageSet which wraps
279
+  around another set and provides saving of mail sources.
280
+- Implemented feature #9068: added support for filename language and
281
+  filename charset support for the Content-Disposition header.
282
+- Implemented feature #9292: added SSL support for IMAP and POP3.
283
+  Based on a patch from Mikko Koppanen.
284
+- Implemented feature #9308: added option classes for transports.
285
+- Implemented feature #9785: Allow developers to specify their own 
286
+  character conversion function to UTF-8. Also fixed issue #8369 as developers
287
+  can ignore the notices thrown by iconv in their own conversion function.
288
+- Implemented feature #10068: added a list of supported RFCs to the
289
+  documentation.
290
+- Implemented feature #10082: added options class ezcMailParserOptions
291
+  and deprecated second parameter of parseMail() in ezcMailParser.
292
+- Implemented feature #10091: added SSL/TLS support for the SMTP
293
+  transport. Based on a patch from Christian Michel. 
294
+- Implemented feature #10340: More selective encoding of mail headers.
295
+- Implemented feature #10341: MixedPart mail without attachments - 
296
+  Documentation enhancement
297
+- Implemented feature #10682: The IMAP PEEK command is now supported
298
+  through the top() method. Added PEEK support to sortMessages() also.
299
+- Fixed a problem with certain IMAP servers which didn't allow the second
300
+  parameter of top() method from IMAP to be 0.
301
+
302
+
303
+1.2.1 - [RELEASEDATE]
304
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
305
+
306
+- Added ezcMailTools::guessContentType to resolve a bug in which the images
307
+  embeded in an html part were treated like application/octet-stream
308
+  attachments.
309
+- Fixed bug #010138: Doc of ezcMailMultipartDigest->__construct() incorrect
310
+  (The documentation was correct, the implementation was wrong.)
311
+- Fixed issue #10283: ImapSet does not return the trailing parenthesis ')'.
312
+- Fixed issue #10312: Fixed the value of ezcMail::QUOTED_PRINTABLE constant.
313
+- Fixed issue #10200 (part 1): Content-Disposition header is no longer created
314
+  during parsing if it is missing.
315
+- Fixed issue #10200 (part 2): The value of the generated Content-ID header
316
+  contains the filename encoded with base64 to avoid problems.
317
+- Fixed issue #10136: ezcMailImapSet, ezcMailPop3Set and ezcMailMboxSet not
318
+  marked as private anymore.
319
+- Fixed issue #10358: correct call to the ezcMailTextParser constructor in
320
+  case the parsed message contains an unrecognized MIME main type.
321
+- Fixed issue #10389: tab characters are converted to one space when parsing
322
+  mails with wrapped headers.
323
+- Fixed issue #10359: unrecognized mail body parts are parsed using the
324
+  ezcMailFileParser.
325
+- Fixed issue #10396: Method convertToUTF8 assumes 'latin1' charset instead of
326
+  'unknown-8bit' and 'x-user-defined'.
327
+
328
+
329
+1.2 - Monday 18 December 2006
330
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
331
+
332
+- No changes.
333
+
334
+
335
+1.2beta2 - Monday 20 November 2006
336
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
337
+
338
+- Added feature #9079: The ability to add mail attachments using streams.
339
+- Added feature #9100: The ability to set the character set in the
340
+  composer for text and HTML parts.
341
+- Added feature #9331: Added the returnPath property in ezcMail to set the
342
+  envelope address while sending mail with the SMTP and MTA transports.
343
+- Added feature #9334: Added the getMessageNumbers() method to the IMAP and
344
+  POP3 sets to return message numbers. Patch by Mikko Koppanen.
345
+
346
+- Fixed an issue in ezcMailPart: When setting the headers property the wrong
347
+  exception was thrown.
348
+- Fixed bug #9042: added __isset() method to classes that use properties.
349
+- Fixed bug #9442: added missing hasData() method to ezcMailVariableSet.
350
+- Various additions to the IMAP Transport:
351
+
352
+  * Added features #9171, #9172, #9206, #9228: Added the fetchByFlag(),
353
+    countByFlag(), setFlag(), clearFlag() methods. Patches by Mikko Koppanen.
354
+  * Added feature #9173: Changed the status() method to also return the number
355
+    of recent and unseen messages.
356
+  * Added features #9212 and #9228: Added the createMailbox(), renameMailbox(),
357
+    deleteMailbox() and copyMessages() methods. Patches by Mikko Koppanen.
358
+  * Added feature #9229: Added a parameter to selectMailbox to select a mail
359
+    box in readonly mode. Patch by Mikko Koppanen.
360
+  * Added feature #9333: Added the sortMessages(), sortFromOffset() and
361
+    fetchFlags() methods. Patches by Mikko Koppanen.
362
+  * Added feature #9336: Added the expunge() method. Patch by Mikko Koppanen.
363
+  * Added feature #9423: Added the capability() method.  Patch by Mikko
364
+    Koppanen.
365
+  * Added feature #9424: Added the noop() method in IMAP and POP3 transports.
366
+    Patch by Mikko Koppanen.
367
+  * Added feature #9425: Added the append() method.
368
+
369
+
370
+1.2beta1 - Tuesday 24 October 2006
371
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
372
+
373
+- Added IMAP transport.
374
+- Added fetchFromOffset() method to POP3 and MBOX transports.
375
+- Implemented suggestion #8988: ezcMailAddress should implement __toString().
376
+- Implemented suggestion #8989: Extending the ezcMail class.
377
+  ezcMailParser->parse() can now deal with classes that extend ezcMail.
378
+  Additionally, added this functionality to ezcMailTool::replyToMail().
379
+- Implemented read access to property ezcMailPart->headers for extending this
380
+  class and its derives.
381
+- Added a new class (ezcMailVirtualFile) to allow attachments from memory.
382
+- Added an optional parameter to listMessages() method in IMAP, to return
383
+  messages with a certain Content-Type header.
384
+
385
+
386
+1.1.3 - Monday 09 October 2006
387
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
388
+
389
+- Fixed bug #8990: ezcMail->messageID should be named ezcMail->messageId.
390
+- Fixed bug #9048: ezcMailText does not encode properly.
391
+- Fixed bug #9049: Long headers are not wrapped and could cause MTA warnings.
392
+- Fixed bug #8850: Support multiline header parameters by
393
+  implementing RFC2231.
394
+- Fixed a bug in ezcMailPart: The getHeader() function returns an empty
395
+  string instead of null in case of an unknown header.
396
+- Fixed a bug in ezcMailRfc822Parser: The bcc is set correctly now while
397
+  parsing e-mail.
398
+- Fixed a bug in ezcMailMultipartRelated: The getRelatedParts() and
399
+  getRelatedPartByID() functions return now correct values if the main part of
400
+  the message is missing.
401
+- Fixed a bug in ezcMailMtaTransport and ezcMailSmtpTransport: Checking for
402
+  sending a message without recipients.
403
+- Fixed a bug in ezcMailImapTransport: listUniqueIdentifiers() does not hang
404
+  anymore when the supplied parameter is an invalid message number.
405
+- Implemented support for character set and language for
406
+  ezcContentDispositionHeader.
407
+- Fixed an issue with mbox files without an mbox header being present.
408
+
409
+
410
+1.1.2 - Monday 28 August 2006
411
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
412
+
413
+- Added the ezcMailPop3Transport::fetchByMessageNr() method that returns an
414
+  ezcMailPop3Set containing the message with the specified number.
415
+- Fixed bug #8736: variable transport non-functional.
416
+- Fixed bug that caused the contentId property of the ezcMailFile class not to
417
+  be set even if it was available for the related part while parsing
418
+  multipart/related messages.
419
+- PHP 5.2 compatibility.
420
+	
421
+
422
+1.1.1 - Monday 07 August 2006
423
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
424
+
425
+- Partially fixed bug #8694:
426
+
427
+  * Don't crash when generating empty mail.
428
+  * Don't assume that message/ parts are actually rfc822 messages when parsing
429
+    mail.
430
+	
431
+	
432
+1.1 - Monday 12 June 2006
433
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
434
+
435
+- Fixed CS issues and tests.
436
+
437
+
438
+1.1rc1 - Monday 29 May 2006
439
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
440
+	
441
+- Added the ezcMailTools::replyToMail() method that will create a reply
442
+  message with the correct headers set (from, to, cc, ,subject, references and
443
+  in-reply-to) based on an existing mail message.
444
+- Added workaround for bug #8271: Mail parsing bug in email with PGP signature.
445
+  We don't support GPG at the moment, however we now recognize it and ignore keys
446
+  and signatures.
447
+- Added the ezcMailSmtpTransport::keepConnection() method. This allows keeping
448
+  the connection open when sending several mails.
449
+- Added the ezcMail::messageID property which represents the ID of a mail
450
+  message.
451
+- Added the ezcMail::timestamp property which is generated from the Date
452
+  header.
453
+- Added the ezcMailMboxTransport and changed ezcMailMboxSet to work together
454
+  with that one.
455
+- Added $encoding parameter to ezcMailTools::parseMailAddress and
456
+  ezcMailTools::parseMailAddresses. This allows you to parse not only
457
+  RFC822 compliant address strings but also address strings in local
458
+  encoding. This is useful when ezcMailAddress items directly from
459
+  user inserted address string (e.g from a composer window).
460
+- Added feature #8266: Property for the Content-Disposition
461
+  stuff on the ezcMailPart level. Implemented for both parsing and sending.
462
+- Changed mime string decoding to be more robust by trying to work around
463
+  common mistakes by MUAs.
464
+- Changed the way how character sets are handled. From now on all text parts
465
+  will automatically be converted to UTF-8. The original character set
466
+  belonging to the e-mail is stored in the originalCharset property, while the
467
+  charset property will now always return "UTF-8" for text parts.
468
+- Changed header storage so that headers are now stored case sensitive but
469
+  retrieved case insensitive. This is useful since headers are case
470
+  insensitive, but do have a preferred case. When fetching headers it is handy
471
+  not to have to try all possible permutations.
472
+- Fixed a bug where parsing would fail because there was no trailing ';' in
473
+  the Content-Type field.
474
+- Fixed an issue where mime decoding of headers failed because of a bug in
475
+  PHP.
476
+
477
+	
478
+1.1beta2 - Tuesday 09 May 2006
479
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
480
+
481
+- Added the getRelatedPartByID() method to ezcMailMultipartRelated that
482
+  returns a mail part by looking for it's Content-ID.
483
+- Added the class ezcMailFileSet that can be used to parse mail messages
484
+  in a file directly from disk.
485
+- Added the class ezcMailVariableSet that can be used to parse mail messages
486
+  directly from a variable.
487
+- Changed the POP3 classes to leave the mail on the server by default. You
488
+  need to actively set $deleteFromServer in order to have it removed.
489
+
490
+
491
+1.1beta1 - Wednesday 19 April 2006
492
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
493
+
494
+- Added the mbox transport for reading mbox files to use with the
495
+  ezcMailParser.
496
+- Fixed a bug that caused filenames with spaces to appear mangled.
497
+- Fixed a bug where the encodings 7bit and 8bit were not handled correctly.
498
+- Fixed a bug where text attachments missed line breaks when saved to disk.
499
+
500
+
501
+1.1alpha1 - Monday 03 April 2006
502
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
503
+
504
+- Added functionality for parsing mail messages. The main class is
505
+  ezcMailParser.
506
+- Added the POP 3 mail retrieving transport for use with the ezcMailParser.
507
+- Added method ezcMailPart::setHeaders to set multiple headers at once.
508
+- Added method ezcMailTools::parseEmailAddress and parseEmailAddresses that
509
+  parse RFC 2822 email addresses.
510
+- Added class ezcMailRfc822Digest inheriting ezcMailPart. This part can be
511
+  used to create mail digest messages.
512
+- Added class ezcMailMultipartDigest which represents multipart/digest parts.
513
+- Renamed ezcMailTransportMta and ezcMailTransportSmtp to ezcMailMtaTransport
514
+  and ezcMailSmtpTransport. The old classes still exist but are deprecated.
515
+
516
+
517
+1.0.1 - Monday 20 February 2006
518
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
519
+
520
+- Fixed bug #7805: Removed double linebreak in ezcMailTransportMta::send().
521
+- Fixed bug #7813: MultipartRelated with non-file parts may throw exception 
522
+  if you did not set a Content-ID.
523
+- Implemented suggesion #7804:
524
+
525
+  * Added getParts() to ezcMailMultipart.
526
+  * Added getParts() to ezcMailMultipartMixed and MultipartAlternative.
527
+  * Added getMainPart() and getRelatedParts to ezcMultipartRelated.
528
+
529
+
530
+1.0 - Monday 30 January 2006
531
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
532
+
533
+- Changed ezcMailException to inherit from ezcBaseException instead of
534
+  Exception.
535
+- Fixed bug #7716: ezcMail needs support for Reply-To. We simply don't set it
536
+  anymore now. Users can set the header themselves if they need to.
537
+  (ezcMailPart::setHeader())
538
+- Fixed issue with double To and Subject headers when using the MTA transport.
539
+
540
+
541
+1.0rc1 - Monday 16 January 2006
542
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
543
+
544
+- Added feature enhancement #7582: Adding multiple parts as an array.
545
+- Changed ezcMailText::characterSet property to charset.
546
+- Changed ezcMailSmtpTransport and made all protected methods private. They
547
+  exposed an interface that most likely never will have to be changed.
548
+- Changed exception behavior. All errors will now throw a different exception
549
+  class.
550
+- Fixed bug #7637: "ezcMailComposer doesn't encode headers".
551
+
552
+
553
+1.0beta2 - Wednesday 21 December 2005
554
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
555
+
556
+- Completely revised documentation.
557
+- Replaced the mail_address array with the ezcMailAddress 'struct'.
558
+- Renamed ezcMailTextPart to ezcMailText
559
+- Renamed ezcMailFilePart to ezcMailFile
560
+- Fixed problem with sending mail with cc and bcc recipients.
561
+
562
+- Fixed bug #7576: RFC 2606 compliance
563
+- Fixed bug #7577: unable to run example_general.php
564
+- Fixed bug #7578: mail example errors
565
+
566
+
567
+1.0beta1 - Thursday 24 November 2005
568
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
569
+
570
+- Initial release of this package.
... ...
@@ -0,0 +1,4 @@
1
+The component allows you construct and/or parse Mail messages conforming to 
2
+the mail standard. It has support for attachments, multipart messages and HTML 
3
+mail. It also interfaces with SMTP to send mail or IMAP, POP3 or mbox to 
4
+retrieve e-mail.
... ...
@@ -0,0 +1,64 @@
1
+[X] Options should always be done through an options class, and no longer
2
+    through arrays like is shown in trunk/Mail/docs/tutorial/tutorial_smtp_auth.php.
3
+	See: http://ez.no/ezcomponents/contributing/coding_standards#id45
4
+	As in this case there are options before, the functionality should stay,
5
+	but the array() way of passing objects should not be documented.
6
+
7
+	- The IMAP, POP3 and SMTP transports and the ezcMailParser class can receive
8
+	options objects in the constructor. They can still receive options as arrays
9
+	to keep compatibility.
10
+
11
+	- TS: Actually we should not even document anymore, that an array also
12
+	  works as options. Just the option class itself should be documented so
13
+	  no new users start with the deprecated way of handling options. The
14
+	  default value for $options in ctors should also be null, not array()
15
+	  then.
16
+
17
+[X] The same in ezcMailImapSet but as that did not have options before, the
18
+    array way should not be supported at all.
19
+
20
+	- To keep consistency in the whole package array options were used.
21
+
22
+[X] The "James Bond" header looks broken to me in the tutorial.
23
+
24
+	- Fixed.
25
+
26
+[ ] Shouldn't the charset for headers default to "Utf-8" instead of "us-ascii"?
27
+    I am not sure what we do in other cases, it of course has to be consistent.
28
+	
29
+	- TS: I think we should default to UTF-8 everywhere we need to define a
30
+	  default charset.
31
+
32
+[ ] Isn't the "$charset = $this->getHeaderCharset" to
33
+	"$value = substr( $value, 7 ); // "dummy: " + 1" bit copied from somewhere?
34
+	If so, we should make this a new (private) method somewhere.
35
+
36
+[X] In ezcMailImapTransport, why did you change many properties to protected
37
+    (from private)?
38
+
39
+	- I think it makes more sense to have protected properties, and also makes
40
+	it easier to test.
41
+
42
+[X] I see some strange things with ezcMailTransportMta vs ezcMailMtaTransport 
43
+    in the trunk/Mail/src/transports/mta/mta_transport.php file... are you 
44
+	sure you didn't swap something? Or was it fucked up before? :)
45
+
46
+	- ezcMailTransportMta is a wrong name so it is deprecated in transport_mta.php
47
+	ezcMailMtaTransport is correct and it is in mta_transport.php
48
+
49
+[X] The same thing seems to be going on with ezcMailTransportSmtp vs
50
+    ezcMailSmtpTransport.
51
+
52
+	- The same thing above.
53
+
54
+[ ] In ezcMailTools::validateEmailAddressMx() we are using smtp.ez.no in the
55
+    HELO command. This will be incorrect for most of the use cases, since HELO
56
+	should identify the server that is opening the communication. We should
57
+	either rely on $_SERVER['SERVER_NAME'] or let the user supply the domain
58
+	to use in HELO. Same applies for the sender email address. This should
59
+	either be "postmaster@{$_SERVER['SERVER_NAME']}" or also configurable.
60
+
61
+[ ] On my system several failures and warnings occur. I guess this is mostly
62
+    because test cases don't get skipped that are only working inside the eZ
63
+	network, but some seem to have real problems. For details, please check
64
+	http://home.schlitt.info:8080/buildresults/Mail.
... ...
@@ -0,0 +1,91 @@
1
+ezcMailComposerOptions
2
+======================
3
+
4
+- Cast to bool is not necessary in Mail/src/options/composer_options.php +75.
5
+
6
+# Done.
7
+
8
+SMTP Auth methods
9
+=================
10
+
11
+- Why is there only a failure case tested? I don't see (at a first glance)
12
+  that the sorting is really tested at all. If I'm wrong with that: Please add
13
+  a comment to the test. Thanks!
14
+
15
+# I added a comment to the test.
16
+
17
+Testing
18
+=======
19
+
20
+- 1 failure with 5.2.6 on ezctest: ::
21
+
22
+	1) testValidateEmailAddressIncorrect(ezcMailToolsTest)
23
+	Failed asserting that µ@example.com is incorrect.
24
+	Failed asserting that <boolean:true> matches expected value <boolean:false>.
25
+	/home/ts/dev/ezc/trunk/Mail/tests/tools_test.php:273
26
+
27
+- Some failures and nasty output on my local maschine (maybe these tests can be
28
+  conditionally skipped?): ::
29
+
30
+# I don't know anything about this behaviour in MTA. What system do you have on
31
+  your PC? Do you have sendmail? The MTA transport uses the mail() function which
32
+  is not easy to control and which can output text to the console. Not much to do
33
+  here unless somebody knows something. (Note: is hartes-php.de functional?
34
+  I cannot connect to it with telnet)
35
+
36
+# About the ezcMailToolsTest failure: there was a bug in the getmxrr() PHP
37
+  function and I think the failure is caused by that. But we could not find which
38
+  bug was it and in which version it was fixed. With what version of PHP did you test?
39
+
40
+	ezcUnitTest uses the PHPUnit @package_version@ framework from Sebastian Bergmann.
41
+
42
+	[Preparing tests]:
43
+	eZ Components:                          
44
+	  Mail:                                   
45
+		ezcMailTest:                            ........................
46
+
47
+	[snip]
48
+
49
+		ezcMailMultipartDigestTest:             ...
50
+		ezcMailToolsTest:                       ................F..........
51
+		ezcMailTransportMtaTest:                SSL_connect: Success
52
+	sendmail: Cannot open hartes-php.de:25
53
+	FSSL_connect: Success
54
+	sendmail: Cannot open hartes-php.de:25
55
+	F..SSL_connect: Success
56
+	sendmail: Cannot open hartes-php.de:25
57
+	FSSL_connect: Success
58
+	sendmail: Cannot open hartes-php.de:25
59
+	E
60
+		ezcMailTransportSmtpTest:               ..................................
61
+	[snip]
62
+	There was 1 error:
63
+
64
+	1) testEncodedHeaders(ezcMailTransportMtaTest)
65
+	ezcMailTransportException: An error occured while sending or receiving mail. The email could not be sent by sendmail
66
+	/home/dotxp/dev/PHP/actual/ezcomponents/trunk/Mail/tests/transports/transport_mta_test.php:117
67
+
68
+	--
69
+
70
+	There were 4 failures:
71
+
72
+	1) testValidateEmailAddressCorrectMX(ezcMailToolsTest)
73
+	Failed asserting that [email protected] is correct with MX.
74
+	Failed asserting that <boolean:false> matches expected value <boolean:true>.
75
+	/home/dotxp/dev/PHP/actual/ezcomponents/trunk/Mail/tests/tools_test.php:260
76
+
77
+	2) testFullMail(ezcMailTransportMtaTest)
78
+	An error occured while sending or receiving mail. The email could not be sent by sendmail
79
+	/home/dotxp/dev/PHP/actual/ezcomponents/trunk/Mail/tests/transports/transport_mta_test.php:44
80
+
81
+	3) testFullMailMultiple(ezcMailTransportMtaTest)
82
+	An error occured while sending or receiving mail. The email could not be sent by sendmail
83
+	/home/dotxp/dev/PHP/actual/ezcomponents/trunk/Mail/tests/transports/transport_mta_test.php:58
84
+
85
+	4) testFullMailReturnPath(ezcMailTransportMtaTest)
86
+	An error occured while sending or receiving mail. The email could not be sent by sendmail
87
+	/home/dotxp/dev/PHP/actual/ezcomponents/trunk/Mail/tests/transports/transport_mta_test.php:104
88
+
89
+	FAILURES!
90
+	Tests: 602, Failures: 4, Errors: 1, Skipped: 9.
91
+
... ...
@@ -0,0 +1,19 @@
1
+ezcMailPartParser
2
+=================
3
+
4
+[x] The function parseHeader() should be refactored. The new code has in 
5
+    the if() and elseif() case duplicated code that can easily be extracted
6
+    into a new private method.
7
+
8
+    The code is too coupled and the private function will have 4-5 params.
9
+	It applies to only 4 lines of code. The solution which I tried actually
10
+	looks worse than what it is now.
11
+
12
+[x] The test in trunk/Mail/tests/composer_test.php should removed the
13
+    added check for "charset=binary" as that is a bug in PHP (line 647ish)
14
+
15
+[ ] From reading the code, I don't think that it is possible to use
16
+    headers with the same name while creating mail as well. This needs to
17
+    be supported so that mails can be forwarded with all current headers
18
+    in tact. We'd need to add tests for both generation and forwarding/replying
19
+    here.
... ...
@@ -0,0 +1,547 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailComposer class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Convenience class for writing mail.
13
+ *
14
+ * This class allows you to create
15
+ * text and/or HTML mail with attachments. If you need to create more
16
+ * advanced mail use the ezcMail class and build the body from scratch.
17
+ *
18
+ * ezcMailComposer is used with the following steps:
19
+ * 1. Create a composer object.
20
+ * 2. Set the subject and recipients.
21
+ * 3. Set the plainText and htmlText message parts. You can set only one
22
+ *    or both. If you set both, the client will display the htmlText if it
23
+ *    supports HTML. Otherwise the client will display plainText.
24
+ * 4. Add any attachments (addFileAttachment() or addStringAttachment()).
25
+ * 5. Call the build method.
26
+ *
27
+ * This example shows how to send an HTML mail with a text fallback and
28
+ * attachments. The HTML message has an inline image.
29
+ * <code>
30
+ * $mail = new ezcMailComposer();
31
+ * $mail->from = new ezcMailAddress( '[email protected]', 'John Doe' );
32
+ * $mail->addTo( new ezcMailAddress( '[email protected]', 'Cindy Doe' ) );
33
+ * $mail->subject = "Example of an HTML email with attachments";
34
+ * $mail->plainText = "Here is the text version of the mail. This is displayed if the client can not understand HTML";
35
+ * $mail->htmlText = "<html>Here is the HTML version of your mail with an image: <img src='file://path_to_image.jpg' /></html>";
36
+ * $mail->addFileAttachment( 'path_to_attachment.file' );
37
+ * $mail->build();
38
+ * $transport = new ezcMailMtaTransport();
39
+ * $transport->send( $mail );
40
+ * </code>
41
+ *
42
+ * By default, if the htmlText property contains an HTML image tag with file://
43
+ * in href, that file will be included in the created message.
44
+ *
45
+ * Example:
46
+ * <code>
47
+ * <img src="file:///home/me/image.jpg" />
48
+ * </code>
49
+ *
50
+ * This can be a security risk if a user links to another file, for example logs
51
+ * or password files. With the automaticImageInclude option (default value true)
52
+ * from {@link ezcMailComposerOptions}, the automatic inclusion of files can be
53
+ * turned off.
54
+ *
55
+ * Example:
56
+ * <code>
57
+ * $options = new ezcMailComposerOptions();
58
+ * $options->automaticImageInclude = false; // default value is true
59
+ *
60
+ * $mail = new ezcMailComposer( $options );
61
+ *
62
+ * // ... add To, From, Subject, etc to $mail
63
+ * $mail->htmlText = "<html>Here is the image: <img src="file:///etc/passwd" /></html>";
64
+ *
65
+ * // ... send $mail
66
+ * </code>
67
+ *
68
+ * After running the above code, the sent mail will not contain the file specified
69
+ * in the htmlText property.
70
+ *
71
+ * The file name in the attachment can be different than the file name on disk, by
72
+ * passing an {@link ezcMailContentDispositionHeader} object to the function
73
+ * addFileAttachment(). Example:
74
+ * <code>
75
+ * $mail = new ezcMailComposer();
76
+ * $mail->from = new ezcMailAddress( '[email protected]', 'John Doe' );
77
+ * $mail->addTo( new ezcMailAddress( '[email protected]', 'Cindy Doe' ) );
78
+ * $mail->subject = "Example of an HTML email with attachments and custom attachment file name";
79
+ * $mail->plainText = "Here is the text version of the mail. This is displayed if the client can not understand HTML";
80
+ * $mail->htmlText = "<html>Here is the HTML version of your mail with an image: <img src='file://path_to_image.jpg' /></html>";
81
+ *
82
+ * $disposition = new ezcMailContentDispositionHeader();
83
+ * $disposition->fileName = 'custom name for attachment.txt';
84
+ * $disposition->fileNameCharSet = 'utf-8'; // if using non-ascii characters in the file name
85
+ * $disposition->disposition = 'attachment'; // default value is 'inline'
86
+ *
87
+ * $mail->addFileAttachment( 'path_to_attachment.file', null, null, $disposition );
88
+ * $mail->build();
89
+ *
90
+ * $transport = new ezcMailMtaTransport();
91
+ * $transport->send( $mail );
92
+ * </code>
93
+ *
94
+ * Use the function addStringAttachment() if you want to add an attachment which
95
+ * is stored in a string variable. A file name for a string attachment needs to
96
+ * be specified as well. Example:
97
+ *
98
+ * <code>
99
+ * $contents = 'contents for mail attachment'; // can be a binary string, eg. image file contents
100
+ * $mail->addStringAttachment( 'filename', $contents );
101
+ * </code>
102
+ *
103
+ * @property string $plainText
104
+ *           Contains the message of the mail in plain text.
105
+ * @property string $htmlText
106
+ *           Contains the message of the mail in HTML. You should also provide
107
+ *           the text of the HTML message in the plainText property. Both will
108
+ *           be sent and the receiver will see the HTML message if his/her
109
+ *           client supports HTML.  If the HTML message contains links to
110
+ *           local images and/or files these will be included into the mail
111
+ *           when generateBody is called. Links to local files must start with
112
+ *           "file://" in order to be recognized. You can use the option
113
+ *           automaticImageInclude (default value is true) from
114
+ *           {@link ezcMailComposerOptions} to turn off the
115
+ *           automatic inclusion of files in the generated mail.
116
+ * @property string $charset
117
+ *           Contains the character set for both $plainText and $htmlText.
118
+ *           Default value is 'us-ascii'. This does not set any specific
119
+ *           charset for the subject, you need the subjectCharset property for
120
+ *           that.
121
+ * @property string $encoding
122
+ *           Contains the encoding for both $plainText and $htmlText.
123
+ *           Default value is ezcMail::EIGHT_BIT. Other values are found
124
+ *           as constants in the class {@link ezcMail}.
125
+ * @property ezcMailComposerOptions $options
126
+ *           Options for composing mail. See {@link ezcMailComposerOptions}.
127
+ *
128
+ * @package Mail
129
+ * @version 1.7.1
130
+ * @mainclass
131
+ */
132
+class ezcMailComposer extends ezcMail
133
+{
134
+    /**
135
+     * Holds the attachments filenames.
136
+     *
137
+     * The array contains relative or absolute paths to the attachments.
138
+     *
139
+     * @var array(string)
140
+     */
141
+    private $attachments = array();
142
+
143
+    /**
144
+     * Holds the options for this class.
145
+     *
146
+     * @var ezcMailComposerOptions
147
+     */
148
+    protected $options;
149
+
150
+    /**
151
+     * Constructs an empty ezcMailComposer object.
152
+     *
153
+     * @param ezcMailComposerOptions $options
154
+     */
155
+    public function __construct( ezcMailComposerOptions $options = null )
156
+    {
157
+        $this->properties['plainText'] = null;
158
+        $this->properties['htmlText'] = null;
159
+        $this->properties['charset'] = 'us-ascii';
160
+        $this->properties['encoding'] = ezcMail::EIGHT_BIT;
161
+        if ( $options === null )
162
+        {
163
+            $options = new ezcMailComposerOptions();
164
+        }
165
+
166
+        $this->options = $options;
167
+
168
+        parent::__construct( $options );
169
+    }
170
+
171
+    /**
172
+     * Sets the property $name to $value.
173
+     *
174
+     * @throws ezcBasePropertyNotFoundException
175
+     *         if the property does not exist.
176
+     * @param string $name
177
+     * @param mixed $value
178
+     * @ignore
179
+     */
180
+    public function __set( $name, $value )
181
+    {
182
+        switch ( $name )
183
+        {
184
+            case 'plainText':
185
+            case 'htmlText':
186
+            case 'charset':
187
+            case 'encoding':
188
+                $this->properties[$name] = $value;
189
+                break;
190
+
191
+            case 'options':
192
+                if ( !$value instanceof ezcMailComposerOptions )
193
+                {
194
+                    throw new ezcBaseValueException( $name, $value, 'ezcMailComposerOptions' );
195
+                }
196
+
197
+                $this->options = $value;
198
+                break;
199
+
200
+            default:
201
+                parent::__set( $name, $value );
202
+        }
203
+    }
204
+
205
+    /**
206
+     * Returns the property $name.
207
+     *
208
+     * @throws ezcBasePropertyNotFoundException
209
+     *         if the property does not exist.
210
+     * @param string $name
211
+     * @return mixed
212
+     * @ignore
213
+     */
214
+    public function __get( $name )
215
+    {
216
+        switch ( $name )
217
+        {
218
+            case 'plainText':
219
+            case 'htmlText':
220
+            case 'charset':
221
+            case 'encoding':
222
+                return $this->properties[$name];
223
+
224
+            case 'options':
225
+                return $this->options;
226
+
227
+            default:
228
+                return parent::__get( $name );
229
+        }
230
+    }
231
+
232
+    /**
233
+     * Returns true if the property $name is set, otherwise false.
234
+     *
235
+     * @param string $name
236
+     * @return bool
237
+     * @ignore
238
+     */
239
+    public function __isset( $name )
240
+    {
241
+        switch ( $name )
242
+        {
243
+            case 'plainText':
244
+            case 'htmlText':
245
+            case 'charset':
246
+            case 'encoding':
247
+                return isset( $this->properties[$name] );
248
+
249
+            case 'options':
250
+                return isset( $this->options );
251
+
252
+            default:
253
+                return parent::__isset( $name );
254
+        }
255
+    }
256
+
257
+    /**
258
+     * Adds the file $fileName to the list of attachments.
259
+     *
260
+     * If $content is specified, $fileName is not checked if it exists.
261
+     * $this->attachments will also contain in this case the $content,
262
+     * $contentType and $mimeType.
263
+     *
264
+     * The $contentType (default = application) and $mimeType (default =
265
+     * octet-stream) control the complete mime-type of the attachment.
266
+     *
267
+     * If $contentDisposition is specified, the attached file will have its
268
+     * Content-Disposition header set according to the $contentDisposition
269
+     * object and the filename of the attachment in the generated mail will be
270
+     * the one from the $contentDisposition object.
271
+     * 
272
+     * @throws ezcBaseFileNotFoundException
273
+     *         if $fileName does not exists.
274
+     * @throws ezcBaseFilePermissionProblem
275
+     *         if $fileName could not be read.
276
+     * @param string $fileName
277
+     * @param string $content
278
+     * @param string $contentType
279
+     * @param string $mimeType
280
+     * @param ezcMailContentDispositionHeader $contentDisposition
281
+     * @apichange This function might be removed in a future iteration of
282
+     *            the Mail component. Use addFileAttachment() and
283
+     *            addStringAttachment() instead.
284
+     */
285
+    public function addAttachment( $fileName, $content = null, $contentType = null, $mimeType = null, ezcMailContentDispositionHeader $contentDisposition = null )
286
+    {
287
+        if ( is_null( $content ) )
288
+        {
289
+            $this->addFileAttachment( $fileName, $contentType, $mimeType, $contentDisposition );
290
+        }
291
+        else
292
+        {
293
+            $this->addStringAttachment( $fileName, $content, $contentType, $mimeType, $contentDisposition );
294
+        }
295
+    }
296
+
297
+    /**
298
+     * Adds the file $fileName to the list of attachments.
299
+     *
300
+     * The $contentType (default = application) and $mimeType (default =
301
+     * octet-stream) control the complete mime-type of the attachment.
302
+     *
303
+     * If $contentDisposition is specified, the attached file will have its
304
+     * Content-Disposition header set according to the $contentDisposition
305
+     * object and the filename of the attachment in the generated mail will be
306
+     * the one from the $contentDisposition object.
307
+     * 
308
+     * @throws ezcBaseFileNotFoundException
309
+     *         if $fileName does not exists.
310
+     * @throws ezcBaseFilePermissionProblem
311
+     *         if $fileName could not be read.
312
+     * @param string $fileName
313
+     * @param string $contentType
314
+     * @param string $mimeType
315
+     * @param ezcMailContentDispositionHeader $contentDisposition
316
+     */
317
+    public function addFileAttachment( $fileName, $contentType = null, $mimeType = null, ezcMailContentDispositionHeader $contentDisposition = null )
318
+    {
319
+        if ( is_readable( $fileName ) )
320
+        {
321
+            $this->attachments[] = array( $fileName, null, $contentType, $mimeType, $contentDisposition );
322
+        }
323
+        else
324
+        {
325
+            if ( file_exists( $fileName ) )
326
+            {
327
+                throw new ezcBaseFilePermissionException( $fileName, ezcBaseFileException::READ );
328
+            }
329
+            else
330
+            {
331
+                throw new ezcBaseFileNotFoundException( $fileName );
332
+            }
333
+        }
334
+    }
335
+
336
+    /**
337
+     * Adds the file $fileName to the list of attachments, with contents $content.
338
+     *
339
+     * The file $fileName is not checked if it exists. An attachment is added
340
+     * to the mail, with the name $fileName, and the contents $content.
341
+     *
342
+     * The $contentType (default = application) and $mimeType (default =
343
+     * octet-stream) control the complete mime-type of the attachment.
344
+     *
345
+     * If $contentDisposition is specified, the attached file will have its
346
+     * Content-Disposition header set according to the $contentDisposition
347
+     * object and the filename of the attachment in the generated mail will be
348
+     * the one from the $contentDisposition object.
349
+     * 
350
+     * @param string $fileName
351
+     * @param string $content
352
+     * @param string $contentType
353
+     * @param string $mimeType
354
+     * @param ezcMailContentDispositionHeader $contentDisposition
355
+     */
356
+    public function addStringAttachment( $fileName, $content, $contentType = null, $mimeType = null, ezcMailContentDispositionHeader $contentDisposition = null )
357
+    {
358
+        $this->attachments[] = array( $fileName, $content, $contentType, $mimeType, $contentDisposition );
359
+    }
360
+
361
+    /**
362
+     * Builds the complete email message in RFC822 format.
363
+     *
364
+     * This method must be called before the message is sent.
365
+     *
366
+     * @throws ezcBaseFileNotFoundException
367
+     *         if any of the attachment files can not be found.
368
+     */
369
+    public function build()
370
+    {
371
+        $mainPart = false;
372
+
373
+        // create the text part if there is one
374
+        if ( $this->plainText != '' )
375
+        {
376
+            $mainPart = new ezcMailText( $this->plainText, $this->charset );
377
+        }
378
+
379
+        // create the HTML part if there is one
380
+        $htmlPart = false;
381
+        if ( $this->htmlText != '' )
382
+        {
383
+            $htmlPart = $this->generateHtmlPart();
384
+
385
+            // create a MultiPartAlternative if a text part exists
386
+            if ( $mainPart != false )
387
+            {
388
+                $mainPart = new ezcMailMultipartAlternative( $mainPart, $htmlPart );
389
+            }
390
+            else
391
+            {
392
+                $mainPart = $htmlPart;
393
+            }
394
+        }
395
+
396
+        // build all attachments
397
+        // special case, mail with no text and one attachment.
398
+        // A fix for issue #14220 was added by wrapping the attachment in
399
+        // an ezcMailMultipartMixed part
400
+        if ( $mainPart == false && count( $this->attachments ) == 1 )
401
+        {
402
+            if ( isset( $this->attachments[0][1] ) )
403
+            {
404
+                if ( is_resource( $this->attachments[0][1] ) )
405
+                {
406
+                    $mainPart = new ezcMailMultipartMixed( new ezcMailStreamFile( $this->attachments[0][0], $this->attachments[0][1], $this->attachments[0][2], $this->attachments[0][3] ) );
407
+                }
408
+                else
409
+                {
410
+                    $mainPart = new ezcMailMultipartMixed( new ezcMailVirtualFile( $this->attachments[0][0], $this->attachments[0][1], $this->attachments[0][2], $this->attachments[0][3] ) );
411
+                }
412
+            }
413
+            else
414
+            {
415
+                $mainPart = new ezcMailMultipartMixed( new ezcMailFile( $this->attachments[0][0], $this->attachments[0][2], $this->attachments[0][3] ) );
416
+            }
417
+            $mainPart->contentDisposition = $this->attachments[0][4];
418
+        }
419
+        else if ( count( $this->attachments ) > 0 )
420
+        {
421
+            $mainPart = ( $mainPart == false )
422
+                ? new ezcMailMultipartMixed()
423
+                : new ezcMailMultipartMixed( $mainPart );
424
+
425
+            // add the attachments to the mixed part
426
+            foreach ( $this->attachments as $attachment )
427
+            {
428
+                if ( isset( $attachment[1] ) )
429
+                {
430
+                    if ( is_resource( $attachment[1] ) )
431
+                    {
432
+                        $part = new ezcMailStreamFile( $attachment[0], $attachment[1], $attachment[2], $attachment[3] );
433
+                    }
434
+                    else
435
+                    {
436
+                        $part = new ezcMailVirtualFile( $attachment[0], $attachment[1], $attachment[2], $attachment[3] );
437
+                    }
438
+                }
439
+                else
440
+                {
441
+                    $part = new ezcMailFile( $attachment[0], $attachment[2], $attachment[3] );
442
+                }
443
+                $part->contentDisposition = $attachment[4];
444
+                $mainPart->appendPart( $part );
445
+            }
446
+        }
447
+
448
+        $this->body = $mainPart;
449
+    }
450
+
451
+    /**
452
+     * Returns an ezcMailPart based on the HTML provided.
453
+     *
454
+     * This method adds local files/images to the mail itself using a
455
+     * {@link ezcMailMultipartRelated} object.
456
+     *
457
+     * @throws ezcBaseFileNotFoundException
458
+     *         if $fileName does not exists.
459
+     * @throws ezcBaseFilePermissionProblem
460
+     *         if $fileName could not be read.
461
+     * @return ezcMailPart
462
+     */
463
+    private function generateHtmlPart()
464
+    {
465
+        $result = false;
466
+        if ( $this->htmlText != '' )
467
+        {
468
+            $matches = array();
469
+            if ( $this->options->automaticImageInclude === true )
470
+            {
471
+                // recognize file:// and file:///, pick out the image, add it as a part and then..:)
472
+                preg_match_all( '(
473
+                    <img \\s+[^>]*
474
+                        src\\s*=\\s*
475
+                            (?:
476
+                                (?# Match quoted attribute)
477
+                                ([\'"])file://(?P<quoted>[^>]+)\\1
478
+
479
+                                (?# Match unquoted attribute, which may not contain spaces)
480
+                            |   file://(?P<unquoted>[^>\\s]+)
481
+                        )
482
+                    [^>]* >)ix', $this->htmlText, $matches );
483
+                // pictures/files can be added multiple times. We only need them once.
484
+                $matches = array_filter( array_unique( array_merge( $matches['quoted'], $matches['unquoted'] ) ) );
485
+            }
486
+
487
+            $result = new ezcMailText( $this->htmlText, $this->charset, $this->encoding );
488
+            $result->subType = "html";
489
+            if ( count( $matches ) > 0 )
490
+            {
491
+                $htmlPart = $result;
492
+                // wrap already existing message in an alternative part
493
+                $result = new ezcMailMultipartRelated( $result );
494
+
495
+                // create a filepart and add it to the related part
496
+                // also store the ID for each part since we need those
497
+                // when we replace the originals in the HTML message.
498
+                foreach ( $matches as $fileName )
499
+                {
500
+                    if ( is_readable( $fileName ) )
501
+                    {
502
+                        // @todo waiting for fix of the fileinfo extension
503
+                        // $contents = file_get_contents( $fileName );
504
+                        $mimeType = null;
505
+                        $contentType = null;
506
+                        if ( ezcBaseFeatures::hasExtensionSupport( 'fileinfo' ) )
507
+                        {
508
+                            // if fileinfo extension is available
509
+                            $filePart = new ezcMailFile( $fileName );
510
+                        }
511
+                        elseif ( ezcMailTools::guessContentType( $fileName, $contentType, $mimeType ) )
512
+                        {
513
+                            // if fileinfo extension is not available try to get content/mime type
514
+                            // from the file extension
515
+                            $filePart = new ezcMailFile( $fileName, $contentType, $mimeType );
516
+                        }
517
+                        else
518
+                        {
519
+                            // fallback in case fileinfo is not available and could not get content/mime
520
+                            // type from file extension
521
+                            $filePart = new ezcMailFile( $fileName, "application", "octet-stream" );
522
+                        }
523
+                        $cid = $result->addRelatedPart( $filePart );
524
+                        // replace the original file reference with a reference to the cid
525
+                        $this->htmlText = str_replace( 'file://' . $fileName, 'cid:' . $cid, $this->htmlText );
526
+                    }
527
+                    else
528
+                    {
529
+                        if ( file_exists( $fileName ) )
530
+                        {
531
+                            throw new ezcBaseFilePermissionException( $fileName, ezcBaseFileException::READ );
532
+                        }
533
+                        else
534
+                        {
535
+                            throw new ezcBaseFileNotFoundException( $fileName );
536
+                        }
537
+                        // throw
538
+                    }
539
+                }
540
+                // update mail, with replaced URLs
541
+                $htmlPart->text = $this->htmlText;
542
+            }
543
+        }
544
+        return $result;
545
+    }
546
+}
547
+?>
... ...
@@ -0,0 +1,31 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailInvalidLimitException class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * The ezcMailInvalidLimitException is thrown when request is made to
13
+ * fetch messages with the offset outside of the existing message range.
14
+ *
15
+ * @package Mail
16
+ * @version 1.7.1
17
+ */
18
+class ezcMailInvalidLimitException extends ezcMailException
19
+{
20
+    /**
21
+     * Constructs an ezcMailInvalidLimitException
22
+     *
23
+     * @param mixed $offset
24
+     * @param mixed $count
25
+     */
26
+    public function __construct( $offset, $count )
27
+    {
28
+        parent::__construct( "The message count '{$count}' is not allowed for the message subset '{$offset}', '{$count}'." );
29
+    }
30
+}
31
+?>
... ...
@@ -0,0 +1,29 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailException class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+/**
11
+ * ezcMailExceptions are thrown when an exceptional state
12
+ * occures in the Mail package.
13
+ *
14
+ * @package Mail
15
+ * @version 1.7.1
16
+ */
17
+class ezcMailException extends ezcBaseException
18
+{
19
+    /**
20
+     * Constructs a new ezcMailException with error message $message.
21
+     *
22
+     * @param string $message
23
+     */
24
+    public function __construct( $message )
25
+    {
26
+        parent::__construct( $message );
27
+    }
28
+}
29
+?>
... ...
@@ -0,0 +1,30 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailNoSuchMessageException class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * The ezcMailNoSuchMessageException is thrown when a message with an ID is
13
+ * requested that doesn't exist in the transport.
14
+ *
15
+ * @package Mail
16
+ * @version 1.7.1
17
+ */
18
+class ezcMailNoSuchMessageException extends ezcMailException
19
+{
20
+    /**
21
+     * Constructs an ezcMailNoSuchMessageException
22
+     *
23
+     * @param mixed $messageId
24
+     */
25
+    public function __construct( $messageId )
26
+    {
27
+        parent::__construct( "The message with ID '{$messageId}' could not be found." );
28
+    }
29
+}
30
+?>
... ...
@@ -0,0 +1,31 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailOffsetOutOfRangeException class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * The ezcMailOffsetOutOfRangeException is thrown when request is made to
13
+ * fetch messages with the offset outside of the existing message range.
14
+ *
15
+ * @package Mail
16
+ * @version 1.7.1
17
+ */
18
+class ezcMailOffsetOutOfRangeException extends ezcMailException
19
+{
20
+    /**
21
+     * Constructs an ezcMailOffsetOutOfRangeException
22
+     *
23
+     * @param mixed $offset
24
+     * @param mixed $count
25
+     */
26
+    public function __construct( $offset, $count )
27
+    {
28
+        parent::__construct( "The offset '{$offset}' is outside of the message subset '{$offset}', '{$count}'." );
29
+    }
30
+}
31
+?>
... ...
@@ -0,0 +1,30 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailTransportException class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Transport exceptions are thrown when either sending or receiving
13
+ * mail transports fail to do their job properly.
14
+ *
15
+ * @package Mail
16
+ * @version 1.7.1
17
+ */
18
+class ezcMailTransportException extends ezcMailException
19
+{
20
+    /**
21
+     * Constructs an ezcMailTransportException with low level information $message.
22
+     *
23
+     * @param string $message
24
+     */
25
+    public function __construct( $message = '' )
26
+    {
27
+        parent::__construct( "An error occured while sending or receiving mail. " . $message );
28
+    }
29
+}
30
+?>
... ...
@@ -0,0 +1,34 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailTransportSmtpException class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ * @access private
10
+ */
11
+
12
+/**
13
+ * ezcMailTransportSmtpException is thrown when an exceptional state
14
+ * occures internally in the ezcMailSmtpTransport class. As it never enters
15
+ * "userspace" the class is marked as private.
16
+ *
17
+ * @package Mail
18
+ * @version 1.7.1
19
+ * @access private
20
+ */
21
+class ezcMailTransportSmtpException extends ezcMailException
22
+{
23
+    /**
24
+     * Constructs an ezcMailTransportSmtpException with the highlevel error
25
+     * message $message.
26
+     *
27
+     * @param string $message
28
+     */
29
+    public function __construct( $message )
30
+    {
31
+        parent::__construct( $message );
32
+    }
33
+}
34
+?>
... ...
@@ -0,0 +1,467 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailPart class.
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Abstract base class for all mail MIME parts.
13
+ *
14
+ * This base class provides functionality to store headers and to generate
15
+ * the mail part. Implementations of this class must handle the body of that
16
+ * parts themselves. They must also implement {@link generateBody()} which is
17
+ * called when the message part is generated.
18
+ *
19
+ * @property ezcMailContentDispositionHeader $contentDisposition
20
+ *           Contains the information from the Content-Disposition field of
21
+ *           this mail.  This useful especially when you are investigating
22
+ *           retrieved mail to see if a part is an attachment or should be
23
+ *           displayed inline.  However, it can also be used to set the same
24
+ *           on outgoing mail. Note that the ezcMailFile part sets the
25
+ *           Content-Disposition field itself based on it's own properties
26
+ *           when sending mail.
27
+ * @property int $size
28
+ *           The size of the mail part in bytes. It is set when parsing a
29
+ *           mail {@link ezcMailParser->parseMail()}.
30
+ * @property-read ezcMailHeadersHolder $headers
31
+ *                Contains the header holder object, taking care of the
32
+ *                headers of this part. Can be retreived for reasons of
33
+ *                extending this class and its derivals.
34
+ *
35
+ * @package Mail
36
+ * @version 1.7.1
37
+ */
38
+abstract class ezcMailPart
39
+{
40
+    /**
41
+     * An associative array containing all the headers set for this part.
42
+     *
43
+     * @var ezcMailHeadersHolder
44
+     */
45
+    private $headers = null;
46
+
47
+    /**
48
+     * An associative array containing the charsets for the headers in this
49
+     * part.
50
+     *
51
+     * @var array(string=>string)
52
+     */
53
+    private $headerCharsets = array();
54
+
55
+    /**
56
+     * An array of headers to exclude when generating the headers.
57
+     *
58
+     * @var array(string)
59
+     */
60
+    private $excludeHeaders = array();
61
+
62
+    /**
63
+     * Holds the properties of this class.
64
+     *
65
+     * @var array(string=>mixed)
66
+     */
67
+    protected $properties = array();
68
+
69
+    /**
70
+     * Constructs a new mail part.
71
+     */
72
+    public function __construct()
73
+    {
74
+        $this->headers = new ezcMailHeadersHolder();
75
+    }
76
+
77
+    /**
78
+     * Sets the property $name to $value.
79
+     *
80
+     * @throws ezcBasePropertyNotFoundException
81
+     *         if the property does not exist.
82
+     * @throws ezcBasePropertyPermissionException
83
+     *         if the property is read-only.
84
+     * @param string $name
85
+     * @param mixed $value
86
+     * @ignore
87
+     */
88
+    public function __set( $name, $value )
89
+    {
90
+        switch ( $name )
91
+        {
92
+            case 'contentDisposition':
93
+            case 'size':
94
+                $this->properties[$name] = $value;
95
+                break;
96
+
97
+            case 'headers':
98
+                throw new ezcBasePropertyPermissionException( $name, ezcBasePropertyPermissionException::READ );
99
+
100
+            default:
101
+                throw new ezcBasePropertyNotFoundException( $name );
102
+        }
103
+    }
104
+
105
+    /**
106
+     * Returns the property $name.
107
+     *
108
+     * @throws ezcBasePropertyNotFoundException
109
+     *         if the property does not exist.
110
+     * @param string $name
111
+     * @return mixed
112
+     * @ignore
113
+     */
114
+    public function __get( $name )
115
+    {
116
+        switch ( $name )
117
+        {
118
+            case 'contentDisposition':
119
+            case 'size':
120
+                return isset( $this->properties[$name] ) ? $this->properties[$name] : null;
121
+
122
+            case "headers":
123
+                return $this->headers;
124
+
125
+            default:
126
+                throw new ezcBasePropertyNotFoundException( $name );
127
+
128
+        }
129
+    }
130
+
131
+    /**
132
+     * Returns true if the property $name is set, otherwise false.
133
+     *
134
+     * @param string $name
135
+     * @return bool
136
+     * @ignore
137
+     */
138
+    public function __isset( $name )
139
+    {
140
+        switch ( $name )
141
+        {
142
+            case 'contentDisposition':
143
+            case 'size':
144
+                return isset( $this->properties[$name] );
145
+
146
+            case "headers":
147
+                return isset( $this->headers );
148
+
149
+            default:
150
+                return false;
151
+        }
152
+    }
153
+
154
+    /**
155
+     * Returns the RAW value of the header $name.
156
+     *
157
+     * Returns an empty string if the header is not found.
158
+     * Getting headers is case insensitive. Getting the header
159
+     * 'Message-Id' will match both 'Message-ID' and 'MESSAGE-ID'
160
+     * as well as 'Message-Id'.
161
+     *
162
+     * The raw value is MIME-encoded, so if you want to decode it,
163
+     * use {@link ezcMailTools::mimeDecode()} or implement your own
164
+     * MIME-decoding function.
165
+     *
166
+     * If $returnAllValues is true, the function will return all
167
+     * the values of the header $name from the mail in an array. If
168
+     * it is false it will return only the first value as a string
169
+     * if there are multiple values present in the mail.
170
+     *
171
+     * @param string $name
172
+     * @param bool $returnAllValues
173
+     * @return mixed
174
+     */
175
+    public function getHeader( $name, $returnAllValues = false )
176
+    {
177
+        if ( isset( $this->headers[$name] ) )
178
+        {
179
+            if ( $returnAllValues === true )
180
+            {
181
+                return $this->headers[$name];
182
+            }
183
+            else if ( is_array( $this->headers[$name] ) )
184
+            {
185
+                // return only the first value in order to not break compatibility
186
+                // see issue #14257
187
+                return $this->headers[$name][0];
188
+            }
189
+            else
190
+            {
191
+                return $this->headers[$name];
192
+            }
193
+        }
194
+        return '';
195
+    }
196
+
197
+    /**
198
+     * Sets the header $name to the value $value and its charset to $charset.
199
+     *
200
+     * If the header is already set it will override the old value.
201
+     *
202
+     * Headers set should be folded at 76 or 998 characters according to
203
+     * the folding rules described in RFC 2822.
204
+     *
205
+     * If $charset is specified, it is associated with the header $name. It
206
+     * defaults to 'us-ascii' if not specified. The text in $value is encoded
207
+     * with $charset after calling generateHeaders().
208
+     *
209
+     * Note: The header Content-Disposition will be overwritten by the
210
+     * contents of the contentsDisposition property if set.
211
+     *
212
+     * @see generateHeaders()
213
+     *
214
+     * @param string $name
215
+     * @param string $value
216
+     * @param string $charset
217
+     */
218
+    public function setHeader( $name, $value, $charset = 'us-ascii' )
219
+    {
220
+        $this->headers[$name] = $value;
221
+        $this->setHeaderCharset( $name, $charset );
222
+    }
223
+
224
+    /**
225
+     * Adds the headers $headers.
226
+     *
227
+     * The headers specified in the associative array $headers will overwrite
228
+     * any existing header values.
229
+     *
230
+     * The array $headers can have one of these 2 forms:
231
+     *  - array( header_name => header_value ) - by default the 'us-ascii' charset
232
+     *    will be associated with all headers
233
+     *  - array( header_name => array( header_value, header_charset ) ) - if
234
+     *    header_charset is missing it will default to 'us-ascii'
235
+     *
236
+     * Headers set should be folded at 76 or 998 characters according to
237
+     * the folding rules described in RFC 2822.
238
+     *
239
+     * @param array(string=>mixed) $headers
240
+     */
241
+    public function setHeaders( array $headers )
242
+    {
243
+        foreach ( $headers as $key => $value )
244
+        {
245
+            if ( is_array( $value ) )
246
+            {
247
+                $this->headers[$key] = $value[0];
248
+                $charset = isset( $value[1] ) ? $value[1] : 'us-ascii';
249
+                $this->setHeaderCharset( $key, $charset );
250
+            }
251
+            else
252
+            {
253
+                $this->headers[$key] = $value;
254
+                $this->setHeaderCharset( $key );
255
+            }
256
+        }
257
+    }
258
+
259
+    /**
260
+     * Returns the headers set for this part as a RFC 822 string.
261
+     *
262
+     * Each header is separated by a line break.
263
+     * This method does not add the required two lines of space
264
+     * to separate the headers from the body of the part.
265
+     *
266
+     * It also encodes the headers (with the 'Q' encoding) if the charset
267
+     * associated with the header is different than 'us-ascii' or if it
268
+     * contains characters not allowed in mail headers.
269
+     *
270
+     * This function is called automatically by generate() and
271
+     * subclasses can override this method if they wish to set additional
272
+     * headers when the mail is generated.
273
+     *
274
+     * @see setHeader()
275
+     *
276
+     * @return string
277
+     */
278
+    public function generateHeaders()
279
+    {
280
+        // set content disposition header
281
+        if ( $this->contentDisposition !== null &&
282
+            ( $this->contentDisposition instanceof ezcMailContentDispositionHeader ) )
283
+        {
284
+            $cdHeader = $this->contentDisposition;
285
+            $cd = "{$cdHeader->disposition}";
286
+            if ( $cdHeader->fileName !== null )
287
+            {
288
+                $fileInfo = null;
289
+                if ( $cdHeader->fileNameCharSet !== null )
290
+                {
291
+                    $fileInfo .= "*0*=\"{$cdHeader->fileNameCharSet}";
292
+                    if ( $cdHeader->fileNameLanguage !== null )
293
+                    {
294
+                        $fileInfo .= "'{$cdHeader->fileNameLanguage}'";
295
+                    }
296
+                    else
297
+                    {
298
+                        // RFC 2184: the single quote delimiters MUST be present
299
+                        // even when one of the field values is omitted
300
+                        $fileInfo .= "''";
301
+                    }
302
+                }
303
+                if ( $fileInfo !== null )
304
+                {
305
+                    $cd .= "; filename{$fileInfo}{$cdHeader->fileName}\"";
306
+                }
307
+                else
308
+                {
309
+                    $cd .= "; filename=\"{$cdHeader->fileName}\"";
310
+                }
311
+            }
312
+
313
+            if ( $cdHeader->creationDate !== null )
314
+            {
315
+                $cd .= "; creation-date=\"{$cdHeader->creationDate}\"";
316
+            }
317
+
318
+            if ( $cdHeader->modificationDate !== null )
319
+            {
320
+                $cd .= "; modification-date=\"{$cdHeader->modificationDate}\"";
321
+            }
322
+
323
+            if ( $cdHeader->readDate !== null )
324
+            {
325
+                $cd .= "; read-date=\"{$cdHeader->readDate}\"";
326
+            }
327
+
328
+            if ( $cdHeader->size !== null )
329
+            {
330
+                $cd .= "; size={$cdHeader->size}";
331
+            }
332
+
333
+            foreach ( $cdHeader->additionalParameters as $addKey => $addValue )
334
+            {
335
+                $cd .="; {$addKey}=\"{$addValue}\"";
336
+            }
337
+
338
+            $this->setHeader( 'Content-Disposition', $cd );
339
+        }
340
+
341
+        // generate headers
342
+        $text = "";
343
+        foreach ( $this->headers->getCaseSensitiveArray() as $header => $value )
344
+        {
345
+            if ( is_array( $value ) )
346
+            {
347
+                $value = $value[0];
348
+            }
349
+
350
+            // here we encode every header, even the ones that we don't add to
351
+            // the header set directly. We do that so that transports sill see
352
+            // all the encoded headers which they then can use accordingly.
353
+            $charset = $this->getHeaderCharset( $header );
354
+            switch ( strtolower( $charset ) )
355
+            {
356
+                case 'us-ascii':
357
+                    $value = ezcMailHeaderFolder::foldAny( $value );
358
+                    break;
359
+
360
+                case 'iso-8859-1': case 'iso-8859-2': case 'iso-8859-3': case 'iso-8859-4':
361
+                case 'iso-8859-5': case 'iso-8859-6': case 'iso-8859-7': case 'iso-8859-8':
362
+                case 'iso-8859-9': case 'iso-8859-10': case 'iso-8859-11': case 'iso-8859-12':
363
+                case 'iso-8859-13': case 'iso-8859-14': case 'iso-8859-15' :case 'iso-8859-16':
364
+                case 'windows-1250': case 'windows-1251': case 'windows-1252':
365
+                case 'utf-8':
366
+                    if ( strpbrk( $value, "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff" ) === false )
367
+                    {
368
+                        $value = ezcMailHeaderFolder::foldAny( $value );
369
+                        break;
370
+                    }
371
+                    // break intentionally missing
372
+
373
+                default:
374
+                    $preferences = array(
375
+                        'input-charset' => $charset,
376
+                        'output-charset' => $charset,
377
+                        'line-length' => ezcMailHeaderFolder::getLimit(),
378
+                        'scheme' => 'Q',
379
+                        'line-break-chars' => ezcMailTools::lineBreak()
380
+                    );
381
+                    $value = iconv_mime_encode( 'dummy', $value, $preferences );
382
+                    $value = substr( $value, 7 ); // "dummy: " + 1
383
+
384
+                    // just to keep compatibility with code which might read
385
+                    // the headers after generateHeaders() has been called
386
+                    $this->setHeader( $header, $value, $charset );
387
+                    break;
388
+            }
389
+
390
+            if ( in_array( strtolower( $header ), $this->excludeHeaders ) === false )
391
+            {
392
+                 $text .= "$header: $value" . ezcMailTools::lineBreak();
393
+            }
394
+        }
395
+
396
+        return $text;
397
+    }
398
+
399
+    /**
400
+     * The array $headers will be excluded when the headers are generated.
401
+     *
402
+     * @see generateHeaders()
403
+     *
404
+     * @param array(string) $headers
405
+     */
406
+    public function appendExcludeHeaders( array $headers )
407
+    {
408
+        $lowerCaseHeaders = array();
409
+        foreach ( $headers as $header )
410
+        {
411
+            $lowerCaseHeaders[] = strtolower( $header );
412
+        }
413
+        $this->excludeHeaders = array_merge( $this->excludeHeaders, $lowerCaseHeaders );
414
+    }
415
+
416
+    /**
417
+     * Returns the body of this part as a string.
418
+     *
419
+     * This method is called automatically by generate() and subclasses must
420
+     * implement it.
421
+     *
422
+     * @return string
423
+     */
424
+    abstract public function generateBody();
425
+
426
+    /**
427
+     * Returns the complete mail part including both the header and the body
428
+     * as a string.
429
+     *
430
+     * @return string
431
+     */
432
+    public function generate()
433
+    {
434
+        return $this->generateHeaders() . ezcMailTools::lineBreak() . $this->generateBody();
435
+    }
436
+
437
+    /**
438
+     * Returns the charset registered for the header $name.
439
+     *
440
+     * @param string $name
441
+     * @return string
442
+     */
443
+    protected function getHeaderCharset( $name )
444
+    {
445
+        if ( isset( $this->headerCharsets[$name] ) )
446
+        {
447
+            return $this->headerCharsets[$name];
448
+        }
449
+
450
+        // if no charset is set then return 'us-ascii'
451
+        return 'us-ascii';
452
+    }
453
+
454
+    /**
455
+     * Sets the charset of the header $name to $value.
456
+     *
457
+     * If $value is not specified it defaults to 'us-ascii'.
458
+     *
459
+     * @param string $name
460
+     * @param string $value
461
+     */
462
+    protected function setHeaderCharset( $name, $value = 'us-ascii' )
463
+    {
464
+        $this->headerCharsets[$name] = $value;
465
+    }
466
+}
467
+?>
... ...
@@ -0,0 +1,28 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailTransport class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Interface for classes that implement a mail transport.
13
+ *
14
+ * Subclasses must implement the send() method.
15
+ *
16
+ * @package Mail
17
+ * @version 1.7.1
18
+ */
19
+interface ezcMailTransport
20
+{
21
+    /**
22
+     * Sends the contents of $mail.
23
+     *
24
+     * @param ezcMail $mail
25
+     */
26
+    public function send( ezcMail $mail );
27
+}
28
+?>
... ...
@@ -0,0 +1,129 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailCharsetConverter class.
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Class containing common character set conversion methods.
13
+ *
14
+ * By calling the static function ezcMailCharsetConverter::setConvertMethod()
15
+ * before doing mail parsing, another callback function can be used for
16
+ * character conversion to UTF-8 in place of the normal iconv() conversion.
17
+ *
18
+ * The callback function must have this signature:
19
+ * <code>
20
+ * public static function function_name( $text, $originalCharset );
21
+ * </code>
22
+ *
23
+ * where:
24
+ *  - $text = string to convert to UTF-8
25
+ *  - $originalCharset = in what charset is $text
26
+ *
27
+ * Example:
28
+ * <code>
29
+ * // specify another function for character set conversion
30
+ * ezcMailCharsetConverter::setConvertMethod( array( 'myConverter', 'convertToUTF8IconvIgnore' ) );
31
+ *
32
+ * // ...code for mail parsing...
33
+ * </code>
34
+ *
35
+ * where myConverter is (along with some other examples of charset conversion
36
+ * functions which can be used):
37
+ * <code>
38
+ * class myConverter
39
+ * {
40
+ *     public static function convertToUTF8IconvIgnore( $text, $originalCharset )
41
+ *     {
42
+ *         if ( $originalCharset === 'unknown-8bit' || $originalCharset === 'x-user-defined' )
43
+ *         {
44
+ *             $originalCharset = "latin1";
45
+ *         }
46
+ *         return iconv( $originalCharset, 'utf-8//IGNORE', $text );
47
+ *     }
48
+ *
49
+ *     public static function convertToUTF8IconvTranslit( $text, $originalCharset )
50
+ *     {
51
+ *         if ( $originalCharset === 'unknown-8bit' || $originalCharset === 'x-user-defined' )
52
+ *         {
53
+ *             $originalCharset = "latin1";
54
+ *         }
55
+ *         return iconv( $originalCharset, 'utf-8//TRANSLIT', $text );
56
+ *     }
57
+ *
58
+ *     public static function convertToUTF8Mbstring( $text, $originalCharset )
59
+ *     {
60
+ *         return mb_convert_encoding( $text, "UTF-8", $originalCharset );
61
+ *     }
62
+ * }
63
+ * </code>
64
+ *
65
+ * Developers can choose to use the error suppresion operator ('@') in front of
66
+ * the iconv() calls in the above examples, in order to ignore the notices thrown
67
+ * when processing broken text (issue #8369).
68
+ *
69
+ * @package Mail
70
+ * @version 1.7.1
71
+ */
72
+class ezcMailCharsetConverter
73
+{
74
+    /**
75
+     * Callback function to use for character set conversion to UTF8.
76
+     *
77
+     * @var callback
78
+     */
79
+    private static $method = array( __CLASS__, 'convertToUTF8Iconv' );
80
+
81
+    /**
82
+     * Sets the callback function used for character set conversion to UTF-8.
83
+     *
84
+     * Call this method before doing mail parsing if you need a special way
85
+     * of converting the character set to UTF-8.
86
+     *
87
+     * @param callback $method
88
+     */
89
+    public static function setConvertMethod( $method )
90
+    {
91
+        self::$method = $method;
92
+    }
93
+
94
+    /**
95
+     * Converts the $text with the charset $originalCharset to UTF-8.
96
+     *
97
+     * It calls the function specified by using the static method
98
+     * setConvertMethod(). By default it calls convertToUTF8Iconv() defined
99
+     * in this class.
100
+     *
101
+     * @param string $text
102
+     * @param string $originalCharset
103
+     * @return string
104
+     */
105
+    public static function convertToUTF8( $text, $originalCharset )
106
+    {
107
+        return call_user_func( self::$method, $text, $originalCharset );
108
+    }
109
+
110
+    /**
111
+     * Converts the $text with the charset $originalCharset to UTF-8.
112
+     *
113
+     * In case $originalCharset is 'unknown-8bit' or 'x-user-defined' then
114
+     * it is assumed to be 'latin1' (ISO-8859-1).
115
+     *
116
+     * @param string $text
117
+     * @param string $originalCharset
118
+     * @return string
119
+     */
120
+    public static function convertToUTF8Iconv( $text, $originalCharset )
121
+    {
122
+        if ( $originalCharset === 'unknown-8bit' || $originalCharset === 'x-user-defined' )
123
+        {
124
+            $originalCharset = "latin1";
125
+        }
126
+        return iconv( $originalCharset, 'utf-8', $text );
127
+    }
128
+}
129
+?>
... ...
@@ -0,0 +1,146 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailHeaderFolder class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ * @access private
10
+ */
11
+
12
+/**
13
+ * Internal class folding headers according to RFC 2822.
14
+ *
15
+ * RFC 2822 specifies two line length restrictions:
16
+ *
17
+ * "There are two limits that this standard places on the number of
18
+ *  characters in a line. Each line of characters MUST be no more than
19
+ *  998 characters, and SHOULD be no more than 78 characters, excluding
20
+ *  the CRLF."
21
+ *
22
+ * The 76 character limit is because of readability. The 998 character limit
23
+ * is a result of SMTP limitations.
24
+ *
25
+ * The rule for folding is:
26
+ * "wherever this standard allows for folding white space (not
27
+ *  simply WSP characters), a CRLF may be inserted before any WSP."
28
+ *
29
+ * This is described in more detail in section 3.2.3.
30
+ *
31
+ * @package Mail
32
+ * @version 1.7.1
33
+ * @access private
34
+ */
35
+class ezcMailHeaderFolder
36
+{
37
+    /**
38
+     * The soft limit of 76 characters per line.
39
+     */
40
+    const SOFT_LIMIT = 76;
41
+
42
+    /**
43
+     * The soft limit of 998 characters per line.
44
+     */
45
+    const HARD_LIMIT = 998;
46
+
47
+    /**
48
+     * The default folding limit.
49
+     *
50
+     * @var int
51
+     */
52
+    static private $limit = 76;
53
+
54
+    /**
55
+     * Sets the number of allowed characters before folding to $numCharacters.
56
+     *
57
+     * $numCharacters must be one of:
58
+     * - ezcMailHeaderFolder::SOFT_LIMIT (76 characters)
59
+     * - ezcMailHeaderFolder::HARD_LIMIT (998 characters)
60
+     *
61
+     * @param int $numCharacters
62
+     */
63
+    static public function setLimit( $numCharacters )
64
+    {
65
+        self::$limit = $numCharacters;
66
+    }
67
+
68
+    /**
69
+     * Returns the maximum number of characters allowed per line.
70
+     *
71
+     * @return int
72
+     */
73
+    static public function getLimit()
74
+    {
75
+        return self::$limit;
76
+    }
77
+
78
+    /**
79
+     * Returns $text folded to the 998 character limit on any whitespace.
80
+     *
81
+     * The algorithm tries to minimize the number of comparisons by searching
82
+     * backwards from the maximum number of allowed characters on a line.
83
+     *
84
+     * @param string $text
85
+     * @return string
86
+     */
87
+    static public function foldAny( $text )
88
+    {
89
+        // Don't fold unless we have to.
90
+        if ( strlen( $text ) <= self::$limit )
91
+        {
92
+            return $text;
93
+        }
94
+
95
+        // go to 998'th char.
96
+        // search back to whitespace
97
+        // fold
98
+
99
+        $length = strlen( $text );
100
+        $folded = "";
101
+        // find first occurence of whitespace searching backwards
102
+        $search = 0;
103
+        $previousFold = 0;
104
+
105
+        while ( ( $search + self::$limit ) < $length )
106
+        {
107
+            // search from the max possible length of the substring
108
+            $search += self::$limit;
109
+            while ( $text[$search] != " " && $text[$search] != "\t" && $search > $previousFold )
110
+            {
111
+                $search--;
112
+            }
113
+
114
+            if ( $search == $previousFold )
115
+            {
116
+                // continuous string of more than limit chars.
117
+                // We will just have to continue searching forwards to the next whitespace instead
118
+                // This is not confirming to standard.. but what can we do?
119
+                $search += self::$limit; // back to where we started
120
+                while ( $search < $length && $text[$search] != " " && $text[$search] != "\t" )
121
+                {
122
+                    $search++;
123
+                }
124
+            }
125
+
126
+            // lets fold
127
+            if ( $folded === "" )
128
+            {
129
+                $folded = substr( $text, $previousFold, $search - $previousFold );
130
+            }
131
+            else
132
+            {
133
+                $folded .= ezcMailTools::lineBreak() .
134
+                           substr( $text, $previousFold, $search - $previousFold );
135
+            }
136
+            $previousFold = $search;
137
+        }
138
+        // we need to append the rest if there is any
139
+        if ( $search < $length )
140
+        {
141
+            $folded .= ezcMailTools::lineBreak() . substr( $text, $search );
142
+        }
143
+        return $folded;
144
+    }
145
+}
146
+?>
... ...
@@ -0,0 +1,547 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMail class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * The main mail class.
13
+ *
14
+ * You can use ezcMail together with the other classes derived from ezcMailPart
15
+ * to build email messages. When the mail is built, use the Transport classes
16
+ * to send the mail.
17
+ *
18
+ * This example builds and sends a simple text mail message:
19
+ * <code>
20
+ * $mail = new ezcMail;
21
+ * $mail->from = new ezcMailAddress( '[email protected]', 'Adrian Ripburger' );
22
+ * $mail->addTo( new ezcMailAddress( '[email protected]', 'Maureen Corley' ) );
23
+ * $mail->subject = "Hi";
24
+ * $mail->body = new ezcMailText( "I just mail to say I love you!" );
25
+ * $transport = new ezcMailMtaTransport();
26
+ * $transport->send( $mail );
27
+ * </code>
28
+ *
29
+ * By default, the ezcMail class will generate a mail with the Bcc header inside,
30
+ * and leave it to the SMTP server to strip the Bcc header. This can pose a
31
+ * problem with some SMTP servers which do not strip the Bcc header
32
+ * (issue #16154: Bcc headers are not stripped when using SMTP). Use the option
33
+ * stripBccHeader from {@link ezcMailOptions} to delete the Bcc header from
34
+ * the mail before it is sent.
35
+ *
36
+ * Example:
37
+ * <code>
38
+ * $options = new ezcMailOptions();
39
+ * $options->stripBccHeader = true; // default value is false
40
+ *
41
+ * $mail = new ezcMail( $options );
42
+ *
43
+ * You can also derive your own mail classes from this class if you have
44
+ * special requirements. An example of this is the ezcMailComposer class which
45
+ * is a convenience class to send simple mail structures and HTML mail.
46
+ *
47
+ * There are several headers you can set on the mail object to achieve various
48
+ * effects:
49
+ * - Reply-To - Set this to an email address if you want people to reply to an
50
+ *              address other than the from address.
51
+ * - Errors-To - If the mail can not be delivered the error message will be
52
+ *               sent to this address.
53
+ *
54
+ * @property ezcMailAddress        $from Contains the from address as an
55
+ *                                       ezcMailAddress object.
56
+ * @property array(ezcMailAddress) $to   Contains an array of ezcMailAddress objects.
57
+ * @property array(ezcMailAddress) $cc   Contains an array of ezcMailAddress objects.
58
+ * @property array(ezcMailAddress) $bcc  Contains an array of ezcMailAddress objects.
59
+ * @property string                $subject
60
+ *                                       Contains the subject of the e-mail.
61
+ *                                       Use setSubject if you require a
62
+ *                                       special encoding.
63
+ * @property string                $subjectCharset
64
+ *                                       The encoding of the subject.
65
+ * @property ezcMailPart           $body The body part of the message.
66
+ *
67
+ * @property-read string           $messageId
68
+ *                                       The message ID of the message. Treat
69
+ *                                       as read-only unless you're 100% sure
70
+ *                                       what you're doing. Also accessible through
71
+ *                                       the deprecated property messageID.
72
+ * @property-read integer          $timestamp
73
+ *                                       The date/time of when the message was
74
+ *                                       sent as Unix Timestamp.
75
+ * @property ezcMailAddress        $returnPath Contains the Return-Path address as an
76
+ *                                             ezcMailAddress object.
77
+ * @property ezcMailOptions $options
78
+ *           Options for generating mail. See {@link ezcMailOptions}.
79
+ *
80
+ * @apichange Remove the support for the deprecated property messageID.
81
+ *
82
+ * @package Mail
83
+ * @version 1.7.1
84
+ * @mainclass
85
+ */
86
+class ezcMail extends ezcMailPart
87
+{
88
+    /**
89
+     * 7 bit encoding.
90
+     */
91
+    const SEVEN_BIT = "7bit";
92
+
93
+    /**
94
+     * 8 bit encoding.
95
+     */
96
+    const EIGHT_BIT = "8bit";
97
+
98
+    /**
99
+     * Binary encoding.
100
+     */
101
+    const BINARY = "binary";
102
+
103
+    /**
104
+     * Quoted printable encoding.
105
+     */
106
+    const QUOTED_PRINTABLE = "quoted-printable";
107
+
108
+    /**
109
+     * Base 64 encoding.
110
+     */
111
+    const BASE64 = "base64";
112
+
113
+    /**
114
+     * Holds the options for this class.
115
+     *
116
+     * @var ezcMailOptions
117
+     */
118
+    protected $options;
119
+
120
+    /**
121
+     * Constructs an empty ezcMail object.
122
+     */
123
+    public function __construct( ezcMailOptions $options = null )
124
+    {
125
+        parent::__construct();
126
+
127
+        $this->properties['from'] = null;
128
+        $this->properties['to'] = array();
129
+        $this->properties['cc'] = array();
130
+        $this->properties['bcc'] = array();
131
+        $this->properties['subject'] = null;
132
+        $this->properties['subjectCharset'] = 'us-ascii';
133
+        $this->properties['body'] = null;
134
+        $this->properties['messageId'] = null;
135
+        $this->properties['returnPath'] = null;
136
+
137
+        if ( $options === null )
138
+        {
139
+            $options = new ezcMailOptions();
140
+        }
141
+
142
+        $this->options = $options;
143
+    }
144
+
145
+    /**
146
+     * Sets the property $name to $value.
147
+     *
148
+     * @throws ezcBasePropertyNotFoundException
149
+     *         if the property does not exist.
150
+     * @throws ezcBasePropertyPermissionException
151
+     *         if the property is read-only.
152
+     * @param string $name
153
+     * @param mixed $value
154
+     * @ignore
155
+     */
156
+    public function __set( $name, $value )
157
+    {
158
+        switch ( $name )
159
+        {
160
+            case 'from':
161
+            case 'returnPath':
162
+                if ( $value !== null && !$value instanceof ezcMailAddress )
163
+                {
164
+                    throw new ezcBaseValueException( $name, $value, 'ezcMailAddress or null' );
165
+                }
166
+                $this->properties[$name] = $value;
167
+                break;
168
+
169
+            case 'to':
170
+            case 'cc':
171
+            case 'bcc':
172
+                if ( !is_array( $value ) )
173
+                {
174
+                    throw new ezcBaseValueException( $name, $value, 'array( ezcMailAddress )' );
175
+                }
176
+                foreach ( $value as $key => $obj )
177
+                {
178
+                    if ( !$obj instanceof ezcMailAddress )
179
+                    {
180
+                        throw new ezcBaseValueException( "{$name}[{$key}]", $obj, 'ezcMailAddress' );
181
+                    }
182
+                }
183
+                $this->properties[$name] = $value;
184
+                break;
185
+
186
+            case 'subject':
187
+                $this->properties['subject'] = trim( $value );
188
+                break;
189
+
190
+            case 'subjectCharset':
191
+                $this->properties['subjectCharset'] = $value;
192
+                break;
193
+
194
+            case 'body':
195
+                if ( !$value instanceof ezcMailPart )
196
+                {
197
+                    throw new ezcBaseValueException( $name, $value, 'ezcMailPart' );
198
+                }
199
+                $this->properties['body'] = $value;
200
+                break;
201
+
202
+            case 'messageId':
203
+            case 'messageID':
204
+                $this->properties['messageId'] = $value;
205
+                break;
206
+
207
+            case 'timestamp':
208
+                throw new ezcBasePropertyPermissionException( $name, ezcBasePropertyPermissionException::READ );
209
+                break;
210
+
211
+            default:
212
+                parent::__set( $name, $value );
213
+                break;
214
+        }
215
+    }
216
+
217
+    /**
218
+     * Returns the property $name.
219
+     *
220
+     * @throws ezcBasePropertyNotFoundException
221
+     *         if the property does not exist.
222
+     * @param string $name
223
+     * @return mixed
224
+     * @ignore
225
+     */
226
+    public function __get( $name )
227
+    {
228
+        switch ( $name )
229
+        {
230
+            case 'to':
231
+            case 'cc':
232
+            case 'bcc':
233
+                return (array) $this->properties[$name];
234
+
235
+            case 'from':
236
+            case 'subject':
237
+            case 'subjectCharset':
238
+            case 'body':
239
+            case 'messageId':
240
+            case 'returnPath':
241
+                return $this->properties[$name];
242
+
243
+            case 'messageID': // deprecated version
244
+                return $this->properties['messageId'];
245
+
246
+            case 'timestamp':
247
+                return strtotime( $this->getHeader( "Date" ) );
248
+
249
+            default:
250
+                return parent::__get( $name );
251
+        }
252
+    }
253
+
254
+    /**
255
+     * Returns true if the property $name is set, otherwise false.
256
+     *
257
+     * @param string $name
258
+     * @return bool
259
+     * @ignore
260
+     */
261
+    public function __isset( $name )
262
+    {
263
+        switch ( $name )
264
+        {
265
+            case 'to':
266
+            case 'cc':
267
+            case 'bcc':
268
+            case 'from':
269
+            case 'subject':
270
+            case 'subjectCharset':
271
+            case 'body':
272
+            case 'messageId':
273
+            case 'returnPath':
274
+                return isset( $this->properties[$name] );
275
+
276
+            case 'messageID': // deprecated version
277
+                return isset( $this->properties['messageId'] );
278
+
279
+            case 'timestamp':
280
+                return $this->getHeader( "Date" ) != null;
281
+
282
+            default:
283
+                return parent::__isset( $name );
284
+        }
285
+    }
286
+
287
+    /**
288
+     * Adds the ezcMailAddress $address to the list of 'to' recipients.
289
+     *
290
+     * @param ezcMailAddress $address
291
+     */
292
+    public function addTo( ezcMailAddress $address )
293
+    {
294
+        $this->properties['to'][] = $address;
295
+    }
296
+
297
+    /**
298
+     * Adds the ezcMailAddress $address to the list of 'cc' recipients.
299
+     *
300
+     * @param ezcMailAddress $address
301
+     */
302
+    public function addCc( ezcMailAddress $address )
303
+    {
304
+        $this->properties['cc'][] = $address;
305
+    }
306
+
307
+    /**
308
+     * Adds the ezcMailAddress $address to the list of 'bcc' recipients.
309
+     *
310
+     * @param ezcMailAddress $address
311
+     */
312
+    public function addBcc( ezcMailAddress $address )
313
+    {
314
+        $this->properties['bcc'][] = $address;
315
+    }
316
+
317
+    /**
318
+     * Returns the generated body part of this mail.
319
+     *
320
+     * Returns an empty string if no body has been set.
321
+     *
322
+     * @return string
323
+     */
324
+    public function generateBody()
325
+    {
326
+        if ( is_subclass_of( $this->body, 'ezcMailPart' ) )
327
+        {
328
+            return $this->body->generateBody();
329
+        }
330
+        return '';
331
+    }
332
+
333
+    /**
334
+     * Returns the generated headers for the mail.
335
+     *
336
+     * This method is called automatically when the mail message is built.
337
+     * You can re-implement this method in subclasses if you wish to set
338
+     * different mail headers than ezcMail.
339
+     *
340
+     * @return string
341
+     */
342
+    public function generateHeaders()
343
+    {
344
+        // set our headers first.
345
+        if ( $this->from !== null )
346
+        {
347
+            $this->setHeader( "From", ezcMailTools::composeEmailAddress( $this->from ) );
348
+        }
349
+
350
+        if ( $this->to !== null )
351
+        {
352
+            $this->setHeader( "To", ezcMailTools::composeEmailAddresses( $this->to ) );
353
+        }
354
+        if ( count( $this->cc ) )
355
+        {
356
+            $this->setHeader( "Cc", ezcMailTools::composeEmailAddresses( $this->cc ) );
357
+        }
358
+        if ( count( $this->bcc ) && $this->options->stripBccHeader === false )
359
+        {
360
+            $this->setHeader( "Bcc", ezcMailTools::composeEmailAddresses( $this->bcc ) );
361
+        }
362
+
363
+        $this->setHeader( 'Subject', $this->subject, $this->subjectCharset );
364
+
365
+        $this->setHeader( 'MIME-Version', '1.0' );
366
+        $this->setHeader( 'User-Agent', 'eZ Components' );
367
+        $this->setHeader( 'Date', date( 'r' ) );
368
+        $idhost = $this->from != null && $this->from->email != '' ? $this->from->email : 'localhost';
369
+        if ( is_null( $this->messageId ) )
370
+        {
371
+            $this->setHeader( 'Message-Id', '<' . ezcMailTools::generateMessageId( $idhost ) . '>' );
372
+        }
373
+        else
374
+        {
375
+            $this->setHeader( 'Message-Id', $this->messageID );
376
+        }
377
+
378
+        // if we have a body part, include the headers of the body
379
+        if ( is_subclass_of( $this->body, "ezcMailPart" ) )
380
+        {
381
+            return parent::generateHeaders() . $this->body->generateHeaders();
382
+        }
383
+        return parent::generateHeaders();
384
+    }
385
+
386
+    /**
387
+     * Returns an array of mail parts from the current mail.
388
+     *
389
+     * The array returned contains objects of classes:
390
+     * - ezcMailText
391
+     * - ezcMailFile
392
+     * - ezcMailRfc822Digest
393
+     * If the method is called with $includeDigests as true, then the returned
394
+     * array will not contain ezcMailRfc822Digest objects, but instead the mail
395
+     * parts inside the digests.
396
+     * The parameter $filter can be used to restrict the returned mail parts,
397
+     * eg. $filter = array( 'ezcMailFile' ) to return only file mail parts.
398
+     *
399
+     * A typical use for this function is to get a list of attachments from a mail.
400
+     * Example:
401
+     * <code>
402
+     * // $mail is an ezcMail object
403
+     * $parts = $mail->fetchParts();
404
+     * // after the above line is executed, $parts will contain an array of mail parts objects,
405
+     * // for example one ezcMailText object ($parts[0]) and two ezcMailRfc822Digest objects ($parts[1] and $parts[2]).
406
+     * // the ezcMailText object will be used to render the mail text, and the
407
+     * // other two objects will be displayed as links ("view attachment")
408
+     *
409
+     * // when user clicks on one of the two attachments, the parts of that attachment
410
+     * // must be retrieved in order to render the attached digest:
411
+     * $subparts = $parts[1]->mail->fetchParts();
412
+     * // after the above line is executed, $subparts will contain an array of mail parts objects,
413
+     * // for example one ezcMailText object and one ezcMailFile object
414
+     * </code>
415
+     *
416
+     * @param array(string) $filter
417
+     * @param bool $includeDigests
418
+     * @return array(ezcMailPart)
419
+     */
420
+    public function fetchParts( $filter = null, $includeDigests = false )
421
+    {
422
+        $context = new ezcMailPartWalkContext( array( __CLASS__, 'collectPart' ) );
423
+        $context->includeDigests = $includeDigests;
424
+        $context->filter = $filter;
425
+        $context->level = 0;
426
+        $this->walkParts( $context, $this );
427
+        return $context->getParts();
428
+    }
429
+
430
+    /**
431
+     * Walks recursively through the mail parts in the specified mail object.
432
+     *
433
+     * $context is an object of class ezcMailPartWalkContext, which must contain
434
+     * a valid callback function name to be applied to all mail parts. You can use
435
+     * the collectPart() method, or create your own callback function which can
436
+     * for example save the mail parts to disk or to a database.
437
+     *
438
+     * For the properties you can set to the walk context see: {@link ezcMailPartWalkContext}
439
+     *
440
+     * Example:
441
+     * <code>
442
+     * class App
443
+     * {
444
+     *     public static function saveMailPart( $context, $mailPart )
445
+     *     {
446
+     *         // code to save the $mailPart object to disk
447
+     *     }
448
+     * }
449
+     *
450
+     * // use the saveMailPart() function as a callback in walkParts()
451
+     * // where $mail is an ezcMail object.
452
+     * $context = new ezcMailPartWalkContext( array( 'App', 'saveMailPart' ) );
453
+     * $context->includeDigests = true; // if you want to go through the digests in the mail
454
+     * $mail->walkParts( $context, $mail );
455
+     * </code>
456
+     *
457
+     * @param ezcMailPartWalkContext $context
458
+     * @param ezcMailPart $mail
459
+     */
460
+    public function walkParts( ezcMailPartWalkContext $context, ezcMailPart $mail )
461
+    {
462
+        $className = get_class( $mail );
463
+        $context->level++;
464
+        switch ( $className )
465
+        {
466
+            case 'ezcMail':
467
+            case 'ezcMailComposer':
468
+                if ( $mail->body !== null )
469
+                {
470
+                    $this->walkParts( $context, $mail->body );
471
+                }
472
+                break;
473
+
474
+            case 'ezcMailMultipartMixed':
475
+            case 'ezcMailMultipartAlternative':
476
+            case 'ezcMailMultipartDigest':
477
+            case 'ezcMailMultipartReport':
478
+                foreach ( $mail->getParts() as $part )
479
+                {
480
+                    $this->walkParts( $context, $part );
481
+                }
482
+                break;
483
+
484
+            case 'ezcMailMultipartRelated':
485
+                $this->walkParts( $context, $mail->getMainPart() );
486
+                foreach ( $mail->getRelatedParts() as $part )
487
+                {
488
+                    $this->walkParts( $context, $part );
489
+                }
490
+                break;
491
+
492
+            case 'ezcMailRfc822Digest':
493
+                if ( $context->includeDigests )
494
+                {
495
+                    $this->walkParts( $context, $mail->mail );
496
+                }
497
+                elseif ( empty( $context->filter ) || in_array( $className, $context->filter ) )
498
+                {
499
+                    call_user_func( $context->callbackFunction, $context, $mail );
500
+                }
501
+                break;
502
+
503
+            case 'ezcMailText':
504
+            case 'ezcMailFile':
505
+            case 'ezcMailDeliveryStatus':
506
+                if ( empty( $context->filter ) || in_array( $className, $context->filter ) )
507
+                {
508
+                    call_user_func( $context->callbackFunction, $context, $mail );
509
+                }
510
+                break;
511
+
512
+            default:
513
+                // for cases where a custom mail class has been specified with $parser->options->mailClass
514
+                if ( in_array( 'ezcMail', class_parents( $className ) ) )
515
+                {
516
+                    if ( $mail->body !== null )
517
+                    {
518
+                        $this->walkParts( $context, $mail->body );
519
+                    }
520
+                }
521
+
522
+                // for cases where a custom file class has been specified with $parser->options->fileClass
523
+                if ( in_array( 'ezcMailFile', class_parents( $className ) ) )
524
+                {
525
+                    if ( empty( $context->filter ) || in_array( $className, $context->filter ) )
526
+                    {
527
+                        call_user_func( $context->callbackFunction, $context, $mail );
528
+                    }
529
+                }
530
+        }
531
+        $context->level--;
532
+    }
533
+
534
+    /**
535
+     * Saves $mail in the $context object.
536
+     *
537
+     * This function is used as a callback in the fetchParts() method.
538
+     *
539
+     * @param ezcMailPartWalkContext $context
540
+     * @param ezcMailPart $mail
541
+     */
542
+    protected static function collectPart( ezcMailPartWalkContext $context, ezcMailPart $mail )
543
+    {
544
+        $context->appendPart( $mail );
545
+    }
546
+}
547
+?>
... ...
@@ -0,0 +1,83 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailComposerOptions class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Class containing the options for the mail composer.
13
+ *
14
+ * Example of how to use the composer options:
15
+ * <code>
16
+ * $options = new ezcMailComposerOptions();
17
+ * $options->automaticImageInclude = false; // default value is true
18
+ *
19
+ * $mail = new ezcMailComposer( $options );
20
+ * </code>
21
+ *
22
+ * Alternatively, you can set the options direcly:
23
+ * <code>
24
+ * $mail = new ezcMailComposer();
25
+ * $mail->options->automaticImageInclude = false;
26
+ * </code>
27
+ *
28
+ * @property bool $automaticImageInclude
29
+ *           Specifies whether to include in the generated mail the content of
30
+ *           the files specified with "file://" in image tags. Default value
31
+ *           is true (the contents are included).
32
+ *
33
+ * @package Mail
34
+ * @version 1.7.1
35
+ */
36
+class ezcMailComposerOptions extends ezcMailOptions
37
+{
38
+    /**
39
+     * Constructs an object with the specified values.
40
+     *
41
+     * @throws ezcBasePropertyNotFoundException
42
+     *         if $options contains a property not defined
43
+     * @throws ezcBaseValueException
44
+     *         if $options contains a property with a value not allowed
45
+     * @param array(string=>mixed) $options
46
+     */
47
+    public function __construct( array $options = array() )
48
+    {
49
+        $this->automaticImageInclude = true; // default is to include the contents of "file://" from image tags
50
+
51
+        parent::__construct( $options );
52
+    }
53
+
54
+    /**
55
+     * Sets the option $propertyName to $propertyValue.
56
+     *
57
+     * @throws ezcBasePropertyNotFoundException
58
+     *         if the property $propertyName is not defined
59
+     * @throws ezcBaseValueException
60
+     *         if $propertyValue is not correct for the property $propertyName
61
+     * @param string $propertyName
62
+     * @param mixed $propertyValue
63
+     * @ignore
64
+     */
65
+    public function __set( $propertyName, $propertyValue )
66
+    {
67
+        switch ( $propertyName )
68
+        {
69
+            case 'automaticImageInclude':
70
+                if ( !is_bool( $propertyValue ) )
71
+                {
72
+                    throw new ezcBaseValueException( $propertyName, $propertyValue, 'bool' );
73
+                }
74
+
75
+                $this->properties[$propertyName] = $propertyValue;
76
+                break;
77
+
78
+            default:
79
+                parent::__set( $propertyName, $propertyValue );
80
+        }
81
+    }
82
+}
83
+?>
... ...
@@ -0,0 +1,79 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailImapTransportOptions class.
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Class containing the options for IMAP transport.
13
+ *
14
+ * The options from {@link ezcMailTransportOptions} are inherited.
15
+ *
16
+ * Example of how to use IMAP transport options:
17
+ * <code>
18
+ * $options = new ezcMailImapTransportOptions();
19
+ * $options->ssl = true;
20
+ * $options->timeout = 3;
21
+ * $options->uidReferencing = true;
22
+ *
23
+ * $imap = new ezcMailImapTransport( 'imap.example.com', null, $options );
24
+ * </code>
25
+ *
26
+ * @property bool $uidReferencing
27
+ *           Specifies if the IMAP commands will operate with message unique
28
+ *           IDs or with message numbers (default).
29
+ *
30
+ * @package Mail
31
+ * @version 1.7.1
32
+ */
33
+class ezcMailImapTransportOptions extends ezcMailTransportOptions
34
+{
35
+    /**
36
+     * Constructs an object with the specified values.
37
+     *
38
+     * @throws ezcBasePropertyNotFoundException
39
+     *         if $options contains a property not defined
40
+     * @throws ezcBaseValueException
41
+     *         if $options contains a property with a value not allowed
42
+     * @param array(string=>mixed) $options
43
+     */
44
+    public function __construct( array $options = array() )
45
+    {
46
+        $this->uidReferencing = false;
47
+
48
+        parent::__construct( $options );
49
+    }
50
+
51
+    /**
52
+     * Sets the value of the option $name to $value.
53
+     *
54
+     * @throws ezcBasePropertyNotFoundException
55
+     *         if the property $name is not defined
56
+     * @throws ezcBaseValueException
57
+     *         if $value is not correct for the property $name
58
+     * @param string $name
59
+     * @param mixed $value
60
+     * @ignore
61
+     */
62
+    public function __set( $name, $value )
63
+    {
64
+        switch ( $name )
65
+        {
66
+            case 'uidReferencing':
67
+                if ( !is_bool( $value ) )
68
+                {
69
+                    throw new ezcBaseValueException( $name, $value, 'bool' );
70
+                }
71
+                $this->properties[$name] = $value;
72
+                break;
73
+
74
+            default:
75
+                parent::__set( $name, $value );
76
+        }
77
+    }
78
+}
79
+?>
... ...
@@ -0,0 +1,67 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailImapSetOptions class.
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Class containing the options for IMAP mail set.
13
+ *
14
+ * @property bool $uidReferencing
15
+ *           Specifies if the IMAP commands will operate with message unique
16
+ *           IDs or with message numbers (default).
17
+ *
18
+ * @package Mail
19
+ * @version 1.7.1
20
+ */
21
+class ezcMailImapSetOptions extends ezcBaseOptions
22
+{
23
+    /**
24
+     * Constructs an object with the specified values.
25
+     *
26
+     * @throws ezcBasePropertyNotFoundException
27
+     *         if $options contains a property not defined
28
+     * @throws ezcBaseValueException
29
+     *         if $options contains a property with a value not allowed
30
+     * @param array(string=>mixed) $options
31
+     */
32
+    public function __construct( array $options = array() )
33
+    {
34
+        $this->uidReferencing = false;
35
+
36
+        parent::__construct( $options );
37
+    }
38
+
39
+    /**
40
+     * Sets the value of the option $name to $value.
41
+     *
42
+     * @throws ezcBasePropertyNotFoundException
43
+     *         if the property $name is not defined
44
+     * @throws ezcBaseValueException
45
+     *         if $value is not correct for the property $name
46
+     * @param string $name
47
+     * @param mixed $value
48
+     * @ignore
49
+     */
50
+    public function __set( $name, $value )
51
+    {
52
+        switch ( $name )
53
+        {
54
+            case 'uidReferencing':
55
+                if ( !is_bool( $value ) )
56
+                {
57
+                    throw new ezcBaseValueException( $name, $value, 'bool' );
58
+                }
59
+                $this->properties[$name] = $value;
60
+                break;
61
+
62
+            default:
63
+                throw new ezcBasePropertyNotFoundException( $name );
64
+        }
65
+    }
66
+}
67
+?>
... ...
@@ -0,0 +1,84 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailOptions class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Class containing the options for the mail generator.
13
+ *
14
+ * Example of how to use the mail options:
15
+ * <code>
16
+ * $options = new ezcMailOptions();
17
+ * $options->stripBccHeader = true; // default value is false
18
+ *
19
+ * $mail = new ezcMail( $options );
20
+ * </code>
21
+ *
22
+ * Alternatively, you can set the options direcly:
23
+ * <code>
24
+ * $mail = new ezcMail();
25
+ * $mail->options->stripBccHeader = true;
26
+ * </code>
27
+ *
28
+ * @property bool $stripBccHeader
29
+ *           Specifies whether to strip the Bcc header from a mail before
30
+ *           sending it. This can prevent problems with certain SMTP servers
31
+ *           where the Bcc header appears visible to the To and Cc recipients
32
+ *           (issue #16154: Bcc headers are not stripped when using SMTP).
33
+ *
34
+ * @package Mail
35
+ * @version 1.7.1
36
+ */
37
+class ezcMailOptions extends ezcBaseOptions
38
+{
39
+    /**
40
+     * Constructs an object with the specified values.
41
+     *
42
+     * @throws ezcBasePropertyNotFoundException
43
+     *         if $options contains a property not defined
44
+     * @throws ezcBaseValueException
45
+     *         if $options contains a property with a value not allowed
46
+     * @param array(string=>mixed) $options
47
+     */
48
+    public function __construct( array $options = array() )
49
+    {
50
+        $this->stripBccHeader = false; // default is to not strip the Bcc header
51
+
52
+        parent::__construct( $options );
53
+    }
54
+
55
+    /**
56
+     * Sets the option $propertyName to $propertyValue.
57
+     *
58
+     * @throws ezcBasePropertyNotFoundException
59
+     *         if the property $propertyName is not defined
60
+     * @throws ezcBaseValueException
61
+     *         if $propertyValue is not correct for the property $propertyName
62
+     * @param string $propertyName
63
+     * @param mixed $propertyValue
64
+     * @ignore
65
+     */
66
+    public function __set( $propertyName, $propertyValue )
67
+    {
68
+        switch ( $propertyName )
69
+        {
70
+            case 'stripBccHeader':
71
+                if ( !is_bool( $propertyValue ) )
72
+                {
73
+                    throw new ezcBaseValueException( $propertyName, $propertyValue, 'bool' );
74
+                }
75
+
76
+                $this->properties[$propertyName] = $propertyValue;
77
+                break;
78
+
79
+            default:
80
+                throw new ezcBasePropertyNotFoundException( $propertyName );
81
+        }
82
+    }
83
+}
84
+?>
... ...
@@ -0,0 +1,132 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailParserOption class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Class containing the basic options for the mail parser.
13
+ *
14
+ * Example of how to use the parser options:
15
+ * <code>
16
+ * $options = new ezcMailParserOptions();
17
+ * $options->mailClass = 'myCustomMailClass'; // extends ezcMail
18
+ * $options->fileClass = 'myCustomFileClass'; // extends ezcMailFile
19
+ * $options->parseTextAttachmentsAsFiles = true; // to get the text attachments in ezcMailFile objects
20
+ *
21
+ * $parser = new ezcMailParser( $options );
22
+ * </code>
23
+ *
24
+ * Another way to specify the options is:
25
+ * <code>
26
+ * $parser = new ezcMailParser();
27
+ * $parser->options->mailClass = 'myCustomMailClass'; // extends ezcMail
28
+ * $parser->options->fileClass = 'myCustomFileClass'; // extends ezcMailFile
29
+ * $parser->options->parseTextAttachmentsAsFiles = true;
30
+ * </code>
31
+ *
32
+ * @property string $mailClass
33
+ *           Specifies a class descending from ezcMail which can be returned by the
34
+ *           parser if you plan to use another class instead of ezcMail. The default
35
+ *           value is ezcMail.
36
+ * @property string $fileClass
37
+ *           Specifies a class descending from ezcMailFile which can be instanciated
38
+ *           by the parser to handle file attachments. The default value is
39
+ *           ezcMailFile.
40
+ * @property string $parseTextAttachmentsAsFiles
41
+ *           Specifies whether to parse the text attachments in an ezcMailTextPart
42
+ *           (default) or in an ezcMailFile (by setting the option to true).
43
+ * @package Mail
44
+ * @version 1.7.1
45
+ */
46
+class ezcMailParserOptions extends ezcBaseOptions
47
+{
48
+    /**
49
+     * Constructs an object with the specified values.
50
+     *
51
+     * @throws ezcBasePropertyNotFoundException
52
+     *         if $options contains a property not defined
53
+     * @throws ezcBaseValueException
54
+     *         if $options contains a property with a value not allowed
55
+     * @param array(string=>mixed) $options
56
+     */
57
+    public function __construct( array $options = array() )
58
+    {
59
+        $this->mailClass = 'ezcMail'; // default value for mail class is 'ezcMail'
60
+        $this->fileClass = 'ezcMailFile'; // default value for file attachment class is 'ezcMailFile'
61
+        $this->parseTextAttachmentsAsFiles = false; // default is to parse text attachments in ezcMailTextPart objects
62
+
63
+        parent::__construct( $options );
64
+    }
65
+
66
+    /**
67
+     * Sets the option $propertyName to $propertyValue.
68
+     *
69
+     * @throws ezcBasePropertyNotFoundException
70
+     *         if the property $propertyName is not defined
71
+     * @throws ezcBaseValueException
72
+     *         if $propertyValue is not correct for the property $propertyName
73
+     * @throws ezcBaseInvalidParentClassException
74
+     *         if the class name passed as replacement mailClass does not
75
+     *         inherit from ezcMail.
76
+     * @throws ezcBaseInvalidParentClassException
77
+     *         if the class name passed as replacement fileClass does not
78
+     *         inherit from ezcMailFile.
79
+     * @param string $propertyName
80
+     * @param mixed  $propertyValue
81
+     * @ignore
82
+     */
83
+    public function __set( $propertyName, $propertyValue )
84
+    {
85
+        switch ( $propertyName )
86
+        {
87
+            case 'mailClass':
88
+                if ( !is_string( $propertyValue ) )
89
+                {
90
+                    throw new ezcBaseValueException( $propertyName, $propertyValue, 'string that contains a class name' );
91
+                }
92
+
93
+                // Check if the passed classname actually implements the
94
+                // correct parent class.
95
+                if ( 'ezcMail' !== $propertyValue && !in_array( 'ezcMail', class_parents( $propertyValue ) ) )
96
+                {
97
+                    throw new ezcBaseInvalidParentClassException( 'ezcMail', $propertyValue );
98
+                }
99
+                $this->properties[$propertyName] = $propertyValue;
100
+                break;
101
+
102
+            case 'fileClass':
103
+                if ( !is_string( $propertyValue ) )
104
+                {
105
+                    throw new ezcBaseValueException( $propertyName, $propertyValue, 'string that contains a class name' );
106
+                }
107
+
108
+                // Check if the passed classname actually implements the
109
+                // correct parent class.
110
+                if ( 'ezcMailFile' !== $propertyValue && !in_array( 'ezcMailFile', class_parents( $propertyValue ) ) )
111
+                {
112
+                    throw new ezcBaseInvalidParentClassException( 'ezcMailFile', $propertyValue );
113
+                }
114
+                $this->properties[$propertyName] = $propertyValue;
115
+                ezcMailFileParser::$fileClass = $propertyValue;
116
+                break;
117
+
118
+            case 'parseTextAttachmentsAsFiles':
119
+                if ( !is_bool( $propertyValue ) )
120
+                {
121
+                    throw new ezcBaseValueException( $propertyName, $propertyValue, 'bool' );
122
+                }
123
+                $this->properties[$propertyName] = $propertyValue;
124
+                ezcMailPartParser::$parseTextAttachmentsAsFiles = $propertyValue;
125
+                break;
126
+
127
+            default:
128
+                throw new ezcBasePropertyNotFoundException( $propertyName );
129
+        }
130
+    }
131
+}
132
+?>
... ...
@@ -0,0 +1,81 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailPop3TransportOptions class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Class containing the options for POP3 transport.
13
+ *
14
+ * The options from {@link ezcMailTransportOptions} are inherited.
15
+ *
16
+ * Example of how to use POP3 transport options:
17
+ * <code>
18
+ * $options = new ezcMailPop3TransportOptions();
19
+ * $options->ssl = true;
20
+ * $options->timeout = 3;
21
+ * $options->authenticationMethod = ezcMailPop3Transport::AUTH_APOP;
22
+ *
23
+ * $pop3 = new ezcMailPop3Transport( 'pop3.example.com', null, $options );
24
+ * </code>
25
+ *
26
+ * @property int $authenticationMethod
27
+ *           Specifies the method to connect to the POP3 transport. The methods
28
+ *           supported are {@link ezcMailPop3Transport::AUTH_PLAIN_TEXT} and
29
+ *           {@link ezcMailPop3Transport::AUTH_APOP}.
30
+ *
31
+ * @package Mail
32
+ * @version 1.7.1
33
+ */
34
+class ezcMailPop3TransportOptions extends ezcMailTransportOptions
35
+{
36
+    /**
37
+     * Constructs an object with the specified values.
38
+     *
39
+     * @throws ezcBasePropertyNotFoundException
40
+     *         if $options contains a property not defined
41
+     * @throws ezcBaseValueException
42
+     *         if $options contains a property with a value not allowed
43
+     * @param array(string=>mixed) $options
44
+     */
45
+    public function __construct( array $options = array() )
46
+    {
47
+        // default authentication method is PLAIN
48
+        $this->authenticationMethod = ezcMailPop3Transport::AUTH_PLAIN_TEXT;
49
+
50
+        parent::__construct( $options );
51
+    }
52
+
53
+    /**
54
+     * Sets the option $name to $value.
55
+     *
56
+     * @throws ezcBasePropertyNotFoundException
57
+     *         if the property $name is not defined
58
+     * @throws ezcBaseValueException
59
+     *         if $value is not correct for the property $name
60
+     * @param string $name
61
+     * @param mixed $value
62
+     * @ignore
63
+     */
64
+    public function __set( $name, $value )
65
+    {
66
+        switch ( $name )
67
+        {
68
+            case 'authenticationMethod':
69
+                if ( !is_numeric( $value ) ) 
70
+                {
71
+                    throw new ezcBaseValueException( $name, $value, 'int' );
72
+                }
73
+                $this->properties[$name] = (int) $value;
74
+                break;
75
+
76
+            default:
77
+                parent::__set( $name, $value );
78
+        }
79
+    }
80
+}
81
+?>
... ...
@@ -0,0 +1,123 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailSmtpTransportOptions class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Class containing the options for SMTP transport.
13
+ *
14
+ * The options from {@link ezcMailTransportOptions} are inherited.
15
+ *
16
+ * Example of how to use SMTP transport options:
17
+ * <code>
18
+ * $options = new ezcMailSmtpTransportOptions();
19
+ * $options->timeout = 3;
20
+ * $options->connectionType = ezcMailSmtpTransport::CONNECTION_SSL;
21
+ * $options->preferredAuthMethod = ezcMailSmtpTransport::AUTH_NTLM;
22
+ *
23
+ * $smtp = new ezcMailSmtpTransport( 'smtp.example.com', 'user', 'password', null, $options );
24
+ *
25
+ * // the options can also be set via the options property of the SMTP transport:
26
+ * $smtp->options->preferredAuthMethod = ezcMailSmtpTransport::AUTH_NTLM;
27
+ * </code>
28
+ *
29
+ * @property string $connectionType
30
+ *           Specifies the protocol used to connect to the SMTP server. See the
31
+ *           CONNECTION_* constants in the {@link ezcMailSmtpTransport} class.
32
+ * @property array(mixed) $connectionOptions
33
+ *           Specifies additional options for the connection. Must be in this format:
34
+ *           array( 'wrapper_name' => array( 'option_name' => 'value' ) ).
35
+ * @property bool $ssl
36
+ *           This option belongs to {@link ezcMailTransportOptions}, but it is
37
+ *           not used in SMTP.
38
+ *           When trying to set this to true the connectionType option will be set to
39
+ *           {@link ezcMailSmtpTransport::CONNECTION_SSL}.
40
+ *           When trying to set this to false the connectionType option will be set to
41
+ *           {@link ezcMailSmtpTransport::CONNECTION_PLAIN}.
42
+ * @property string $preferredAuthMethod
43
+ *           Specifies which authentication method should be attempted. Default is
44
+ *           null which means that that the transport should try to
45
+ *           authenticate using the methods supported by the SMTP server in their
46
+ *           decreasing strength order. If one method fails an exception will be
47
+ *           thrown. See the AUTH_* constants in the {@link ezcMailSmtpTransport}
48
+ *           class.
49
+ *
50
+ * @package Mail
51
+ * @version 1.7.1
52
+ */
53
+class ezcMailSmtpTransportOptions extends ezcMailTransportOptions
54
+{
55
+    /**
56
+     * Constructs an object with the specified values.
57
+     *
58
+     * @throws ezcBasePropertyNotFoundException
59
+     *         if $options contains a property not defined
60
+     * @throws ezcBaseValueException
61
+     *         if $options contains a property with a value not allowed
62
+     * @param array(string=>mixed) $options
63
+     */
64
+    public function __construct( array $options = array() )
65
+    {
66
+        $this->connectionType = ezcMailSmtpTransport::CONNECTION_PLAIN; // default is plain connection
67
+        $this->connectionOptions = array(); // default is no extra connection options
68
+        $this->preferredAuthMethod = null; // default is to try the AUTH methods supported by the SMTP server
69
+
70
+        parent::__construct( $options );
71
+    }
72
+
73
+    /**
74
+     * Sets the option $name to $value.
75
+     *
76
+     * @throws ezcBasePropertyNotFoundException
77
+     *         if the property $name is not defined
78
+     * @throws ezcBaseValueException
79
+     *         if $value is not correct for the property $name
80
+     * @param string $name
81
+     * @param mixed $value
82
+     * @ignore
83
+     */
84
+    public function __set( $name, $value )
85
+    {
86
+        switch ( $name )
87
+        {
88
+            case 'connectionType':
89
+                $this->properties[$name] = $value;
90
+                break;
91
+
92
+            case 'connectionOptions':
93
+                if ( !is_array( $value ) )
94
+                {
95
+                    throw new ezcBaseValueException( $name, $value, 'array' );
96
+                }
97
+                $this->properties[$name] = $value;
98
+                break;
99
+
100
+            case 'ssl':
101
+                if ( !is_bool( $value ) )
102
+                {
103
+                    throw new ezcBaseValueException( $name, $value, 'bool' );
104
+                }
105
+                $this->properties['connectionType'] = ( $value === true ) ? ezcMailSmtpTransport::CONNECTION_SSL : ezcMailSmtpTransport::CONNECTION_PLAIN;
106
+                break;
107
+
108
+            case 'preferredAuthMethod':
109
+                $supportedAuthMethods = ezcMailSmtpTransport::getSupportedAuthMethods();
110
+                $supportedAuthMethods[] = ezcMailSmtpTransport::AUTH_AUTO;
111
+                if ( !in_array( $value, $supportedAuthMethods ) )
112
+                {
113
+                    throw new ezcBaseValueException( $name, $value, implode( ' | ', $supportedAuthMethods ) );
114
+                }
115
+                $this->properties[$name] = $value;
116
+                break;
117
+
118
+            default:
119
+                parent::__set( $name, $value );
120
+        }
121
+    }
122
+}
123
+?>
... ...
@@ -0,0 +1,78 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailTransportOption class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Class containing the basic options for mail transports.
13
+ *
14
+ * @property int $timeout
15
+ *           Specifies the time in seconds until the connection is closed if
16
+ *           there is no activity through the connection.
17
+ * @property bool $ssl
18
+ *           Specifies whether to use an SSL connection or not.
19
+ *
20
+ * @package Mail
21
+ * @version 1.7.1
22
+ */
23
+class ezcMailTransportOptions extends ezcBaseOptions
24
+{
25
+    /**
26
+     * Constructs an object with the specified values.
27
+     *
28
+     * @throws ezcBasePropertyNotFoundException
29
+     *         if $options contains a property not defined
30
+     * @throws ezcBaseValueException
31
+     *         if $options contains a property with a value not allowed
32
+     * @param array(string=>mixed) $options
33
+     */
34
+    public function __construct( array $options = array() )
35
+    {
36
+        $this->timeout = 5; // default value for timeout is 5 seconds
37
+        $this->ssl = false; // default value for ssl is false
38
+
39
+        parent::__construct( $options );
40
+    }
41
+
42
+    /**
43
+     * Sets the option $name to $value.
44
+     *
45
+     * @throws ezcBasePropertyNotFoundException
46
+     *         if the property $name is not defined
47
+     * @throws ezcBaseValueException
48
+     *         if $value is not correct for the property $name
49
+     * @param string $name
50
+     * @param mixed $value
51
+     * @ignore
52
+     */
53
+    public function __set( $name, $value )
54
+    {
55
+        switch ( $name )
56
+        {
57
+            case 'timeout':
58
+                if ( !is_numeric( $value ) || ( $value < 1 ) ) 
59
+                {
60
+                    throw new ezcBaseValueException( $name, $value, 'int >= 1' );
61
+                }
62
+                $this->properties[$name] = (int) $value;
63
+                break;
64
+
65
+            case 'ssl':
66
+                if ( !is_bool( $value ) )
67
+                {
68
+                    throw new ezcBaseValueException( $name, $value, 'bool' );
69
+                }
70
+                $this->properties[$name] = $value;
71
+                break;
72
+
73
+            default:
74
+                throw new ezcBasePropertyNotFoundException( $name );
75
+        }
76
+    }
77
+}
78
+?>
... ...
@@ -0,0 +1,129 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailHeaderHolder class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Holds the headers of a mail during parsing and allows case insensitive lookup
13
+ * but case sensitive storage.
14
+ *
15
+ * @package Mail
16
+ * @version 1.7.1
17
+ * @access private
18
+ */
19
+class ezcMailHeadersHolder implements ArrayAccess
20
+{
21
+    /**
22
+     * Holds the mapping between the case insensitive key and the real key.
23
+     *
24
+     * Format: array(lowerCaseKey, mixedCaseKey)
25
+     *
26
+     * @var array(string=>string)
27
+     */
28
+    private $lookup = array();
29
+
30
+    /**
31
+     * Holds the normal associative array between keys in correct case and values.
32
+     *
33
+     * Format: array(mixedCaseKey, value)
34
+     *
35
+     * @var array(string=>string)
36
+     */
37
+    private $map = array();
38
+
39
+    /**
40
+     * Constructs a new case insensitive associtive array formed around the array
41
+     * $map with mixed case keys.
42
+     *
43
+     * @param array(string=>string) $map
44
+     */
45
+    public function __construct( array $map = array() )
46
+    {
47
+        $this->map = $map;
48
+        foreach ( $map as $key => $value )
49
+        {
50
+            $this->lookup[strtolower( $key )] = $key;
51
+        }
52
+    }
53
+
54
+    /**
55
+     * Returns true if the $key exists in the array.
56
+     *
57
+     * @param string $key
58
+     * @return bool
59
+     */
60
+    public function offsetExists( $key )
61
+    {
62
+        return array_key_exists( strtolower( $key ), $this->lookup );
63
+    }
64
+
65
+    /**
66
+     * Returns the value recognized with $key.
67
+     *
68
+     * @param string $key
69
+     * @return mixed
70
+     */
71
+    public function offsetGet( $key )
72
+    {
73
+        $key = strtolower( $key );
74
+        if ( !array_key_exists( $key, $this->lookup ) )
75
+        {
76
+            return null;
77
+        }
78
+        return $this->map[$this->lookup[$key]];
79
+    }
80
+
81
+    /**
82
+     * Sets the offset $key to the value $value.
83
+     *
84
+     * If it is a new entry the case in $key will be stored. If the $key exists already
85
+     * using a case insensitive lookup the new spelling will be discarded.
86
+     *
87
+     * @param string $key
88
+     * @param mixed $value
89
+     */
90
+    public function offsetSet( $key, $value )
91
+    {
92
+        $lowerKey = strtolower( $key );
93
+        if ( !array_key_exists( $lowerKey, $this->lookup ) )
94
+        {
95
+            $this->map[$key] = $value;
96
+            $this->lookup[$lowerKey] = $key;
97
+        }
98
+        else // use old case
99
+        {
100
+            $this->map[$this->lookup[$lowerKey]] = $value;
101
+        }
102
+    }
103
+
104
+    /**
105
+     * Unsets the key $key.
106
+     *
107
+     * @param string $key
108
+     */
109
+    public function offsetUnset( $key )
110
+    {
111
+        $key = strtolower( $key );
112
+        if ( array_key_exists( $key, $this->lookup ) )
113
+        {
114
+            unset( $this->map[$this->lookup[$key]] );
115
+            unset( $this->lookup[$key] );
116
+        }
117
+    }
118
+
119
+    /**
120
+     * Returns a copy of the associative array with the case of the keys preserved.
121
+     *
122
+     * @return array(string=>string)
123
+     */
124
+    public function getCaseSensitiveArray()
125
+    {
126
+        return $this->map;
127
+    }
128
+}
129
+?>
... ...
@@ -0,0 +1,49 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailParserSet interface
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Interface common to all parser sets.
13
+ *
14
+ * A parser set provides a simple interface to fetch mail data line by
15
+ * line from a set of mail.
16
+ *
17
+ * @package Mail
18
+ * @version 1.7.1
19
+ */
20
+interface ezcMailParserSet
21
+{
22
+    /**
23
+     * Returns one line of data from the current mail in the set
24
+     * including the ending linebreak.
25
+     *
26
+     * Null is returned if there is no current mail in the set or
27
+     * the end of the mail is reached,
28
+     *
29
+     * @return string
30
+     */
31
+    public function getNextLine();
32
+
33
+    /**
34
+     * Moves the set to the next mail and returns true upon success.
35
+     *
36
+     * False is returned if there are no more mail in the set.
37
+     *
38
+     * @return bool
39
+     */
40
+    public function nextMail();
41
+
42
+    /**
43
+     * Returns true if mail data is available for parsing.
44
+     *
45
+     * @return bool
46
+     */
47
+    public function hasData();
48
+}
49
+?>
... ...
@@ -0,0 +1,261 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailPartParser class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Base class for all parser parts.
13
+ *
14
+ * Parse process
15
+ * 1. Figure out the headers of the next part.
16
+ * 2. Based on the headers, create the parser for the bodyPart corresponding to
17
+ *    the headers.
18
+ * 3. Parse the body line by line. In the case of a multipart or a digest recursively
19
+ *    start this process. Note that in the case of RFC822 messages the body contains
20
+ *    headers.
21
+ * 4. call finish() on the partParser and retrieve the ezcMailPart
22
+ *
23
+ * Each parser part gets the header for that part through the constructor
24
+ * and is responsible for parsing the body of that part.
25
+ * Parsing of the body is done on a push basis trough the parseBody() method
26
+ * which is called repeatedly by the parent part for each line in the message.
27
+ *
28
+ * When there are no more lines the parent part will call finish() and the mail
29
+ * part corresponding to the part you are parsing should be returned.
30
+ *
31
+ * @todo case on headers
32
+ * @package Mail
33
+ * @version 1.7.1
34
+ * @access private
35
+ */
36
+abstract class ezcMailPartParser
37
+{
38
+    /**
39
+     * Mail headers which can appear maximum one time in a mail message,
40
+     * as defined by RFC 2822.
41
+     *
42
+     * @var array(string)
43
+     */
44
+    protected static $uniqueHeaders = array( 'bcc', 'cc', 'content-type',
45
+                                             'content-disposition', 'from',
46
+                                             'content-transfer-encoding',
47
+                                             'return-path',
48
+                                             'in-reply-to', 'references',
49
+                                             'message-id', 'date', 'reply-to',
50
+                                             'sender', 'subject', 'sender', 'to' );
51
+
52
+    /**
53
+     * The default is to parse text attachments into ezcMailTextPart objects.
54
+     *
55
+     * Setting this to true before calling the parser will parse text attachments
56
+     * into ezcMailFile objects. Use the parser options for this:
57
+     *
58
+     * <code>
59
+     * $parser = new ezcMailParser();
60
+     * $parser->options->parseTextAttachmentsAsFiles = true;
61
+     * // call $parser->parseMail( $set );
62
+     * </code>
63
+     *
64
+     * @var bool
65
+     */
66
+    public static $parseTextAttachmentsAsFiles = false;
67
+
68
+    /**
69
+     * The name of the last header parsed.
70
+     *
71
+     * This variable is used when glueing together multi-line headers.
72
+     *
73
+     * @var string
74
+     */
75
+    private $lastParsedHeader = null;
76
+
77
+    /**
78
+     * Parse the body of a message line by line.
79
+     *
80
+     * This method is called by the parent part on a push basis. When there
81
+     * are no more lines the parent part will call finish() to retrieve the
82
+     * mailPart.
83
+     *
84
+     * @param string $line
85
+     */
86
+    abstract public function parseBody( $line );
87
+
88
+    /**
89
+     * Return the result of the parsed part.
90
+     *
91
+     * This method is called when all the lines of this part have been parsed.
92
+     *
93
+     * @return ezcMailPart
94
+     */
95
+    abstract public function finish();
96
+
97
+    /**
98
+     * Returns a part parser corresponding to the given $headers.
99
+     *
100
+     * @throws ezcBaseFileNotFoundException
101
+     *         if a neccessary temporary file could not be openened.
102
+     * @param ezcMailHeadersHolder $headers
103
+     * @return ezcMailPartParser
104
+     */
105
+    static public function createPartParserForHeaders( ezcMailHeadersHolder $headers )
106
+    {
107
+        // default as specified by RFC2045 - #5.2
108
+        $mainType = 'text';
109
+        $subType = 'plain';
110
+
111
+        // parse the Content-Type header
112
+        if ( isset( $headers['Content-Type'] ) )
113
+        {
114
+            $matches = array();
115
+            // matches "type/subtype; blahblahblah"
116
+            preg_match_all( '/^(\S+)\/([^;]+)/',
117
+                            $headers['Content-Type'], $matches, PREG_SET_ORDER );
118
+            if ( count( $matches ) > 0 )
119
+            {
120
+                $mainType = strtolower( $matches[0][1] );
121
+                $subType = strtolower( $matches[0][2] );
122
+            }
123
+        }
124
+        $bodyParser = null;
125
+
126
+        // create the correct type parser for this the detected type of part
127
+        switch ( $mainType )
128
+        {
129
+            /* RFC 2045 defined types */
130
+            case 'image':
131
+            case 'audio':
132
+            case 'video':
133
+            case 'application':
134
+                $bodyParser = new ezcMailFileParser( $mainType, $subType, $headers );
135
+                break;
136
+
137
+            case 'message':
138
+                switch ( $subType )
139
+                {
140
+                    case "rfc822":
141
+                        $bodyParser = new ezcMailRfc822DigestParser( $headers );
142
+                        break;
143
+
144
+                    case "delivery-status":
145
+                        $bodyParser = new ezcMailDeliveryStatusParser( $headers );
146
+                        break;
147
+
148
+                    default:
149
+                        $bodyParser = new ezcMailFileParser( $mainType, $subType, $headers );
150
+                        break;
151
+                }
152
+                break;
153
+
154
+            case 'text':
155
+                if ( ezcMailPartParser::$parseTextAttachmentsAsFiles === true )
156
+                {
157
+                    $bodyParser = new ezcMailFileParser( $mainType, $subType, $headers );
158
+                }
159
+                else
160
+                {
161
+                    $bodyParser = new ezcMailTextParser( $subType, $headers );
162
+                }
163
+                break;
164
+
165
+            case 'multipart':
166
+                switch ( $subType )
167
+                {
168
+                    case 'mixed':
169
+                        $bodyParser = new ezcMailMultipartMixedParser( $headers );
170
+                        break;
171
+                    case 'alternative':
172
+                        $bodyParser = new ezcMailMultipartAlternativeParser( $headers );
173
+                        break;
174
+                    case 'related':
175
+                        $bodyParser = new ezcMailMultipartRelatedParser( $headers );
176
+                        break;
177
+                    case 'digest':
178
+                        $bodyParser = new ezcMailMultipartDigestParser( $headers );
179
+                        break;
180
+                    case 'report':
181
+                        $bodyParser = new ezcMailMultipartReportParser( $headers );
182
+                        break;
183
+                    default:
184
+                        $bodyParser = new ezcMailMultipartMixedParser( $headers );
185
+                        break;
186
+                }
187
+                break;
188
+
189
+                /* extensions */
190
+            default:
191
+                // we treat the body as binary if no main content type is set
192
+                // or if it is unknown
193
+                $bodyParser = new ezcMailFileParser( $mainType, $subType, $headers );
194
+                break;
195
+        }
196
+        return $bodyParser;
197
+    }
198
+
199
+    /**
200
+     * Parses the header given by $line and adds to $headers.
201
+     *
202
+     * This method is usually used to parse the headers for a subpart. The
203
+     * only exception is RFC822 parts since you know the type in advance.
204
+     *
205
+     * @todo deal with headers that are listed several times
206
+     * @param string $line
207
+     * @param ezcMailHeadersHolder $headers
208
+     */
209
+    protected function parseHeader( $line, ezcMailHeadersHolder $headers )
210
+    {
211
+        $matches = array();
212
+        preg_match_all( "/^([\w-_]*):\s?(.*)/", $line, $matches, PREG_SET_ORDER );
213
+        if ( count( $matches ) > 0 )
214
+        {
215
+            if ( !in_array( strtolower( $matches[0][1] ), self::$uniqueHeaders ) )
216
+            {
217
+                $arr = $headers[$matches[0][1]];
218
+                $arr[0][] = str_replace( "\t", " ", trim( $matches[0][2] ) );
219
+                $headers[$matches[0][1]] = $arr;
220
+            }
221
+            else
222
+            {
223
+                $headers[$matches[0][1]] = str_replace( "\t", " ", trim( $matches[0][2] ) );
224
+            }
225
+            $this->lastParsedHeader = $matches[0][1];
226
+        }
227
+        else if ( $this->lastParsedHeader !== null ) // take care of folding
228
+        {
229
+            if ( !in_array( strtolower( $this->lastParsedHeader ), self::$uniqueHeaders ) )
230
+            {
231
+                $arr = $headers[$this->lastParsedHeader];
232
+                $arr[0][count( $arr[0] ) - 1] .= str_replace( "\t", " ", $line );
233
+                $headers[$this->lastParsedHeader] = $arr;
234
+            }
235
+            else
236
+            {
237
+                $headers[$this->lastParsedHeader] .= str_replace( "\t", " ", $line );
238
+            }
239
+        }
240
+        // else -invalid syntax, this should never happen.
241
+    }
242
+
243
+    /**
244
+     * Scans through $headers and sets any specific header properties on $part.
245
+     *
246
+     * Currently we only have Content-Disposition on the ezcMailPart level.
247
+     * All parser parts must call this method once.
248
+     *
249
+     * @param ezcMailHeadersHolder $headers
250
+     * @param ezcMailPart $part
251
+     */
252
+    static public function parsePartHeaders( ezcMailHeadersHolder $headers, ezcMailPart $part )
253
+    {
254
+        if ( isset( $headers['Content-Disposition'] ) )
255
+        {
256
+            $part->contentDisposition = ezcMailRfc2231Implementation::parseContentDisposition( $headers['Content-Disposition'] );
257
+        }
258
+    }
259
+}
260
+
261
+?>
... ...
@@ -0,0 +1,283 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailParser class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Parses a mail in RFC822 format to an ezcMail structure.
13
+ *
14
+ * By default an object of class {@link ezcMail} is returned by the parser. If
15
+ * you want to use your own mail class (which extends {@link ezcMail}),
16
+ * use {@link ezcMailParserOptions}. Example:
17
+ *
18
+ * <code>
19
+ * $options = new ezcMailParserOptions();
20
+ * $options->mailClass = 'myCustomMailClass'; // extends ezcMail
21
+ *
22
+ * $parser = new ezcMailParser( $options );
23
+ * </code>
24
+ *
25
+ * Another way to do this is:
26
+ * <code>
27
+ * $parser = new ezcMailParser();
28
+ * $parser->options->mailClass = 'myCustomMailClass'; // extends ezcMail
29
+ * </code>
30
+ *
31
+ * File attachments will be written to disk in a temporary directory.
32
+ * This temporary directory and the file attachment will be removed
33
+ * when PHP ends execution. If you want to keep the file you should move it
34
+ * to another directory.
35
+ *
36
+ * By default objects of class {@link ezcMailFile} are created to handle file
37
+ * attachments. If you want to use your own file class (which extends
38
+ * {@link ezcMailFile}), use {@link ezcMailParserOptions}. Example:
39
+ *
40
+ * <code>
41
+ * $options = new ezcMailParserOptions();
42
+ * $options->fileClass = 'myCustomFileClass'; // extends ezcMailFile
43
+ *
44
+ * $parser = new ezcMailParser( $options );
45
+ * </code>
46
+ *
47
+ * Another way to do this is:
48
+ * <code>
49
+ * $parser = new ezcMailParser();
50
+ * $parser->options->fileClass = 'myCustomFileClass'; // extends ezcMailFile
51
+ * </code>
52
+ *
53
+ * By default objects of class {@link ezcMailTextPart} are created for text
54
+ * attachments. If you want to use ezcMailFile objects instead, use
55
+ * {@link ezcMailParserOptions}. Example:
56
+ *
57
+ * <code>
58
+ * $options = new ezcMailParserOptions();
59
+ * $options->parseTextAttachmentsAsFiles = true;
60
+ *
61
+ * $parser = new ezcMailParser( $options );
62
+ * </code>
63
+ *
64
+ * Another way to do this is:
65
+ * <code>
66
+ * $parser = new ezcMailParser();
67
+ * $parser->options->parseTextAttachmentsAsFiles = true;
68
+ * </code>
69
+ *
70
+ * @property ezcMailParserOptions $options
71
+ *           Holds the options you can set to the mail parser.
72
+ *
73
+ * @package Mail
74
+ * @version 1.7.1
75
+ * @mainclass
76
+ */
77
+class ezcMailParser
78
+{
79
+    /**
80
+     * Holds the parser of the current mail.
81
+     *
82
+     * @var ezcMailPartParser
83
+     */
84
+    private $partParser = null;
85
+
86
+    /**
87
+     * Holds the directory where parsed mail should store temporary files.
88
+     *
89
+     * @var string
90
+     */
91
+    private static $tmpDir = null;
92
+
93
+    /**
94
+     * Holds options you can be set to the mail parser.
95
+     *
96
+     * @var ezcMailParserOptions
97
+     */
98
+    private $options;
99
+
100
+    /**
101
+     * Constructs a new mail parser.
102
+     *
103
+     * For options you can set to the mail parser see {@link ezcMailParserOptions}.
104
+     *
105
+     * @throws ezcBasePropertyNotFoundException
106
+     *         if $options contains a property not defined
107
+     * @throws ezcBaseValueException
108
+     *         if $options contains a property with a value not allowed
109
+     * @param ezcMailParserOptions|array(string=>mixed) $options
110
+     */
111
+    public function __construct( $options = array() )
112
+    {
113
+        if ( $options instanceof ezcMailParserOptions )
114
+        {
115
+            $this->options = $options;
116
+        }
117
+        else if ( is_array( $options ) )
118
+        {
119
+            $this->options = new ezcMailParserOptions( $options );
120
+        }
121
+        else
122
+        {
123
+            throw new ezcBaseValueException( "options", $options, "ezcMailParserOptions|array" );
124
+        }
125
+    }
126
+
127
+    /**
128
+     * Sets the property $name to $value.
129
+     *
130
+     * @throws ezcBasePropertyNotFoundException
131
+     *         if the property $name does not exist
132
+     * @throws ezcBaseValueException
133
+     *         if $value is not accepted for the property $name
134
+     * @param string $name
135
+     * @param mixed $value
136
+     * @ignore
137
+     */
138
+    public function __set( $name, $value )
139
+    {
140
+        switch ( $name )
141
+        {
142
+            case 'options':
143
+                if ( !( $value instanceof ezcMailParserOptions ) )
144
+                {
145
+                    throw new ezcBaseValueException( 'options', $value, 'instanceof ezcMailParserOptions' );
146
+                }
147
+                $this->options = $value;
148
+                break;
149
+
150
+            default:
151
+                throw new ezcBasePropertyNotFoundException( $name );
152
+        }
153
+    }
154
+
155
+    /**
156
+     * Returns the value of the property $name.
157
+     *
158
+     * @throws ezcBasePropertyNotFoundException
159
+     *         if the property $name does not exist
160
+     * @param string $name
161
+     * @ignore
162
+     */
163
+    public function __get( $name )
164
+    {
165
+        switch ( $name )
166
+        {
167
+            case 'options':
168
+                return $this->options;
169
+            
170
+            default:
171
+                throw new ezcBasePropertyNotFoundException( $name );
172
+        }
173
+    }
174
+
175
+    /**
176
+     * Returns true if the property $name is set, otherwise false.
177
+     *
178
+     * @param string $name
179
+     * @return bool
180
+     * @ignore
181
+     */
182
+    public function __isset( $name )
183
+    {
184
+        switch ( $name )
185
+        {
186
+            case 'options':
187
+                return true;
188
+
189
+            default:
190
+                return false;
191
+        }
192
+    }
193
+
194
+    /**
195
+     * Returns an array of ezcMail objects parsed from the mail set $set.
196
+     *
197
+     * You can optionally use ezcMailParserOptions to provide an alternate class
198
+     * name which will be instantiated instead of ezcMail, if you need to extend
199
+     * ezcMail.
200
+     *
201
+     * Example:
202
+     * <code>
203
+     * $options = new ezcMailParserOptions();
204
+     * $options->mailClass = 'MyMailClass';
205
+     *
206
+     * $parser = new ezcMailParser( $options );
207
+     * // if you want to use MyMailClass which extends ezcMail
208
+     * </code>
209
+     *
210
+     * @apichange Remove second parameter
211
+     *
212
+     * @throws ezcBaseFileNotFoundException
213
+     *         if a neccessary temporary file could not be openened.
214
+     * @param ezcMailParserSet $set
215
+     * @param string $class Deprecated. Use $mailClass in ezcMailParserOptions class instead.
216
+     * @return array(ezcMail)
217
+     */
218
+    public function parseMail( ezcMailParserSet $set, $class = null )
219
+    {
220
+        $mail = array();
221
+        if ( !$set->hasData() )
222
+        {
223
+            return $mail;
224
+        }
225
+        if ( $class === null )
226
+        {
227
+            $class = $this->options->mailClass;
228
+        }
229
+        do
230
+        {
231
+            $this->partParser = new ezcMailRfc822Parser();
232
+            $data = "";
233
+            $size = 0;
234
+            while ( ( $data = $set->getNextLine() ) !== null )
235
+            {
236
+                $this->partParser->parseBody( $data );
237
+                $size += strlen( $data );
238
+            }
239
+            $part = $this->partParser->finish( $class );
240
+            $part->size = $size;
241
+            $mail[] = $part;
242
+        } while ( $set->nextMail() );
243
+        return $mail;
244
+    }
245
+
246
+    /**
247
+     * Sets the temporary directory.
248
+     *
249
+     * The temporary directory must be writeable by PHP. It will be used to store
250
+     * file attachments.
251
+     *
252
+     * @todo throw if the directory is not writeable.
253
+     * @param string $dir
254
+     */
255
+    public static function setTmpDir( $dir )
256
+    {
257
+        self::$tmpDir = $dir;
258
+    }
259
+
260
+    /**
261
+     * Returns the temporary directory.
262
+     *
263
+     * Uses the PHP 5.2.1 function sys_get_temp_dir().
264
+     *
265
+     * Note that the directory name returned will have a "slash" at the end
266
+     * ("/" for Linux and "\" for Windows).
267
+     *
268
+     * @return string
269
+     */
270
+    public static function getTmpDir()
271
+    {
272
+        if ( self::$tmpDir === null )
273
+        {
274
+            self::$tmpDir = sys_get_temp_dir();
275
+            if ( substr( self::$tmpDir, strlen( self::$tmpDir ) - 1 ) !== DIRECTORY_SEPARATOR )
276
+            {
277
+                self::$tmpDir = self::$tmpDir . DIRECTORY_SEPARATOR;
278
+            }
279
+        }
280
+        return self::$tmpDir;
281
+    }
282
+}
283
+?>
... ...
@@ -0,0 +1,115 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailDeliveryStatusParser class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Parses mail parts of type "delivery-status".
13
+ *
14
+ * @package Mail
15
+ * @version 1.7.1
16
+ * @access private
17
+ */
18
+class ezcMailDeliveryStatusParser extends ezcMailPartParser
19
+{
20
+    /**
21
+     * This mail part will be returned by the method finish().
22
+     *
23
+     * @var ezcMailDeliveryStatus
24
+     */
25
+    private $part = null;
26
+
27
+    /**
28
+     * The current section of the parsing of delivery-status headers.
29
+     *
30
+     * 0      = the per-message section
31
+     * 1, ... = the per-recipient section
32
+     *
33
+     * @var int
34
+     */
35
+    private $section;
36
+
37
+    /**
38
+     * Holds the size of the mail part.
39
+     *
40
+     * @var int
41
+     */
42
+    private $size;
43
+
44
+    /**
45
+     * Constructs a new ezcMailDeliveryStatusParser with additional headers $headers.
46
+     *
47
+     * @param ezcMailHeadersHolder $headers
48
+     */
49
+    public function __construct( ezcMailHeadersHolder $headers )
50
+    {
51
+        $this->headers = $headers;
52
+        $this->section = 0;
53
+        $this->part = new ezcMailDeliveryStatus();
54
+        $this->size = 0;
55
+    }
56
+
57
+    /**
58
+     * Parses each line of the mail part.
59
+     *
60
+     * @param string $line
61
+     */
62
+    public function parseBody( $line )
63
+    {
64
+        $this->parseHeader( $line, $this->headers );
65
+        $this->size += strlen( $line );
66
+    }
67
+
68
+    /**
69
+     * Parses the header given by $line.
70
+     *
71
+     * @param string $line
72
+     * @param ezcMailHeadersHolder $headers
73
+     */
74
+    protected function parseHeader( $line, ezcMailHeadersHolder $headers )
75
+    {
76
+        $matches = array();
77
+        preg_match_all( "/^([\w-_]*):\s?(.*)/", $line, $matches, PREG_SET_ORDER );
78
+        if ( count( $matches ) > 0 )
79
+        {
80
+            $this->lastParsedHeader = $matches[0][1];
81
+            $this->headerValue = trim( $matches[0][2] );
82
+        }
83
+        else if ( isset( $this->lastParsedHeader ) && $this->lastParsedHeader !== null ) // take care of folding
84
+        {
85
+            $this->headerValue .= $line;
86
+        }
87
+        if ( strlen( trim( $line ) ) == 0 )
88
+        {
89
+            $this->section++;
90
+            $this->part->createRecipient();
91
+            return;
92
+        }
93
+        if ( $this->section == 0 )
94
+        {
95
+            $this->part->message[$this->lastParsedHeader] = $this->headerValue;
96
+        }
97
+        else
98
+        {
99
+            $this->part->recipients[$this->section - 1][$this->lastParsedHeader] = $this->headerValue;
100
+        }
101
+    }
102
+
103
+    /**
104
+     * Returns the ezcMailDeliveryStatus part corresponding to the parsed message.
105
+     *
106
+     * @return ezcMailDeliveryStatus
107
+     */
108
+    public function finish()
109
+    {
110
+        unset( $this->part->recipients[$this->section - 1] ); // because one extra recipient is created in parseHeader()
111
+        $this->part->size = $this->size;
112
+        return $this->part;
113
+    }
114
+}
115
+?>
... ...
@@ -0,0 +1,309 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailFileParser class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Parses application/image/video and audio parts.
13
+ *
14
+ * @package Mail
15
+ * @version 1.7.1
16
+ * @access private
17
+ */
18
+class ezcMailFileParser extends ezcMailPartParser
19
+{
20
+    /**
21
+     * Default class to handle file attachments when parsing mails
22
+     * is ezcMailFile.
23
+     *
24
+     * Change this to your own file class with:
25
+     * <code>
26
+     * $parser = new ezcMailParser();
27
+     * $parser->options->fileClass = 'myCustomFileClass';
28
+     * // call $parser->parseMail( $set );
29
+     * </code>
30
+     *
31
+     * where myCustomFileClass extends ezcMailFile.
32
+     *
33
+     * @var string
34
+     */
35
+    public static $fileClass = 'ezcMailFile';
36
+
37
+    /**
38
+     * Holds the headers for this part.
39
+     *
40
+     * @var ezcMailHeadersHolder
41
+     */
42
+    private $headers = null;
43
+
44
+    /**
45
+     * Holds the maintype of the parsed part.
46
+     *
47
+     * @var string
48
+     */
49
+    private $mainType = null;
50
+
51
+    /**
52
+     * Holds the subtype of the parsed part.
53
+     *
54
+     * @var string
55
+     */
56
+    private $subType = null;
57
+
58
+    /**
59
+     * Holds the filepointer to the attachment.
60
+     *
61
+     * @var resource
62
+     */
63
+    private $fp = null;
64
+
65
+    /**
66
+     * Holds the full path and filename of the file to save to.
67
+     *
68
+     * @var string
69
+     */
70
+    private $fileName = null;
71
+
72
+    /**
73
+     * Static counter used to generate unique directory names.
74
+     *
75
+     * @var int
76
+     */
77
+    private static $counter = 1;
78
+
79
+    /**
80
+     * Holds if data has been written to the output file or not.
81
+     *
82
+     * This is used for delayed filter adding neccessary for quoted-printable.
83
+     *
84
+     * @var bool
85
+     */
86
+    private $dataWritten = false;
87
+
88
+    /**
89
+     * Constructs a new ezcMailFileParser with maintype $mainType subtype $subType
90
+     * and headers $headers.
91
+     *
92
+     * @throws ezcBaseFileNotFoundException
93
+     *         if the file attachment file could not be openened.
94
+     * @param string $mainType
95
+     * @param string $subType
96
+     * @param ezcMailHeadersHolder $headers
97
+     */
98
+    public function __construct( $mainType, $subType, ezcMailHeadersHolder $headers )
99
+    {
100
+        $this->mainType = $mainType;
101
+        $this->subType = $subType;
102
+        $this->headers = $headers;
103
+
104
+        // figure out the base filename
105
+        // search Content-Disposition first as specified by RFC 2183
106
+        $matches = array();
107
+        if ( preg_match( '/\s*filename="?([^;"]*);?/i',
108
+                        $this->headers['Content-Disposition'], $matches ) )
109
+        {
110
+            $fileName = trim( $matches[1], '"' );
111
+        }
112
+        // fallback to the name parameter in Content-Type as specified by RFC 2046 4.5.1
113
+        else if ( preg_match( '/\s*name="?([^;"]*);?/i',
114
+                             $this->headers['Content-Type'], $matches ) )
115
+        {
116
+            $fileName = trim( $matches[1], '"' );
117
+        }
118
+        else // default
119
+        {
120
+            $fileName = "filename";
121
+        }
122
+
123
+        // clean file name (replace unsafe characters with underscores)
124
+        $fileName = strtr( $fileName, "/\\\0\"|?*<:;>+[]", '______________' );
125
+
126
+        $this->fp = $this->openFile( $fileName ); // propagate exception
127
+    }
128
+
129
+    /**
130
+     * Returns the filepointer of the opened file $fileName in a unique directory..
131
+     *
132
+     * This method will create a new unique folder in the temporary directory specified in ezcMailParser.
133
+     * The fileName property of this class will be set to the location of the new file.
134
+     *
135
+     * @throws ezcBaseFileNotFoundException
136
+     *         if the file could not be opened.
137
+     * @param string $fileName
138
+     * @return resource
139
+     */
140
+    private function openFile( $fileName )
141
+    {
142
+        // The filename is now relative, we need to extend it with the absolute path.
143
+        // To provide uniqueness we put the file in a directory based on processID and rand.
144
+        $dirName = ezcMailParser::getTmpDir() . getmypid() . '-' . self::$counter++ . '/';
145
+        if ( !is_dir( $dirName ) )
146
+        {
147
+            mkdir( $dirName, 0700 );
148
+        }
149
+
150
+        // remove the directory and the file when PHP shuts down
151
+        ezcMailParserShutdownHandler::registerForRemoval( $dirName );
152
+        $this->fileName = $dirName . $fileName;
153
+
154
+        $fp = fopen( $this->fileName, 'w' );
155
+        if ( $this->fp === false )
156
+        {
157
+            throw new ezcBaseFileNotFoundException( $this->fileName );
158
+        }
159
+        return $fp;
160
+    }
161
+
162
+    /**
163
+     * Destructs the parser object.
164
+     *
165
+     * Closes and removes any open file.
166
+     */
167
+    public function __destruct()
168
+    {
169
+        // finish() was not called. The mail is completely broken.
170
+        // we will clean up the mess
171
+        if ( $this->fp !== null )
172
+        {
173
+            fclose( $this->fp );
174
+            $this->fp = null;
175
+            if ( $this->fileName !== null && file_exists( $this->fileName ) )
176
+            {
177
+                unlink( $this->fileName );
178
+            }
179
+        }
180
+    }
181
+
182
+    /**
183
+     * Sets the correct stream filters for the attachment.
184
+     *
185
+     * $line should contain one line of data that should be written to file.
186
+     * It is used to correctly determine the type of linebreak used in the mail.
187
+     *
188
+     * @param string $line
189
+     */
190
+    private function appendStreamFilters( $line )
191
+    {
192
+        // append the correct decoding filter
193
+        switch ( strtolower( $this->headers['Content-Transfer-Encoding'] ) )
194
+        {
195
+            case 'base64':
196
+                stream_filter_append( $this->fp, 'convert.base64-decode' );
197
+                break;
198
+            case 'quoted-printable':
199
+                // fetch the type of linebreak
200
+                preg_match( "/(\r\n|\r|\n)$/", $line, $matches );
201
+                $lb = count( $matches ) > 0 ? $matches[0] : ezcMailTools::lineBreak();
202
+
203
+                $param = array( 'line-break-chars' => $lb );
204
+                stream_filter_append( $this->fp, 'convert.quoted-printable-decode',
205
+                                      STREAM_FILTER_WRITE, $param );
206
+                break;
207
+            case '7bit':
208
+            case '8bit':
209
+                // do nothing here, file is already just binary
210
+                break;
211
+            default:
212
+                // 7bit default
213
+                break;
214
+        }
215
+    }
216
+
217
+
218
+    /**
219
+     * Parse the body of a message line by line.
220
+     *
221
+     * This method is called by the parent part on a push basis. When there
222
+     * are no more lines the parent part will call finish() to retrieve the
223
+     * mailPart.
224
+     *
225
+     * The file will be decoded and saved to the given temporary directory within
226
+     * a directory based on the process ID and the time.
227
+     *
228
+     * @param string $line
229
+     */
230
+    public function parseBody( $line )
231
+    {
232
+        if ( $line !== '' )
233
+        {
234
+            if ( $this->dataWritten === false )
235
+            {
236
+                $this->appendStreamFilters( $line );
237
+                $this->dataWritten = true;
238
+            }
239
+
240
+            fwrite( $this->fp, $line );
241
+        }
242
+    }
243
+
244
+    /**
245
+     * Return the result of the parsed file part.
246
+     *
247
+     * This method is called automatically by the parent part.
248
+     *
249
+     * @return ezcMailFile
250
+     */
251
+    public function finish()
252
+    {
253
+        fclose( $this->fp );
254
+        $this->fp = null;
255
+
256
+
257
+        // FIXME: DIRTY PGP HACK
258
+        // When we have PGP support these lines should be removed. They are here now to hide
259
+        // PGP parts since they will show up as file attachments if not.
260
+        if ( $this->mainType == "application" &&
261
+            ( $this->subType == 'pgp-signature'
262
+              || $this->subType == 'pgp-keys'
263
+              || $this->subType == 'pgp-encrypted' ) )
264
+        {
265
+            return null;
266
+        }
267
+        // END DIRTY PGP HACK
268
+
269
+        $filePart = new self::$fileClass( $this->fileName );
270
+
271
+        // set content type
272
+        $filePart->setHeaders( $this->headers->getCaseSensitiveArray() );
273
+        ezcMailPartParser::parsePartHeaders( $this->headers, $filePart );
274
+        switch ( strtolower( $this->mainType ) )
275
+        {
276
+            case 'image':
277
+                $filePart->contentType = ezcMailFile::CONTENT_TYPE_IMAGE;
278
+                break;
279
+            case 'audio':
280
+                $filePart->contentType = ezcMailFile::CONTENT_TYPE_AUDIO;
281
+                break;
282
+            case 'video':
283
+                $filePart->contentType = ezcMailFile::CONTENT_TYPE_VIDEO;
284
+                break;
285
+            case 'application':
286
+                $filePart->contentType = ezcMailFile::CONTENT_TYPE_APPLICATION;
287
+                break;
288
+        }
289
+
290
+        // set mime type
291
+        $filePart->mimeType = $this->subType;
292
+
293
+        // set inline disposition mode if set.
294
+        $matches = array();
295
+        if ( preg_match( '/^\s*inline;?/i',
296
+                        $this->headers['Content-Disposition'], $matches ) )
297
+        {
298
+            $filePart->dispositionType = ezcMailFile::DISPLAY_INLINE;
299
+        }
300
+        if ( preg_match( '/^\s*attachment;?/i',
301
+                        $this->headers['Content-Disposition'], $matches ) )
302
+        {
303
+            $filePart->dispositionType = ezcMailFile::DISPLAY_ATTACHMENT;
304
+        }
305
+        $filePart->size = filesize( $this->fileName );
306
+        return $filePart;
307
+    }
308
+}
309
+?>
... ...
@@ -0,0 +1,68 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailMultipartAlternativeParser class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Parses multipart/mixed mail parts.
13
+ *
14
+ * @package Mail
15
+ * @version 1.7.1
16
+ * @access private
17
+ */
18
+class ezcMailMultipartAlternativeParser extends ezcMailMultipartParser
19
+{
20
+    /**
21
+     * Holds the ezcMailMultipartAlternative part corresponding to the data parsed with this parser.
22
+     *
23
+     * @var ezcMailMultipartAlternative
24
+     */
25
+    private $part = null;
26
+
27
+    /**
28
+     * Constructs a new ezcMailMultipartAlternativeParser.
29
+     *
30
+     * @param ezcMailHeadersHolder $headers
31
+     */
32
+    public function __construct( ezcMailHeadersHolder $headers )
33
+    {
34
+        parent::__construct( $headers );
35
+        $this->part = new ezcMailMultipartAlternative();
36
+    }
37
+
38
+    /**
39
+     * Adds the part $part to the list of multipart messages.
40
+     *
41
+     * This method is called automatically by ezcMailMultipartParser
42
+     * each time a part is parsed.
43
+     *
44
+     * @param ezcMailPart $part
45
+     */
46
+    public function partDone( ezcMailPart $part )
47
+    {
48
+        $this->part->appendPart( $part );
49
+    }
50
+
51
+    /**
52
+     * Returns the parts parsed for this multipart.
53
+     *
54
+     * @return ezcMailMultipartAlternative
55
+     */
56
+    public function finishMultipart()
57
+    {
58
+        $size = 0;
59
+        foreach ( $this->part->getParts() as $part )
60
+        {
61
+            $size += $part->size;
62
+        }
63
+        $this->part->size = $size;
64
+        return $this->part;
65
+    }
66
+}
67
+
68
+?>
... ...
@@ -0,0 +1,68 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailMultipartDigestParser class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Parses multipart/digest mail parts.
13
+ *
14
+ * @package Mail
15
+ * @version 1.7.1
16
+ * @access private
17
+ */
18
+class ezcMailMultipartDigestParser extends ezcMailMultipartParser
19
+{
20
+    /**
21
+     * Holds the ezcMailMultipartDigest part corresponding to the data parsed with this parser.
22
+     *
23
+     * @var ezcMailMultipartDigest
24
+     */
25
+    private $part = null;
26
+
27
+    /**
28
+     * Constructs a new ezcMailMultipartDigestParser.
29
+     *
30
+     * @param ezcMailHeadersHolder $headers
31
+     */
32
+    public function __construct( ezcMailHeadersHolder $headers )
33
+    {
34
+        parent::__construct( $headers );
35
+        $this->part = new ezcMailMultipartDigest();
36
+    }
37
+
38
+    /**
39
+     * Adds the part $part to the list of multipart messages.
40
+     *
41
+     * This method is called automatically by ezcMailMultipartParser
42
+     * each time a part is parsed.
43
+     *
44
+     * @param ezcMailPart $part
45
+     */
46
+    public function partDone( ezcMailPart $part )
47
+    {
48
+        $this->part->appendPart( $part );
49
+    }
50
+
51
+    /**
52
+     * Returns the parts parsed for this multipart.
53
+     *
54
+     * @return ezcMailMultipartDigest
55
+     */
56
+    public function finishMultipart()
57
+    {
58
+        $size = 0;
59
+        foreach ( $this->part->getParts() as $part )
60
+        {
61
+            $size += $part->size;
62
+        }
63
+        $this->part->size = $size;
64
+        return $this->part;
65
+    }
66
+}
67
+
68
+?>
... ...
@@ -0,0 +1,67 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailMultipartMixedParser class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Parses multipart/mixed mail parts.
13
+ *
14
+ * @package Mail
15
+ * @version 1.7.1
16
+ * @access private
17
+ */
18
+class ezcMailMultipartMixedParser extends ezcMailMultipartParser
19
+{
20
+    /**
21
+     * Holds the ezcMailMultipartMixed part corresponding to the data parsed with this parser.
22
+     *
23
+     * @var ezcMailMultipartMixed
24
+     */
25
+    private $part = null;
26
+
27
+    /**
28
+     * Constructs a new ezcMailMultipartMixedParser.
29
+     *
30
+     * @param ezcMailHeadersHolder $headers
31
+     */
32
+    public function __construct( ezcMailHeadersHolder $headers )
33
+    {
34
+        parent::__construct( $headers );
35
+        $this->part = new ezcMailMultipartMixed();
36
+    }
37
+
38
+    /**
39
+     * Adds the part $part to the list of multipart messages.
40
+     *
41
+     * This method is called automatically by ezcMailMultipartParser
42
+     * each time a part is parsed.
43
+     *
44
+     * @param ezcMailPart $part
45
+     */
46
+    public function partDone( ezcMailPart $part )
47
+    {
48
+        $this->part->appendPart( $part );
49
+    }
50
+
51
+    /**
52
+     * Returns the parts parsed for this multipart.
53
+     *
54
+     * @return ezcMailMultipartMixed
55
+     */
56
+    public function finishMultipart()
57
+    {
58
+        $size = 0;
59
+        foreach ( $this->part->getParts() as $part )
60
+        {
61
+            $size += $part->size;
62
+        }
63
+        $this->part->size = $size;
64
+        return $this->part;
65
+    }
66
+}
67
+?>
... ...
@@ -0,0 +1,230 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailMultipartParser class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Base class for Multipart parsers.
13
+ *
14
+ * @package Mail
15
+ * @version 1.7.1
16
+ * @access private
17
+ */
18
+abstract class ezcMailMultipartParser extends ezcMailPartParser
19
+{
20
+    /**
21
+     * The boundary separator string.
22
+     *
23
+     * @var string
24
+     */
25
+    private $boundary = null;
26
+
27
+    /**
28
+     * The headers for the multipart.
29
+     *
30
+     * @var ezcMailHeadersHolder
31
+     */
32
+    protected $headers = null;
33
+
34
+    /**
35
+     * The headers for the current subpart.
36
+     *
37
+     * @var ezcMailHeadersHolder
38
+     */
39
+    private $currentPartHeaders = null;
40
+
41
+    /**
42
+     * The current part.
43
+     *
44
+     * @var ezcMailPartParser
45
+     */
46
+    private $currentPartParser = null;
47
+
48
+    /**
49
+     * This state is used prior to hitting the first part.
50
+     */
51
+    const PARSE_STATE_PRE_FIRST = 1;
52
+
53
+    /**
54
+     * This state is used when the parser is parsing headers.
55
+     */
56
+    const PARSE_STATE_HEADERS = 2;
57
+
58
+    /**
59
+     * This state is used when the parser is parsing the body.
60
+     */
61
+    const PARSE_STATE_BODY = 3;
62
+
63
+    /**
64
+     * This state is set after the last of the parts is closed.
65
+     */
66
+    const PARSE_STATE_POST_LAST = 4;
67
+
68
+    /**
69
+     * Stores the state of the parser.
70
+     *
71
+     * @var int
72
+     */
73
+    private $parserState = self::PARSE_STATE_PRE_FIRST;
74
+
75
+    /**
76
+     * Constructs a new Multipart parser.
77
+     *
78
+     * @param ezcMailHeadersHolder $headers
79
+     */
80
+    public function __construct( ezcMailHeadersHolder $headers )
81
+    {
82
+        $this->headers = $headers;
83
+
84
+        // get the boundary
85
+        preg_match( '/\s*boundary="?([^;"]*);?/i',
86
+                    $this->headers['Content-Type'],
87
+                    $parameters );
88
+        if ( count( $parameters ) > 0 )
89
+        {
90
+            $this->boundary = trim( $parameters[1], '"' );
91
+        }
92
+        else
93
+        {
94
+            // no boundary?!? Houston, we have a problem.
95
+            // todo: try to detect the boundary by scanning for --lines
96
+        }
97
+    }
98
+
99
+    /**
100
+     * Parses a multipart body.
101
+     *
102
+     * @throws ezcBaseFileNotFoundException
103
+     *         if a neccessary temporary file could not be opened.
104
+     * @param string $origLine
105
+     */
106
+    public function parseBody( $origLine )
107
+    {
108
+        if ( $this->parserState == self::PARSE_STATE_POST_LAST )
109
+        {
110
+            return;
111
+        }
112
+
113
+        $line = rtrim( $origLine, "\r\n" );
114
+
115
+        // check if we hit any of the boundaries
116
+        $newPart = false;
117
+        $endOfMultipart = false;
118
+        if ( strlen( $line ) > 0 && $line[0] == "-" )
119
+        {
120
+            if ( strcmp( trim( $line ), '--' . $this->boundary ) === 0 )
121
+            {
122
+                $newPart = true;
123
+            }
124
+            else if ( strcmp( trim( $line ), '--' . $this->boundary . '--' ) === 0 )
125
+            {
126
+                $endOfMultipart = true;
127
+            }
128
+        }
129
+
130
+        // actions to do when starting or finishing a part
131
+        if ( $newPart || $endOfMultipart )
132
+        {
133
+            if ( $this->parserState != self::PARSE_STATE_BODY )
134
+            {
135
+                // something is b0rked, we got a new separator before getting a body
136
+                // we'll skip this part and continue to the next
137
+                $this->currentPartParser = null;
138
+                $this->currentPartHeaders = new ezcMailHeadersHolder();
139
+                $this->parserState = $newPart ? self::PARSE_STATE_HEADERS : self::PARSE_STATE_POST_LAST;
140
+            }
141
+            else
142
+            {
143
+                // complete the work on the current part if there was any
144
+                if ( $this->currentPartParser !== null )
145
+                {
146
+                    $part = $this->currentPartParser->finish();
147
+                    if ( $part !== null ) // parsing failed
148
+                    {
149
+                        $this->partDone( $part );
150
+                    }
151
+                }
152
+
153
+                // prepare for a new part if any
154
+                $this->currentPartParser = null;
155
+                $this->parserState =self::PARSE_STATE_POST_LAST;
156
+                if ( $newPart )
157
+                {
158
+                    $this->parserState = self::PARSE_STATE_HEADERS;
159
+                    $this->currentPartHeaders = new ezcMailHeadersHolder();
160
+                }
161
+            }
162
+        }
163
+        // normal data, pass to headers or current body
164
+        else
165
+        {
166
+            if ( $this->parserState == self::PARSE_STATE_HEADERS && $line == '' )
167
+            {
168
+                $this->currentPartParser = self::createPartParserForHeaders( $this->currentPartHeaders );
169
+                $this->parserState = self::PARSE_STATE_BODY;
170
+            }
171
+            else if ( $this->parserState == self::PARSE_STATE_HEADERS )
172
+            {
173
+                $this->parseHeader( $line, $this->currentPartHeaders );
174
+            }
175
+            else if ( $this->parserState == self::PARSE_STATE_BODY )
176
+            {
177
+                if ( $this->currentPartParser ) // we may have none if the part type was unknown
178
+                {
179
+                    // send body data to the part
180
+                    $this->currentPartParser->parseBody( $origLine );
181
+                }
182
+            }
183
+            // we are done parsing the multipart, ignore anything else pushed to us.
184
+        }
185
+    }
186
+
187
+    /**
188
+     * Completes the parsing of the multipart and returns the corresponding part.
189
+     *
190
+     * This method should not be overriden. Use finishMultipart() instead.
191
+     *
192
+     * @return ezcMailMultipart
193
+     */
194
+    public function finish()
195
+    {
196
+        if ( $this->parserState != self::PARSE_STATE_POST_LAST )
197
+        {
198
+            // this should never happen
199
+            // let's give the last parser a chance to clean up after himself
200
+            if ( $this->currentPartParser !== null )
201
+            {
202
+                $part = $this->currentPartParser->finish();
203
+                $this->partDone( $part );
204
+                $this->currentPartParser = null;
205
+            }
206
+        }
207
+        $multipart = $this->finishMultipart();
208
+        ezcMailPartParser::parsePartHeaders( $this->headers, $multipart );
209
+        $multipart->boundary = $this->boundary;
210
+        return $multipart;
211
+    }
212
+
213
+    /**
214
+     * This function will be called every time a part has been parsed.
215
+     *
216
+     * Implementors should put the part into the correct multitype part.
217
+     * @param ezcMailPart $part
218
+     */
219
+    abstract public function partDone( ezcMailPart $part );
220
+
221
+    /**
222
+     * Returns the multipart part corresponding to the parsed object.
223
+     *
224
+     * This method is called by finish() when all parts have been parsed.
225
+     *
226
+     * @return ezcMailMultipart
227
+     */
228
+    abstract public function finishMultipart();
229
+}
230
+?>
... ...
@@ -0,0 +1,78 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailMultipartRelatedParser class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Parses multipart/related mail parts.
13
+ *
14
+ * @package Mail
15
+ * @version 1.7.1
16
+ * @access private
17
+ */
18
+class ezcMailMultipartRelatedParser extends ezcMailMultipartParser
19
+{
20
+    /**
21
+     * Holds the ezcMailMultipartRelated part corresponding to the data parsed with this parser.
22
+     *
23
+     * @var ezcMailMultipartRelated
24
+     */
25
+    private $part = null;
26
+
27
+    /**
28
+     * Constructs a new ezcMailMultipartRelatedParser.
29
+     *
30
+     * @param ezcMailHeadersHolder $headers
31
+     */
32
+    public function __construct( ezcMailHeadersHolder $headers )
33
+    {
34
+        parent::__construct( $headers );
35
+        $this->part = new ezcMailMultipartRelated();
36
+    }
37
+
38
+    /**
39
+     * Adds the part $part to the list of multipart messages.
40
+     *
41
+     * This method is called automatically by ezcMailMultipartParser
42
+     * each time a part is parsed.
43
+     *
44
+     * @param ezcMailPart $part
45
+     */
46
+    public function partDone( ezcMailPart $part )
47
+    {
48
+        // TODO: support Content-Type: start= as specified by RFC 2387
49
+        if ( !$this->part->getMainPart() )
50
+        {
51
+            $this->part->setMainPart( $part );
52
+            return;
53
+        }
54
+        $this->part->addRelatedPart( $part );
55
+    }
56
+
57
+    /**
58
+     * Returns the parts parsed for this multipart.
59
+     *
60
+     * @return ezcMailMultipartRelated
61
+     */
62
+    public function finishMultipart()
63
+    {
64
+        $size = 0;
65
+        if ( $this->part->getMainPart() )
66
+        {
67
+            $size = $this->part->getMainPart()->size;
68
+        }
69
+        foreach ( $this->part->getRelatedParts() as $part )
70
+        {
71
+            $size += $part->size;
72
+        }
73
+        $this->part->size = $size;
74
+        return $this->part;
75
+    }
76
+}
77
+
78
+?>
... ...
@@ -0,0 +1,94 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailMultipartReportParser class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Parses multipart/report mail parts.
13
+ *
14
+ * @package Mail
15
+ * @version 1.7.1
16
+ * @access private
17
+ */
18
+class ezcMailMultipartReportParser extends ezcMailMultipartParser
19
+{
20
+    /**
21
+     * Holds the ezcMailMultipartReport part corresponding to the data parsed with this parser.
22
+     *
23
+     * @var ezcMailMultipartReport
24
+     */
25
+    private $report;
26
+
27
+    /**
28
+     * Holds the mail parts which will be part of the returned multipart report.
29
+     *
30
+     * @var array(ezcMailPart)
31
+     */
32
+    private $parts;
33
+
34
+    /**
35
+     * Constructs a new ezcMailMultipartReportParser.
36
+     *
37
+     * @param ezcMailHeadersHolder $headers
38
+     */
39
+    public function __construct( ezcMailHeadersHolder $headers )
40
+    {
41
+        parent::__construct( $headers );
42
+        $this->report = new ezcMailMultipartReport();
43
+        $this->parts = array();
44
+        preg_match( '/\s*report-type="?([^;"]*);?/i',
45
+                    $this->headers['Content-Type'],
46
+                    $parameters );
47
+        if ( count( $parameters ) > 0 )
48
+        {
49
+            $this->report->reportType = trim( $parameters[1], '"' );
50
+        }
51
+    }
52
+
53
+    /**
54
+     * Adds the part $part to the list of multipart messages.
55
+     *
56
+     * This method is called automatically by ezcMailMultipartParser
57
+     * each time a part is parsed.
58
+     *
59
+     * @param ezcMailPart $part
60
+     */
61
+    public function partDone( ezcMailPart $part )
62
+    {
63
+        $this->parts[] = $part;
64
+    }
65
+
66
+    /**
67
+     * Returns the parts parsed for this multipart.
68
+     *
69
+     * @return ezcMailMultipartReport
70
+     */
71
+    public function finishMultipart()
72
+    {
73
+        if ( isset( $this->parts[0] ) )
74
+        {
75
+            $this->report->setReadablePart( $this->parts[0] );
76
+        }
77
+        if ( isset( $this->parts[1] ) )
78
+        {
79
+            $this->report->setMachinePart( $this->parts[1] );
80
+        }
81
+        if ( isset( $this->parts[2] ) )
82
+        {
83
+            $this->report->setOriginalPart( $this->parts[2] );
84
+        }
85
+        $size = 0;
86
+        foreach ( $this->report->getParts() as $part )
87
+        {
88
+            $size += $part->size;
89
+        }
90
+        $this->report->size = $size;
91
+        return $this->report;
92
+    }
93
+}
94
+?>
... ...
@@ -0,0 +1,82 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailRfc822DigestParser class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Parses RFC822 messages.
13
+ *
14
+ * Note that this class does not parse RFC822 digest messages containing of an extra header block.
15
+ * Use the RFC822DigestParser to these.
16
+ *
17
+ * @package Mail
18
+ * @version 1.7.1
19
+ * @access private
20
+ */
21
+class ezcMailRfc822DigestParser extends ezcMailPartParser
22
+{
23
+    /**
24
+     * Holds the headers for this part.
25
+     *
26
+     * @var ezcMailHeadersHolder
27
+     */
28
+    private $headers = null;
29
+
30
+    /**
31
+     * Holds the digested message parser.
32
+     *
33
+     * @var ezcMailPartParser
34
+     */
35
+    private $mailParser = null;
36
+
37
+    /**
38
+     * Holds the size of the digest.
39
+     *
40
+     * @var int
41
+     */
42
+    private $size;
43
+
44
+    /**
45
+     * Constructs a new digest parser with the headers $headers.
46
+     *
47
+     * @param ezcMailHeadersHolder $headers
48
+     */
49
+    public function __construct( ezcMailHeadersHolder $headers )
50
+    {
51
+        $this->headers = $headers;
52
+        $this->mailParser = new ezcMailRfc822Parser();
53
+        $this->size = 0;
54
+    }
55
+
56
+    /**
57
+     * Parses each line of the digest body.
58
+     *
59
+     * Every line is part of the digested mail. It is sent directly to the mail parser.
60
+     *
61
+     * @param string $line
62
+     */
63
+    public function parseBody( $line )
64
+    {
65
+        $this->mailParser->parseBody( $line );
66
+        $this->size += strlen( $line );
67
+    }
68
+
69
+    /**
70
+     * Returns a ezcMailRfc822Digest with the digested mail in it.
71
+     *
72
+     * @return ezcMailRfc822Digest
73
+     */
74
+    public function finish()
75
+    {
76
+        $digest = new ezcMailRfc822Digest( $this->mailParser->finish() );
77
+        ezcMailPartParser::parsePartHeaders( $this->headers, $digest );
78
+        $digest->size = $this->size;
79
+        return $digest;
80
+    }
81
+}
82
+?>
... ...
@@ -0,0 +1,165 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailRfc822Parser class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Parses RFC822 messages.
13
+ *
14
+ * Note that this class does not parse RFC822 digest messages containing an extra header block.
15
+ * Use the RFC822DigestParser to these.
16
+ *
17
+ * @package Mail
18
+ * @version 1.7.1
19
+ * @access private
20
+ */
21
+class ezcMailRfc822Parser extends ezcMailPartParser
22
+{
23
+    /**
24
+     * Holds the headers parsed.
25
+     *
26
+     * @var ezcMailHeadersHolder
27
+     */
28
+    private $headers = null;
29
+
30
+    /**
31
+     * This state is used when the parser is parsing headers.
32
+     */
33
+    const PARSE_STATE_HEADERS = 1;
34
+
35
+    /**
36
+     * This state is used when the parser is parsing the body.
37
+     */
38
+    const PARSE_STATE_BODY = 2;
39
+
40
+    /**
41
+     * Stores the state of the parser.
42
+     *
43
+     * @var int
44
+     */
45
+    private $parserState = self::PARSE_STATE_HEADERS;
46
+
47
+    /**
48
+     * The parser of the body.
49
+     *
50
+     * This will be set after the headers have been parsed.
51
+     *
52
+     * @var ezcMailPartParser
53
+     */
54
+    private $bodyParser = null;
55
+
56
+    /**
57
+     * Constructs a new ezcMailRfc822Parser.
58
+     */
59
+    public function __construct()
60
+    {
61
+        $this->headers = new ezcMailHeadersHolder();
62
+    }
63
+
64
+    /**
65
+     * Parses the body of an rfc 2822 message.
66
+     *
67
+     * @throws ezcBaseFileNotFoundException
68
+     *         if a neccessary temporary file could not be openened.
69
+     * @param string $origLine
70
+     */
71
+    public function parseBody( $origLine )
72
+    {
73
+        $line = rtrim( $origLine, "\r\n" );
74
+        if ( $this->parserState == self::PARSE_STATE_HEADERS && $line == '' )
75
+        {
76
+            $this->parserState = self::PARSE_STATE_BODY;
77
+
78
+            // clean up headers for the part
79
+            // the rest of the headers should be set on the mail object.
80
+
81
+            $headers = new ezcMailHeadersHolder();
82
+            $headers['Content-Type'] = $this->headers['Content-Type'];
83
+            if ( isset( $this->headers['Content-Transfer-Encoding'] ) )
84
+            {
85
+                $headers['Content-Transfer-Encoding'] = $this->headers['Content-Transfer-Encoding'];
86
+            }
87
+
88
+            if ( isset( $this->headers['Content-Disposition'] ) )
89
+            {
90
+                $headers['Content-Disposition'] = $this->headers['Content-Disposition'];
91
+            }
92
+
93
+            // get the correct body type
94
+            $this->bodyParser = self::createPartParserForHeaders( $headers );
95
+        }
96
+        else if ( $this->parserState == self::PARSE_STATE_HEADERS )
97
+        {
98
+            $this->parseHeader( $line, $this->headers );
99
+        }
100
+        else // we are parsing headers
101
+        {
102
+            $this->bodyParser->parseBody( $origLine );
103
+        }
104
+    }
105
+
106
+    /**
107
+     * Returns an ezcMail corresponding to the parsed message.
108
+     * You can specify an alternate class using the $class parameter, if you
109
+     * extended ezcMail.
110
+     *
111
+     * @param string $class Class to instanciate instead of ezcMail.
112
+     * @return ezcMail
113
+     */
114
+    public function finish( $class = "ezcMail" )
115
+    {
116
+        $mail = new $class();
117
+        $mail->setHeaders( $this->headers->getCaseSensitiveArray() );
118
+        ezcMailPartParser::parsePartHeaders( $this->headers, $mail );
119
+
120
+        // from
121
+        if ( isset( $this->headers['From'] ) )
122
+        {
123
+            $mail->from = ezcMailTools::parseEmailAddress( $this->headers['From'] );
124
+        }
125
+        // to
126
+        if ( isset( $this->headers['To'] ) )
127
+        {
128
+            $mail->to = ezcMailTools::parseEmailAddresses( $this->headers['To'] );
129
+        }
130
+        // cc
131
+        if ( isset( $this->headers['Cc'] ) )
132
+        {
133
+            $mail->cc = ezcMailTools::parseEmailAddresses( $this->headers['Cc'] );
134
+        }
135
+        // bcc
136
+        if ( isset( $this->headers['Bcc'] ) )
137
+        {
138
+            $mail->bcc = ezcMailTools::parseEmailAddresses( $this->headers['Bcc'] );
139
+        }
140
+        // subject
141
+        if ( isset( $this->headers['Subject'] ) )
142
+        {
143
+            $mail->subject = ezcMailTools::mimeDecode( $this->headers['Subject'] );
144
+            $mail->subjectCharset = 'utf-8';
145
+        }
146
+        // message ID
147
+        if ( isset( $this->headers['Message-Id'] ) )
148
+        {
149
+            $mail->messageID = $this->headers['Message-Id'];
150
+        }
151
+
152
+        // Return-Path
153
+        if ( isset( $this->headers['Return-Path'] ) )
154
+        {
155
+            $mail->returnPath = ezcMailTools::parseEmailAddress( $this->headers['Return-Path'] );
156
+        }
157
+
158
+        if ( $this->bodyParser !== null )
159
+        {
160
+            $mail->body = $this->bodyParser->finish();
161
+        }
162
+        return $mail;
163
+    }
164
+}
165
+?>
... ...
@@ -0,0 +1,111 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailTextParser class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Parses mail parts of type "text".
13
+ *
14
+ * @package Mail
15
+ * @version 1.7.1
16
+ * @access private
17
+ */
18
+class ezcMailTextParser extends ezcMailPartParser
19
+{
20
+    /**
21
+     * Stores the parsed text of this part.
22
+     *
23
+     * @var string $text
24
+     */
25
+    private $text = null;
26
+
27
+    /**
28
+     * Holds the headers of this text part.
29
+     *
30
+     * @var ezcMailHeadersHolder
31
+     */
32
+    private $headers = null;
33
+
34
+    /**
35
+     * Holds the subtype of the parsed part.
36
+     *
37
+     * @var string
38
+     */
39
+    private $subType = null;
40
+
41
+    /**
42
+     * Constructs a new ezcMailTextParser of the subtype $subType and
43
+     * additional headers $headers.
44
+     *
45
+     * @param string $subType
46
+     * @param ezcMailHeadersHolder $headers
47
+     */
48
+    public function __construct( $subType, ezcMailHeadersHolder $headers )
49
+    {
50
+        $this->subType = $subType;
51
+        $this->headers = $headers;
52
+    }
53
+
54
+    /**
55
+     * Adds each line to the body of the text part.
56
+     *
57
+     * @param string $line
58
+     */
59
+    public function parseBody( $line )
60
+    {
61
+        $line = rtrim( $line, "\r\n" );
62
+        if ( $this->text === null )
63
+        {
64
+            $this->text = $line;
65
+        }
66
+        else
67
+        {
68
+            $this->text .= "\n" . $line;
69
+        }
70
+    }
71
+
72
+    /**
73
+     * Returns the ezcMailText part corresponding to the parsed message.
74
+     *
75
+     * @return ezcMailText
76
+     */
77
+    public function finish()
78
+    {
79
+        $charset = "us-ascii"; // RFC 2822 default
80
+        if ( isset( $this->headers['Content-Type'] ) )
81
+        {
82
+            preg_match( '/\s*charset\s?=\s?"?([^;"\s]*);?/',
83
+                            $this->headers['Content-Type'],
84
+                            $parameters );
85
+            if ( count( $parameters ) > 0 )
86
+            {
87
+                $charset = strtolower( trim( $parameters[1], '"' ) );
88
+            }
89
+        }
90
+
91
+        $encoding = strtolower( $this->headers['Content-Transfer-Encoding'] );
92
+        if ( $encoding == ezcMail::QUOTED_PRINTABLE )
93
+        {
94
+            $this->text = quoted_printable_decode( $this->text );
95
+        }
96
+        else if ( $encoding == ezcMail::BASE64 )
97
+        {
98
+            $this->text = base64_decode( $this->text );
99
+        }
100
+
101
+        $this->text = ezcMailCharsetConverter::convertToUTF8( $this->text, $charset );
102
+
103
+        $part = new ezcMailText( $this->text, 'utf-8', ezcMail::EIGHT_BIT, $charset );
104
+        $part->subType = $this->subType;
105
+        $part->setHeaders( $this->headers->getCaseSensitiveArray() );
106
+        ezcMailPartParser::parsePartHeaders( $this->headers, $part );
107
+        $part->size = strlen( $this->text );
108
+        return $part;
109
+    }
110
+}
111
+?>
... ...
@@ -0,0 +1,192 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailRfc2231Implementation class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ * @access private
10
+ */
11
+
12
+/**
13
+ * This class parses header fields that conform to RFC2231.
14
+ *
15
+ * Headers conforming to this specification are Content-Type and Content-Disposition.
16
+ *
17
+ * @package Mail
18
+ * @version 1.7.1
19
+ * @access private
20
+ */
21
+class ezcMailRfc2231Implementation
22
+{
23
+    /**
24
+     * Returns the parsed header $header according to RFC 2231.
25
+     *
26
+     * This method returns the parsed header as a structured array and is
27
+     * intended for internal usage. Use parseContentDisposition and
28
+     * parseContentType to retrieve the correct header structs directly.
29
+     *
30
+     * @param string $header
31
+     * @return array( 'argument', array( 'paramName' => array( value => string, charset => string,
32
+     * language => string ) ) );
33
+     */
34
+    public static function parseHeader( $header )
35
+    {
36
+        $result = array();
37
+        // argument
38
+        if ( preg_match( '/^\s*([^;]*);?/i', $header, $matches ) )
39
+        {
40
+            $result[0] = $matches[1];
41
+        }
42
+
43
+        // We must go through all parameters and store this data because
44
+        // parameters can be unordered. We will store them in this buffer
45
+        // array( paramName => array( array( value => string, encoding ) ) )
46
+        $parameterBuffer = array();
47
+
48
+        // parameters
49
+        if ( preg_match_all( '/\s*(\S*?)="?([^;"]*);?/i', $header, $matches, PREG_SET_ORDER ) )
50
+        {
51
+            foreach ( $matches as $parameter )
52
+            {
53
+                // if normal parameter, simply add it
54
+                if ( !preg_match( '/([^\*]+)\*(\d+)?(\*)?/', $parameter[1], $metaData ) )
55
+                {
56
+                    $result[1][$parameter[1]] = array( 'value' => $parameter[2] );
57
+                }
58
+                else // coded and/or folded
59
+                {
60
+                    // metaData [1] holds the param name
61
+                    // metaData [2] holds the count or is not set in case of charset only
62
+                    // metaData [3] holds '*' if there is charset in addition to folding
63
+                    if ( isset( $metaData[2] ) ) // we have folding
64
+                    {
65
+                        $parameterBuffer[$metaData[1]][$metaData[2]]['value'] = $parameter[2];
66
+                        $parameterBuffer[$metaData[1]][$metaData[2]]['encoding'] =
67
+                            isset( $metaData[3] ) ? true : false;;
68
+                    }
69
+                    else
70
+                    {
71
+                        $parameterBuffer[$metaData[1]][0]['value'] = $parameter[2];
72
+                        $parameterBuffer[$metaData[1]][0]['encoding'] = true;
73
+                    }
74
+                }
75
+            }
76
+
77
+            // whohooo... we have all the parameters nicely sorted.
78
+            // Now we must go through them all and convert them into the end result
79
+            foreach ( $parameterBuffer as $paramName => $parts )
80
+            {
81
+                // fetch language and encoding if we have it
82
+                // syntax: '[charset]'[language]'encoded_string
83
+                $language = null;
84
+                $charset = null;
85
+                if ( $parts[0]['encoding'] == true )
86
+                {
87
+                    preg_match( "/(\S*)'(\S*)'(.*)/", $parts[0]['value'], $matches );
88
+                    $charset = $matches[1];
89
+                    $language = $matches[2];
90
+                    $parts[0]['value'] = urldecode( $matches[3] ); // rewrite value: todo: decoding
91
+                    $result[1][$paramName] = array( 'value' => $parts[0]['value'] );
92
+                }
93
+
94
+                $result[1][$paramName] = array( 'value' => $parts[0]['value'] );
95
+                if ( strlen( $charset ) > 0 )
96
+                {
97
+                    $result[1][$paramName]['charset'] = $charset;
98
+                }
99
+                if ( strlen( $language ) > 0 )
100
+                {
101
+                    $result[1][$paramName]['language'] = $language;
102
+                }
103
+
104
+                if ( count( $parts > 1 ) )
105
+                {
106
+                    for ( $i = 1; $i < count( $parts ); $i++ )
107
+                    {
108
+                        $result[1][$paramName]['value'] .= $parts[$i]['encoding'] ?
109
+                            urldecode( $parts[$i]['value'] ) : $parts[$i]['value'];
110
+                    }
111
+                }
112
+            }
113
+        }
114
+        return $result;
115
+    }
116
+
117
+    /**
118
+     * Returns the a ezcMailContentDispositionHeader for the parsed $header.
119
+     *
120
+     * If $cd is provided this object will be used to fill in the blanks. This function
121
+     * will not clear out any old values in the object.
122
+     *
123
+     * @param string $header
124
+     * @param ezcMailContentDispositionHeader $cd
125
+     * @return ezcMailContentDispositionHeader
126
+     */
127
+    public static function parseContentDisposition( $header, ezcMailContentDispositionHeader $cd = null )
128
+    {
129
+        if ( $cd === null )
130
+        {
131
+            $cd = new ezcMailContentDispositionHeader();
132
+        }
133
+
134
+        $parsedHeader = self::parseHeader( $header );
135
+        $cd->disposition = $parsedHeader[0];
136
+        if ( isset( $parsedHeader[1] ) )
137
+        {
138
+            foreach ( $parsedHeader[1] as $paramName => $data )
139
+            {
140
+                switch ( $paramName )
141
+                {
142
+                    case 'filename':
143
+                        $cd->fileName = $data['value'];
144
+                        $cd->displayFileName = trim( $data['value'], '"' );
145
+                        if ( isset( $data['charset'] ) )
146
+                        {
147
+                            $cd->fileNameCharSet = $data['charset'];
148
+                            $cd->displayFileName = ezcMailCharsetConverter::convertToUTF8Iconv( $cd->displayFileName, $cd->fileNameCharSet );
149
+                        }
150
+                        // Work around for bogus email clients that think
151
+                        // it's allowed to use mime-encoding for filenames.
152
+                        // It isn't, see RFC 2184, and issue #13038.
153
+                        else if ( preg_match( '@^=\?[^?]+\?[QqBb]\?@', $cd->displayFileName ) )
154
+                        {
155
+                            $cd->displayFileName = ezcMailTools::mimeDecode( $cd->displayFileName );
156
+                        }
157
+ 
158
+                        if ( isset( $data['language'] ) )
159
+                        {
160
+                            $cd->fileNameLanguage = $data['language'];
161
+                        }
162
+                        break;
163
+                    case 'creation-date':
164
+                        $cd->creationDate = $data['value'];
165
+                        break;
166
+                    case 'modification-date':
167
+                        $cd->modificationDate = $data['value'];
168
+                        break;
169
+                    case 'read-date':
170
+                        $cd->readDate = $data['value'];
171
+                        break;
172
+                    case 'size':
173
+                        $cd->size = $data['value'];
174
+                        break;
175
+                    default:
176
+                        $cd->additionalParameters[$paramName] = $data['value'];
177
+                        if ( isset( $data['charset'] ) )
178
+                        {
179
+                            $cd->additionalParametersMetaData[$paramName]['charSet'] = $data['charset'];
180
+                        }
181
+                        if ( isset( $data['language'] ) )
182
+                        {
183
+                            $cd->additionalParametersMetaData[$paramName]['language'] = $data['language'];
184
+                        }
185
+                        break;
186
+                }
187
+            }
188
+        }
189
+        return $cd;
190
+    }
191
+}
192
+?>
... ...
@@ -0,0 +1,117 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailParserShutdownHandler class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * ezcMailParserShutDownHandler removes temporary files
13
+ * and directories when PHP shuts down.
14
+ *
15
+ * Example:
16
+ * <code>
17
+ * ezcMailParserShutdownHandler::registerForRemoval( "/tmp/file.txt" );
18
+ * </code>
19
+ *
20
+ * The code above will result in file.txt being removed from the system
21
+ * (if it still exists) when PHP shuts down.
22
+ *
23
+ * @package Mail
24
+ * @version 1.7.1
25
+ * @access private
26
+ */
27
+class ezcMailParserShutdownHandler
28
+{
29
+    /**
30
+     * Holds if the handler is registered or not.
31
+     *
32
+     * @var boolean
33
+     */
34
+    private static $isRegistered = false;
35
+
36
+    /**
37
+     * Holds the array of directories that are marked for removal
38
+     * when PHP shuts down.
39
+     *
40
+     * @var array(string)
41
+     */
42
+    private static $directories = array();
43
+
44
+    /**
45
+     * Registers the directory $dir for removal when PHP shuts down.
46
+     *
47
+     * The directory and all of its contents will be removed recursively.
48
+     *
49
+     * @param string $dir
50
+     */
51
+    public static function registerForRemoval( $dir )
52
+    {
53
+        if ( self::$isRegistered === false )
54
+        {
55
+            register_shutdown_function( array( "ezcMailParserShutdownHandler", "shutdownCallback" ) );
56
+            self::$isRegistered = true;
57
+        }
58
+        self::$directories[] = $dir;
59
+    }
60
+
61
+    /**
62
+     * Recursively deletes all registered folders and any contents of the registered
63
+     * directories.
64
+     *
65
+     * Files or directories that can't be deleted are left without warning.
66
+     *
67
+     * @return void
68
+     */
69
+    public static function shutdownCallback()
70
+    {
71
+        foreach ( self::$directories as $directory )
72
+        {
73
+            self::remove( $directory );
74
+        }
75
+    }
76
+
77
+    /**
78
+     * Recursively removes a directory and its contents or a file.
79
+     *
80
+     * Returns true on success and false on error.
81
+     *
82
+     * @param string $itemName
83
+     * @return bool
84
+     */
85
+    public static function remove( $itemName )
86
+    {
87
+        $returnVar = true;
88
+        if ( !is_dir( $itemName ) && file_exists( $itemName ) )
89
+        {
90
+            unlink( $itemName );
91
+            return true;
92
+        }
93
+
94
+        if ( !file_exists( $itemName ) )
95
+        {
96
+            return true;
97
+        }
98
+
99
+        $dir = dir( $itemName );
100
+        $item = $dir->read();
101
+        while ( $item !== false )
102
+        {
103
+            if ( $item != '.' && $item != '..' )
104
+            {
105
+                self::remove( $dir->path . DIRECTORY_SEPARATOR . $item );
106
+                $returnVar = false;
107
+            }
108
+            $item = $dir->read();
109
+        }
110
+
111
+        $dir->close();
112
+        $returnVar = rmdir( $itemName ) && $returnVar ? true : false; // if rmdir succeeds and everything else succeeded
113
+        return $returnVar;
114
+    }
115
+}
116
+
117
+?>
... ...
@@ -0,0 +1,178 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailDeliveryStatus class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Mail part used for sending delivery status message.
13
+ *
14
+ * Multipart/Report: RFC 3462 {@link http://tools.ietf.org/html/rfc3462}
15
+ * Delivery Status Notifications: RFC 3464 {@link http://tools.ietf.org/html/rfc3464}
16
+ *
17
+ * This mail part consists of only headers. The headers are organized into section.
18
+ * There is a per-message section ($message), and several per-recipient sections ($recipients).
19
+ *
20
+ * To access the headers of this part, look at the following example:
21
+ * <code>
22
+ * // $delivery is an object of type ezcMailDeliveryStatus
23
+ * $reportingMta = $delivery->message["Reporting-MTA"];
24
+ * $date = $delivery->message["Arrival-Date"];
25
+ * // get the status received from the first recipient
26
+ * $status1 = $delivery->recipients[0]["Status"];
27
+ * // get the status received from the second recipient
28
+ * $status2 = $delivery->recipients[1]["Status"];
29
+ * </code>
30
+ *
31
+ * @property ezcMailHeadersHolder $message
32
+ *           Holds the per-message headers of the delivery-status message.
33
+ * @property ArrayObject(ezcMailHeadersHolder) $recipients
34
+ *           Holds the recipients of the delivery-status message.
35
+ *
36
+ * @package Mail
37
+ * @version 1.7.1
38
+ */
39
+class ezcMailDeliveryStatus extends ezcMailPart
40
+{
41
+    /**
42
+     * Constructs a new DeliveryStatus part.
43
+     */
44
+    public function __construct()
45
+    {
46
+        $this->message = new ezcMailHeadersHolder();
47
+        $this->recipients = new ArrayObject();
48
+        parent::__construct();
49
+    }
50
+
51
+    /**
52
+     * Sets the property $name to $value.
53
+     *
54
+     * @throws ezcBasePropertyNotFoundException
55
+     *         if the property does not exist
56
+     * @param string $name
57
+     * @param mixed $value
58
+     * @ignore
59
+     */
60
+    public function __set( $name, $value )
61
+    {
62
+        switch ( $name )
63
+        {
64
+            case 'message':
65
+            case 'recipients':
66
+                $this->properties[$name] = $value;
67
+                break;
68
+
69
+            default:
70
+                return parent::__set( $name, $value );
71
+                break;
72
+        }
73
+    }
74
+
75
+    /**
76
+     * Returns the property $name.
77
+     *
78
+     * @throws ezcBasePropertyNotFoundException
79
+     *         if the property does not exist
80
+     * @param string $name
81
+     * @return mixed
82
+     * @ignore
83
+     */
84
+    public function __get( $name )
85
+    {
86
+        switch ( $name )
87
+        {
88
+            case 'message':
89
+            case 'recipients':
90
+                return $this->properties[$name];
91
+                break;
92
+
93
+            default:
94
+                return parent::__get( $name );
95
+                break;
96
+        }
97
+    }
98
+
99
+    /**
100
+     * Returns true if the property $name is set, otherwise false.
101
+     *
102
+     * @param string $name
103
+     * @return bool
104
+     * @ignore
105
+     */
106
+    public function __isset( $name )
107
+    {
108
+        switch ( $name )
109
+        {
110
+            case 'message':
111
+            case 'recipients':
112
+                return isset( $this->properties[$name] );
113
+
114
+            default:
115
+                return parent::__isset( $name );
116
+        }
117
+    }
118
+
119
+    /**
120
+     * Returns the headers set for this part as a RFC822 compliant string.
121
+     *
122
+     * This method does not add the required two lines of space
123
+     * to separate the headers from the body of the part.
124
+     *
125
+     * @see setHeader()
126
+     * @return string
127
+     */
128
+    public function generateHeaders()
129
+    {
130
+        $this->setHeader( "Content-Type", "message/delivery-status" );
131
+        return parent::generateHeaders();
132
+    }
133
+
134
+    /**
135
+     * Returns the generated text body of this part as a string.
136
+     *
137
+     * @return string
138
+     */
139
+    public function generateBody()
140
+    {
141
+        $result = $this->addHeadersSection( $this->message ) . ezcMailTools::lineBreak();
142
+        for ( $i = 0; $i < count( $this->recipients ); $i++ )
143
+        {
144
+            $result .= $this->addHeadersSection( $this->recipients[$i] ) . ezcMailTools::lineBreak();
145
+        }
146
+        return $result;
147
+    }
148
+
149
+    /**
150
+     * Returns the generated text for a section of the delivery-status part.
151
+     *
152
+     * @param ezcMailHeadersHolder $headers
153
+     * @return string
154
+     */
155
+    private function addHeadersSection( ezcMailHeadersHolder $headers )
156
+    {
157
+        $result = "";
158
+        foreach ( $headers->getCaseSensitiveArray() as $header => $value )
159
+        {
160
+            $result .= $header . ": " . $value . ezcMailTools::lineBreak();
161
+        }
162
+        return $result;
163
+    }
164
+
165
+    /**
166
+     * Adds a new recipient to this delivery-status message and returns the index
167
+     * of the last added recipient.
168
+     *
169
+     * @return int
170
+     */
171
+    public function createRecipient()
172
+    {
173
+        $result = count( $this->recipients );
174
+        $this->recipients[$result] = new ezcMailHeadersHolder();
175
+        return $result;
176
+    }
177
+}
178
+?>
... ...
@@ -0,0 +1,235 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailFilePart class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Mail part for all forms of binary data.
13
+ *
14
+ * @todo MimeType recognition
15
+ *
16
+ * @property string $fileName
17
+ *           The name of the file which is to be attached to the email.
18
+ * @property string $mimeType
19
+ *           The mimetype of the file.
20
+ * @property string $contentType
21
+ *           The content type of the file.
22
+ *           Possible values are: CONTENT_TYPE_IMAGE, CONTENT_TYPE_VIDEO and
23
+ *           CONTENT_TYPE_APPLICATION.
24
+ * @property string $dispositionType
25
+ *           If the file should be shown inline in the mail or as an
26
+ *           attachment. Possible values are: DISPLAY_ATTACHMENT and
27
+ *           DISPLAY_INLINE.
28
+ * @property int $contentId
29
+ *           The ID of this part. Used for internal links within an email.
30
+ *           Setting this also sets the header Content-ID.
31
+ *
32
+ * @package Mail
33
+ * @version 1.7.1
34
+ */
35
+abstract class ezcMailFilePart extends ezcMailPart
36
+{
37
+    /**
38
+     * Image content type. Use this if the contents of the file is an image.
39
+     */
40
+    const CONTENT_TYPE_IMAGE = "image";
41
+
42
+    /**
43
+     * Video content type. Use this if the contents of the file is a video.
44
+     */
45
+    const CONTENT_TYPE_VIDEO = "video";
46
+
47
+    /**
48
+     * Audio content type. Use this if the contents of the file is an audio.
49
+     */
50
+    const CONTENT_TYPE_AUDIO = "audio";
51
+
52
+    /**
53
+     * Application content type. Use this if the file non of the other
54
+     * content types match.
55
+     */
56
+    const CONTENT_TYPE_APPLICATION = "application";
57
+
58
+    /**
59
+     * Use DISPLAY_ATTACHMENT if you want the file to be displayed as an
60
+     * attachment to the recipients of the mail.
61
+     */
62
+    const DISPLAY_ATTACHMENT = "attachment";
63
+
64
+    /**
65
+     * Use DISPLAY_INLINE if you want the file to be displayed inline in the
66
+     * mail to the recipients.
67
+     */
68
+    const DISPLAY_INLINE = "inline";
69
+
70
+    /**
71
+     * Constructs a new attachment with $fileName.
72
+     *
73
+     * @param string $fileName
74
+     */
75
+    public function __construct( $fileName )
76
+    {
77
+        parent::__construct();
78
+
79
+        // initialize properties that may be touched automatically
80
+        // this is to avoid notices
81
+        $this->properties['contentType'] = null;
82
+        $this->properties['mimeType'] = null;
83
+        $this->properties['dispositionType'] = null;
84
+        $this->properties['contentId'] = null;
85
+
86
+        $this->fileName = $fileName;
87
+    }
88
+
89
+    /**
90
+     * Sets the property $name to $value.
91
+     *
92
+     * @throws ezcBasePropertyNotFoundException
93
+     *         if the property does not exist.
94
+     * @param string $name
95
+     * @param mixed $value
96
+     * @ignore
97
+     */
98
+    public function __set( $name, $value )
99
+    {
100
+        switch ( $name )
101
+        {
102
+            case 'fileName':
103
+                $this->properties['fileName'] = $value;
104
+                break;
105
+
106
+            case 'mimeType':
107
+                $this->properties['mimeType'] = $value;
108
+                break;
109
+
110
+            case 'contentType':
111
+                $this->properties['contentType'] = $value;
112
+                break;
113
+
114
+            case 'dispositionType':
115
+                $this->properties['dispositionType'] = $value;
116
+                break;
117
+
118
+            case 'contentId':
119
+                $this->properties['contentId'] = $value;
120
+                $this->setHeader( 'Content-ID', '<' . $value . '>' );
121
+                break;
122
+
123
+            default:
124
+                return parent::__set( $name, $value );
125
+                break;
126
+        }
127
+    }
128
+
129
+    /**
130
+     * Returns the value of property $value.
131
+     *
132
+     * @throws ezcBasePropertyNotFoundException
133
+     *         if the property does not exist.
134
+     * @param string $name
135
+     * @return mixed
136
+     * @ignore
137
+     */
138
+    public function __get( $name )
139
+    {
140
+        switch ( $name )
141
+        {
142
+            case 'fileName':
143
+            case 'mimeType':
144
+            case 'contentType':
145
+            case 'dispositionType':
146
+            case 'contentId':
147
+                return $this->properties[$name];
148
+                break;
149
+
150
+            default:
151
+                return parent::__get( $name );
152
+                break;
153
+        }
154
+    }
155
+
156
+    /**
157
+     * Returns true if the property $name is set, otherwise false.
158
+     *
159
+     * @param string $name
160
+     * @return bool
161
+     * @ignore
162
+     */
163
+    public function __isset( $name )
164
+    {
165
+        switch ( $name )
166
+        {
167
+            case 'fileName':
168
+            case 'mimeType':
169
+            case 'contentType':
170
+            case 'dispositionType':
171
+            case 'contentId':
172
+                return isset( $this->properties[$name] );
173
+
174
+            default:
175
+                return parent::__isset( $name );
176
+        }
177
+    }
178
+
179
+    /**
180
+     * Sets the Content-Type header.
181
+     *
182
+     * Based on the contentType, mimeType and fileName.
183
+     */
184
+    private function setHeaderContentType()
185
+    {
186
+        $fileName = basename( $this->fileName );
187
+        if ( $this->contentDisposition !== null && $this->contentDisposition->fileName !== null )
188
+        {
189
+            $fileName = $this->contentDisposition->fileName;
190
+        }
191
+
192
+        $this->setHeader( 'Content-Type',
193
+                          $this->contentType . '/' . $this->mimeType . '; ' . 'name="' . $fileName . '"' );
194
+    }
195
+
196
+    /**
197
+     * Sets the Content-Disposition header based on the properties $dispositionType and $fileName.
198
+     *
199
+     * Does not set the fileNameCharSet and fileNameLanguage properties of the
200
+     * Content-Disposition header. For this purpose set directly
201
+     * $this->contentDisposition with an object of class ezcMailContentDispositionHeader.
202
+     */
203
+    private function setHeaderContentDisposition()
204
+    {
205
+        if ( !isset( $this->dispositionType ) )
206
+        {
207
+            $this->dispositionType = self::DISPLAY_ATTACHMENT;
208
+        }
209
+        if ( $this->contentDisposition == null )
210
+        {
211
+            $this->contentDisposition = new ezcMailContentDispositionHeader();
212
+
213
+            // modified for issue #14025: set the file name and disposition
214
+            // only if the contentDisposition was null (to not overwrite
215
+            // the value set by the user)
216
+            $this->contentDisposition->disposition = $this->dispositionType;
217
+            $this->contentDisposition->fileName = basename( $this->fileName );
218
+        }
219
+    }
220
+
221
+    /**
222
+     * Override of the generate() method from ezcMailPart. Used to set headers before
223
+     * generating the part.
224
+     *
225
+     * @return string
226
+     */
227
+    public function generate()
228
+    {
229
+        $this->setHeaderContentType();
230
+        $this->setHeader( 'Content-Transfer-Encoding', 'base64' );
231
+        $this->setHeaderContentDisposition();
232
+        return parent::generate();
233
+    }
234
+}
235
+?>
... ...
@@ -0,0 +1,140 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailFile class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Mail part for binary data from the file system.
13
+ *
14
+ * @package Mail
15
+ * @version 1.7.1
16
+ */
17
+class ezcMailFile extends ezcMailFilePart
18
+{
19
+    /**
20
+     * Constructs a new attachment with $fileName.
21
+     *
22
+     * If the $mimeType and $contentType are not specified they are extracted
23
+     * with the fileinfo extension if it is available, otherwise they are set
24
+     * to application/octet-stream.
25
+     *
26
+     * @param string $fileName
27
+     * @param string $contentType
28
+     * @param string $mimeType
29
+     */
30
+    public function __construct( $fileName, $contentType = null, $mimeType = null )
31
+    {
32
+        parent::__construct( $fileName );
33
+
34
+        if ( $contentType != null && $mimeType != null )
35
+        {
36
+            $this->contentType = $contentType;
37
+            $this->mimeType = $mimeType;
38
+        }
39
+        elseif ( ezcBaseFeatures::hasExtensionSupport( 'fileinfo' ) )
40
+        {
41
+            // get mime and content type
42
+            $fileInfo = finfo_open( FILEINFO_MIME );
43
+            $mimeParts = finfo_file( $fileInfo, $fileName );
44
+            if ( $mimeParts !== false && strpos( $mimeParts, '/' ) !== false )
45
+            {
46
+                list( $this->contentType, $this->mimeType ) = explode( '/', $mimeParts );
47
+            }
48
+            else
49
+            {
50
+                // default to mimetype application/octet-stream
51
+                $this->contentType = self::CONTENT_TYPE_APPLICATION;
52
+                $this->mimeType = "octet-stream";
53
+            }
54
+            finfo_close( $fileInfo );
55
+        }
56
+        else
57
+        {
58
+            // default to mimetype application/octet-stream
59
+            $this->contentType = self::CONTENT_TYPE_APPLICATION;
60
+            $this->mimeType = "octet-stream";
61
+        }
62
+    }
63
+
64
+    /**
65
+     * Sets the property $name to $value.
66
+     *
67
+     * @throws ezcBasePropertyNotFoundException
68
+     *         if the property does not exist.
69
+     * @throws ezcBaseFileNotFoundException
70
+     *         when setting the property with an invalid filename.
71
+     * @param string $name
72
+     * @param mixed $value
73
+     * @ignore
74
+     */
75
+    public function __set( $name, $value )
76
+    {
77
+        switch ( $name )
78
+        {
79
+            case 'fileName':
80
+                if ( is_readable( $value ) )
81
+                {
82
+                    parent::__set( $name, $value );
83
+                }
84
+                else
85
+                {
86
+                    throw new ezcBaseFileNotFoundException( $value );
87
+                }
88
+                break;
89
+            default:
90
+                return parent::__set( $name, $value );
91
+                break;
92
+        }
93
+    }
94
+
95
+    /**
96
+     * Returns the value of property $value.
97
+     *
98
+     * @throws ezcBasePropertyNotFoundException
99
+     *         if the property does not exist.
100
+     * @param string $name
101
+     * @return mixed
102
+     * @ignore
103
+     */
104
+    public function __get( $name )
105
+    {
106
+        switch ( $name )
107
+        {
108
+            default:
109
+                return parent::__get( $name );
110
+                break;
111
+        }
112
+    }
113
+
114
+    /**
115
+     * Returns true if the property $name is set, otherwise false.
116
+     *
117
+     * @param string $name
118
+     * @return bool
119
+     * @ignore
120
+     */
121
+    public function __isset( $name )
122
+    {
123
+        switch ( $name )
124
+        {
125
+            default:
126
+                return parent::__isset( $name );
127
+        }
128
+    }
129
+
130
+    /**
131
+     * Returns the contents of the file with the correct encoding.
132
+     *
133
+     * @return string
134
+     */
135
+    public function generateBody()
136
+    {
137
+        return chunk_split( base64_encode( file_get_contents( $this->fileName ) ), 76, ezcMailTools::lineBreak() );
138
+    }
139
+}
140
+?>
... ...
@@ -0,0 +1,129 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailStreamFile class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Mail part for data in a stream.
13
+ *
14
+ * @property string $stream
15
+ *           The stream object to be read and added as an attachment. The
16
+ *           mimeType and contentType are set in the constructor or if not
17
+ *           specified they are extracted with the fileinfo extension if it
18
+ *           is available, otherwise they are set to application/octet-stream.
19
+ *
20
+ * @package Mail
21
+ * @version 1.7.1
22
+ */
23
+class ezcMailStreamFile extends ezcMailFilePart
24
+{
25
+    /**
26
+     * Constructs a new attachment with $fileName and $stream.
27
+     *
28
+     * If the $mimeType and $contentType are not specified they are set
29
+     * to application/octet-stream.
30
+     *
31
+     * @param string $fileName
32
+     * @param resource $stream
33
+     * @param string $contentType
34
+     * @param string $mimeType
35
+     */
36
+    public function __construct( $fileName, $stream, $contentType = null, $mimeType = null )
37
+    {
38
+        parent::__construct( $fileName );
39
+        $this->stream = $stream;
40
+        if ( $contentType != null && $mimeType != null )
41
+        {
42
+            $this->contentType = $contentType;
43
+            $this->mimeType = $mimeType;
44
+        }
45
+        else
46
+        {
47
+            // default to mimetype application/octet-stream
48
+            $this->contentType = self::CONTENT_TYPE_APPLICATION;
49
+            $this->mimeType = "octet-stream";
50
+        }
51
+    }
52
+
53
+    /**
54
+     * Sets the property $name to $value.
55
+     *
56
+     * @throws ezcBasePropertyNotFoundException
57
+     *         if the property does not exist.
58
+     * @param string $name
59
+     * @param mixed $value
60
+     * @ignore
61
+     */
62
+    public function __set( $name, $value )
63
+    {
64
+        switch ( $name )
65
+        {
66
+            case 'stream':
67
+                $this->properties[$name] = $value;
68
+                break;
69
+            default:
70
+                return parent::__set( $name, $value );
71
+                break;
72
+        }
73
+    }
74
+
75
+    /**
76
+     * Returns the value of property $value.
77
+     *
78
+     * @throws ezcBasePropertyNotFoundException
79
+     *         if the property does not exist.
80
+     * @param string $name
81
+     * @return mixed
82
+     * @ignore
83
+     */
84
+    public function __get( $name )
85
+    {
86
+        switch ( $name )
87
+        {
88
+            case 'stream':
89
+                return $this->properties[$name];
90
+                break;
91
+            default:
92
+                return parent::__get( $name );
93
+                break;
94
+        }
95
+    }
96
+
97
+    /**
98
+     * Returns true if the property $name is set, otherwise false.
99
+     *
100
+     * @param string $name
101
+     * @return bool
102
+     * @ignore
103
+     */
104
+    public function __isset( $name )
105
+    {
106
+        switch ( $name )
107
+        {
108
+            case 'stream':
109
+                return isset( $this->properties[$name] );
110
+
111
+            default:
112
+                return parent::__isset( $name );
113
+        }
114
+    }
115
+
116
+    /**
117
+     * Returns the contents of the file with the correct encoding.
118
+     *
119
+     * The stream might become unusable after this if it doesn't support seek.
120
+     *
121
+     * @return string
122
+     */
123
+    public function generateBody()
124
+    {
125
+        $contents = stream_get_contents( $this->stream );
126
+        return chunk_split( base64_encode( $contents ), 76, ezcMailTools::lineBreak() );
127
+    }
128
+}
129
+?>
... ...
@@ -0,0 +1,144 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailVirtualFile class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Mail part for binary data in memory.
13
+ *
14
+ * @property string $contents
15
+ *           The contents to be added as an attachment. The mimeType and
16
+ *           contentType are set in the constructor or if not specified they
17
+ *           are extracted with the fileinfo extension if it is available,
18
+ *           otherwise they are set to application/octet-stream.
19
+ *
20
+ * @package Mail
21
+ * @version 1.7.1
22
+ */
23
+class ezcMailVirtualFile extends ezcMailFilePart
24
+{
25
+    /**
26
+     * Constructs a new attachment with $fileName and $contents.
27
+     *
28
+     * If the $mimeType and $contentType are not specified they are extracted
29
+     * with the fileinfo extension if it is available, otherwise they are set
30
+     * to application/octet-stream.
31
+     *
32
+     * @param string $fileName
33
+     * @param string $contents
34
+     * @param string $contentType
35
+     * @param string $mimeType
36
+     */
37
+    public function __construct( $fileName, $contents, $contentType = null, $mimeType = null )
38
+    {
39
+        parent::__construct( $fileName );
40
+        $this->contents = $contents;
41
+
42
+        if ( $contentType != null && $mimeType != null )
43
+        {
44
+            $this->contentType = $contentType;
45
+            $this->mimeType = $mimeType;
46
+        }
47
+        elseif ( ezcBaseFeatures::hasExtensionSupport( 'fileinfo' ) )
48
+        {
49
+            // get mime and content type
50
+            $fileInfo = new finfo( FILEINFO_MIME );
51
+            $mimeParts = $fileInfo->buffer( $contents );
52
+            if ( $mimeParts !== false && strpos( $mimeParts, '/' ) !== false )
53
+            {
54
+                list( $this->contentType, $this->mimeType ) = explode( '/', $mimeParts );
55
+            }
56
+            else
57
+            {
58
+                // default to mimetype application/octet-stream
59
+                $this->contentType = self::CONTENT_TYPE_APPLICATION;
60
+                $this->mimeType = "octet-stream";
61
+            }
62
+        }
63
+        else
64
+        {
65
+            // default to mimetype application/octet-stream
66
+            $this->contentType = self::CONTENT_TYPE_APPLICATION;
67
+            $this->mimeType = "octet-stream";
68
+        }
69
+    }
70
+
71
+    /**
72
+     * Sets the property $name to $value.
73
+     *
74
+     * @throws ezcBasePropertyNotFoundException
75
+     *         if the property does not exist.
76
+     * @param string $name
77
+     * @param mixed $value
78
+     * @ignore
79
+     */
80
+    public function __set( $name, $value )
81
+    {
82
+        switch ( $name )
83
+        {
84
+            case 'contents':
85
+                $this->properties[$name] = $value;
86
+                break;
87
+            default:
88
+                return parent::__set( $name, $value );
89
+                break;
90
+        }
91
+    }
92
+
93
+    /**
94
+     * Returns the value of property $value.
95
+     *
96
+     * @throws ezcBasePropertyNotFoundException
97
+     *         if the property does not exist.
98
+     * @param string $name
99
+     * @return mixed
100
+     * @ignore
101
+     */
102
+    public function __get( $name )
103
+    {
104
+        switch ( $name )
105
+        {
106
+            case 'contents':
107
+                return $this->properties[$name];
108
+                break;
109
+            default:
110
+                return parent::__get( $name );
111
+                break;
112
+        }
113
+    }
114
+
115
+    /**
116
+     * Returns true if the property $name is set, otherwise false.
117
+     *
118
+     * @param string $name
119
+     * @return bool
120
+     * @ignore
121
+     */
122
+    public function __isset( $name )
123
+    {
124
+        switch ( $name )
125
+        {
126
+            case 'contents':
127
+                return isset( $this->properties[$name] );
128
+
129
+            default:
130
+                return parent::__isset( $name );
131
+        }
132
+    }
133
+
134
+    /**
135
+     * Returns the contents of the file with the correct encoding.
136
+     *
137
+     * @return string
138
+     */
139
+    public function generateBody()
140
+    {
141
+        return chunk_split( base64_encode( $this->contents ), 76, ezcMailTools::lineBreak() );
142
+    }
143
+}
144
+?>
... ...
@@ -0,0 +1,196 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailMultipart class.
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Abstract base class for all multipart types.
13
+ *
14
+ * This class provides writing functionality that is common for all multipart
15
+ * types. Multiparts will be written to the mail in the order that they are set
16
+ * to the $parts variable.
17
+ *
18
+ * @property string $boundary
19
+ *           The boundary string to use between parts. This string is
20
+ *           automatically generated and should only be changed for special
21
+ *           requirements.
22
+ * @property string $noMimeMessage
23
+ *           Message to display to non-MIME capable email clients. The default
24
+ *           value is stored in the constant {@link self::DEFAULT_NO_MIME_MESSAGE}.
25
+ *
26
+ * @package Mail
27
+ * @version 1.7.1
28
+ */
29
+abstract class ezcMailMultipart extends ezcMailPart
30
+{
31
+    /**
32
+     * Default message displayed to non-MIME capable email clients.
33
+     */
34
+    const DEFAULT_NO_MIME_MESSAGE = "This message is in MIME format. Since your mail reader does not understand\r\nthis format, some or all of this message may not be legible.";
35
+
36
+    /**
37
+     * An array holding the parts of this multipart.
38
+     *
39
+     * @var array(ezcMailPart)
40
+     */
41
+    protected $parts = array();
42
+
43
+    /**
44
+     * The counter is unique between all multipart types and is used to
45
+     * generate unique boundary strings.
46
+     *
47
+     * @var int
48
+     */
49
+    private static $counter = 0;
50
+
51
+    /**
52
+     * Constructs a new ezcMailMultipart with the parts $parts.
53
+     *
54
+     * Subclasses typically accept an arbitrary number of parts in the
55
+     * constructor and pass them along using func_get_args().
56
+     *
57
+     * $parts should be of the format array(array(ezcMailPart)|ezcMailPart)
58
+     *
59
+     * Subclasses must call this method in the constructor.
60
+     * @param array $parts
61
+     */
62
+    public function __construct( array $parts )
63
+    {
64
+        parent::__construct();
65
+
66
+        $this->noMimeMessage = self::DEFAULT_NO_MIME_MESSAGE;
67
+        $this->boundary = $this->generateBoundary();
68
+        $this->setHeader( "Content-Type", 'multipart/' . $this->multipartType() . '; '
69
+                                           . 'boundary="' . $this->boundary . '"' );
70
+        foreach ( $parts as $part )
71
+        {
72
+            if ( $part instanceof ezcMailPart  )
73
+            {
74
+                $this->parts[] = $part;
75
+            }
76
+            elseif ( is_array( $part ) ) // add each and everyone of the parts in the array
77
+            {
78
+                foreach ( $part as $array_part )
79
+                {
80
+                    if ( $array_part instanceof ezcMailPart )
81
+                    {
82
+                        $this->parts[] = $array_part;;
83
+                    }
84
+                }
85
+            }
86
+        }
87
+    }
88
+
89
+    /**
90
+     * Sets the property $name to $value.
91
+     *
92
+     * @throws ezcBasePropertyNotFoundException
93
+     *         if the property does not exist.
94
+     * @param string $name
95
+     * @param mixed $value
96
+     * @ignore
97
+     */
98
+    public function __set( $name, $value )
99
+    {
100
+        switch ( $name )
101
+        {
102
+            case 'boundary':
103
+                $this->properties[$name] = $value;
104
+                $this->setHeader( 'Content-Type', 'multipart/' . $this->multipartType() . '; ' .
105
+                                  'boundary="' . $this->boundary . '"' );
106
+                break;
107
+
108
+            case 'noMimeMessage':
109
+                $this->properties[$name] = $value;
110
+                break;
111
+
112
+            default:
113
+                return parent::__set( $name, $value );
114
+                break;
115
+        }
116
+    }
117
+
118
+    /**
119
+     * Returns the property $name.
120
+     *
121
+     * @throws ezcBasePropertyNotFoundException
122
+     *         if the property does not exist.
123
+     * @param string $name
124
+     * @return mixed
125
+     * @ignore
126
+     */
127
+    public function __get( $name )
128
+    {
129
+        switch ( $name )
130
+        {
131
+            case 'boundary':
132
+            case 'noMimeMessage':
133
+                return $this->properties[$name];
134
+                break;
135
+
136
+            default:
137
+                return parent::__get( $name );
138
+                break;
139
+        }
140
+    }
141
+
142
+    /**
143
+     * Returns true if the property $name is set, otherwise false.
144
+     *
145
+     * @param string $name
146
+     * @return bool
147
+     * @ignore
148
+     */
149
+    public function __isset( $name )
150
+    {
151
+        switch ( $name )
152
+        {
153
+            case 'boundary':
154
+            case 'noMimeMessage':
155
+                return isset( $this->properties[$name] );
156
+
157
+            default:
158
+                return parent::__isset( $name );
159
+        }
160
+    }
161
+
162
+    /**
163
+     * Returns the generated body for all multipart types.
164
+     *
165
+     * @return string
166
+     */
167
+    public function generateBody()
168
+    {
169
+        $data = $this->noMimeMessage . ezcMailTools::lineBreak();
170
+        foreach ( $this->parts as $part )
171
+        {
172
+            $data .= ezcMailTools::lineBreak() . '--' . $this->boundary . ezcMailTools::lineBreak();
173
+            $data .= $part->generate();
174
+        }
175
+        $data .= ezcMailTools::lineBreak() . '--' . $this->boundary . '--';
176
+        return $data;
177
+    }
178
+
179
+    /**
180
+     * Returns the type of multipart.
181
+     *
182
+     * @return string
183
+     */
184
+    abstract public function multipartType();
185
+
186
+    /**
187
+     * Returns a unique boundary string.
188
+     *
189
+     * @return string
190
+     */
191
+    protected static function generateBoundary()
192
+    {
193
+        return date( "YmdGHjs" ) . ':' . getmypid() . ':' . self::$counter++;
194
+    }
195
+}
196
+?>
... ...
@@ -0,0 +1,84 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailMultipartAlternative class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * ezcMailMultipartAlternative is used to bundle a group of mail parts
13
+ * where only one should be shown.
14
+ *
15
+ * This is useful e.g if you have a text in some fancy format but you also want
16
+ * to provide a backup plain text format to make sure everyone can read the
17
+ * mail. The alternatives should be added in an order of increasing
18
+ * faithfulness to the original content.  In general, the best choice is the
19
+ * LAST part of a type supported by the recipients mail client.
20
+ *
21
+ * The following example shows a HTML mail with a plain text backup in case
22
+ * the recipients client can't display HTML mail.
23
+ * <code>
24
+ * $mail = new ezcMail();
25
+ * $mail->from = new ezcMailAddress( '[email protected]', 'Adrian Ripburger' );
26
+ * $mail->addTo( new ezcMailAddress( '[email protected]', 'Maureen Corley' ) );
27
+ * $mail->subject = "Example of an HTML email with attachments";
28
+ * $plainText = new ezcMailText( "This is the plain text part" );
29
+ * $htmlText = new ezcMailText( "<html>This is the HTML part</html>" );
30
+ * $htmlText->subType = 'html';
31
+ * $mail->body = new ezcMailMultipartAlternative( $plainText, $htmlText );
32
+ * </code>
33
+ *
34
+ * @package Mail
35
+ * @version 1.7.1
36
+ */
37
+class ezcMailMultipartAlternative extends ezcMailMultipart
38
+{
39
+    /**
40
+     * Constructs a new ezcMailMultipartAlternative
41
+     *
42
+     * The constructor accepts an arbitrary number of ezcMailParts or arrays with ezcMailparts.
43
+     * Parts are added in the order provided. Parameters of the wrong
44
+     * type are ignored.
45
+     *
46
+     * @param ezcMailPart|array(ezcMailPart) $...
47
+     */
48
+    public function __construct()
49
+    {
50
+        $args = func_get_args();
51
+        parent::__construct( $args );
52
+    }
53
+
54
+    /**
55
+     * Appends a part to the list of parts.
56
+     *
57
+     * @param ezcMailPart $part
58
+     */
59
+    public function appendPart( ezcMailPart $part )
60
+    {
61
+        $this->parts[] = $part;
62
+    }
63
+
64
+    /**
65
+     * Returns the mail parts associated with this multipart.
66
+     *
67
+     * @return array(ezcMailPart)
68
+     */
69
+    public function getParts()
70
+    {
71
+        return $this->parts;
72
+    }
73
+
74
+    /**
75
+     * Returns "alternative".
76
+     *
77
+     * @return string
78
+     */
79
+    public function multipartType()
80
+    {
81
+        return "alternative";
82
+    }
83
+}
84
+?>
... ...
@@ -0,0 +1,98 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailMultipartDigest class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * The digest multipart type is used to bundle a list of mail objects.
13
+ *
14
+ * Each part will be shown in the mail in the order provided. It is not
15
+ * necessary to bundle digested mail using a digest object. However, it is
16
+ * considered good practice to do so when several digested mail are sent
17
+ * together.
18
+ *
19
+ * @package Mail
20
+ * @version 1.7.1
21
+ */
22
+class ezcMailMultipartDigest extends ezcMailMultipart
23
+{
24
+    /**
25
+     * Constructs a new ezcMailMultipartDigest
26
+     *
27
+     * The constructor accepts an arbitrary number of ezcMail/ezcMailRfc822Digest objects
28
+     * or arrays with objects of these types.
29
+     *
30
+     * Objects of the type ezcMail are wrapped into an ezcMailRfc822Digest object.
31
+     *
32
+     * Parts are added in the order provided. Parameters of the wrong
33
+     * type are ignored.
34
+     *
35
+     * @param ezcMailRfc822Digest|array(ezcMailRfc822Digest) $...
36
+     */
37
+    public function __construct()
38
+    {
39
+        $args = func_get_args();
40
+        parent::__construct( array() );
41
+        foreach ( $args as $part )
42
+        {
43
+            if ( $part instanceof ezcMail  )
44
+            {
45
+                $this->parts[] = new ezcMailRfc822Digest( $part );
46
+            }
47
+            else if ( $part instanceof ezcMailRfc822Digest )
48
+            {
49
+                $this->parts[] = $part;
50
+            }
51
+            else if ( is_array( $part ) ) // add each and everyone of the parts in the array
52
+            {
53
+                foreach ( $part as $array_part )
54
+                {
55
+                    if ( $array_part instanceof ezcMail )
56
+                    {
57
+                        $this->parts[] = new ezcMailRfc822Digest( $array_part );
58
+                    }
59
+                    else if ( $array_part instanceof ezcMailRfc822Digest )
60
+                    {
61
+                        $this->parts[] = $array_part;
62
+                    }
63
+                }
64
+            }
65
+        }
66
+    }
67
+
68
+    /**
69
+     * Appends a part to the list of parts.
70
+     *
71
+     * @param ezcMailRfc822Digest $part
72
+     */
73
+    public function appendPart( ezcMailRfc822Digest $part )
74
+    {
75
+        $this->parts[] = $part;
76
+    }
77
+
78
+    /**
79
+     * Returns the mail parts associated with this multipart.
80
+     *
81
+     * @return array(ezcMail)
82
+     */
83
+    public function getParts()
84
+    {
85
+        return $this->parts;
86
+    }
87
+
88
+    /**
89
+     * Returns "digest".
90
+     *
91
+     * @return string
92
+     */
93
+    public function multipartType()
94
+    {
95
+        return "digest";
96
+    }
97
+}
98
+?>
... ...
@@ -0,0 +1,76 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailMultipartMixed class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * The mixed multipart type is used to bundle an ordered list of mail
13
+ * parts.
14
+ *
15
+ * Each part will be shown in the mail in the order provided.
16
+ *
17
+ * The following example shows how to build a mail with a text part
18
+ * and an attachment using ezcMailMultipartMixed.
19
+ * <code>
20
+ *        $mixed = new ezcMailMultipartMixed( new ezcMailTextPart( "Picture of me flying!" ),
21
+ *                                            new ezcMailFile( "fly.jpg" ) );
22
+ *        $mail = new ezcMail();
23
+ *        $mail->body = $mixed;
24
+ * </code>
25
+ *
26
+ * @package Mail
27
+ * @version 1.7.1
28
+ */
29
+class ezcMailMultipartMixed extends ezcMailMultipart
30
+{
31
+    /**
32
+     * Constructs a new ezcMailMultipartMixed
33
+     *
34
+     * The constructor accepts an arbitrary number of ezcMailParts or arrays with ezcMailparts.
35
+     * Parts are added in the order provided. Parameters of the wrong
36
+     * type are ignored.
37
+     *
38
+     * @param ezcMailPart|array(ezcMailPart) $...
39
+     */
40
+    public function __construct()
41
+    {
42
+        $args = func_get_args();
43
+        parent::__construct( $args );
44
+    }
45
+
46
+    /**
47
+     * Appends a part to the list of parts.
48
+     *
49
+     * @param ezcMailPart $part
50
+     */
51
+    public function appendPart( ezcMailPart $part )
52
+    {
53
+        $this->parts[] = $part;
54
+    }
55
+
56
+    /**
57
+     * Returns the mail parts associated with this multipart.
58
+     *
59
+     * @return array(ezcMailPart)
60
+     */
61
+    public function getParts()
62
+    {
63
+        return $this->parts;
64
+    }
65
+
66
+    /**
67
+     * Returns "mixed".
68
+     *
69
+     * @return string
70
+     */
71
+    public function multipartType()
72
+    {
73
+        return "mixed";
74
+    }
75
+}
76
+?>
... ...
@@ -0,0 +1,182 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailMultipartRelated class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * ezcMailMultipartRelated is intended for mail parts consisting of
13
+ * several inter-related body parts.
14
+ *
15
+ * A typical example is an HTML mail with embedded images.
16
+ * When you want to refer to a related part you can use content id's
17
+ * (cid). Set the 'Content-ID' header of the related part to a valid
18
+ * unique url-addr-spec (specified by RFC 822) and refer to it through
19
+ * the form cid:unique-string.
20
+ *
21
+ * Example:
22
+ * This example shows how you can use ezcMailMultipartRelated to create an
23
+ * HTML mail with an inline image.
24
+ * <code>
25
+ * $mail = new ezcMail();
26
+ * $mail->from = new ezcMailAddress( '[email protected]', 'Adrian Ripburger' );
27
+ * $mail->addTo( new ezcMailAddress( '[email protected]', 'Maureen Corley' ) );
28
+ * $mail->subject = "Example of an HTML email with attachments";
29
+ * $htmlText = new ezcMailText( "<html>Image <img src='cid:image@12345' /></html>" );
30
+ * $htmlText->subType = 'html';
31
+ * $image = new ezcMailFile( "path_to_my_image.jpg" );
32
+ * $image->contentId = 'image@12345';
33
+ * $mail->body = new ezcMailMultipartRelated( $htmlText, $image );
34
+ * </code>
35
+ *
36
+ * @package Mail
37
+ * @version 1.7.1
38
+ */
39
+class ezcMailMultipartRelated extends ezcMailMultipart
40
+{
41
+    /**
42
+     * Constructs a new ezcMailMultipartRelated.
43
+     *
44
+     * The constructor accepts an arbitrary number of ezcMailParts or arrays with ezcMailparts.
45
+     * Parts are added in the order provided and the first part will be recognized
46
+     * as the main body. Parameters of the wrong type are ignored.
47
+     *
48
+     * @param ezcMailPart|array(ezcMailPart) $...
49
+     */
50
+    public function __construct()
51
+    {
52
+        $args = func_get_args();
53
+        parent::__construct( $args );
54
+    }
55
+
56
+    /**
57
+     * Sets the main part $part of this alternative multipart.
58
+     *
59
+     * @param ezcMailPart $part
60
+     */
61
+    public function setMainPart( ezcMailPart $part )
62
+    {
63
+        $this->parts[0] = $part;
64
+    }
65
+
66
+    /**
67
+     * Adds $part to the list of parts and returns the Content-ID of the part.
68
+     *
69
+     * @param ezcMailPart $part
70
+     * @return string
71
+     */
72
+    public function addRelatedPart( ezcMailPart $part  )
73
+    {
74
+        // it doesn't have a Content-ID, we must set one.
75
+        $contentId = '';
76
+        if ( $part->getHeader( 'Content-ID' ) == '' )
77
+        {
78
+            if ( $part instanceof ezcMailFile )
79
+            {
80
+                $part->contentId = ezcMailTools::generateContentId( basename( $part->fileName ) );
81
+            }
82
+            else
83
+            {
84
+                $part->setHeader( 'Content-ID', ezcMailTools::generateContentId( 'part' ) );
85
+            }
86
+        }
87
+        $contentId = trim( $part->getHeader( 'Content-ID' ), '<>' );
88
+
89
+        // Set the content ID property of the ezcMailFile if one was found
90
+        if ( $part instanceof ezcMailFile )
91
+        {
92
+            $part->contentId = $contentId;
93
+        }
94
+
95
+        if ( count( $this->parts ) > 0 )
96
+        {
97
+            $this->parts[] = $part;
98
+        }
99
+        else
100
+        {
101
+            $this->parts[1] = $part;
102
+        }
103
+        return $contentId;
104
+    }
105
+
106
+    /**
107
+     * Returns the main part of this multipart or null if there is no such part.
108
+     *
109
+     * @return array(ezcMailPart)
110
+     */
111
+    public function getMainPart()
112
+    {
113
+        if ( isset( $this->parts[0] ) )
114
+        {
115
+            return $this->parts[0];
116
+        }
117
+        return null;
118
+    }
119
+
120
+    /**
121
+     * Returns the mail parts associated with this multipart.
122
+     *
123
+     * @return array(ezcMailPart)
124
+     */
125
+    public function getRelatedParts()
126
+    {
127
+        if ( is_null( $this->getMainPart() ) )
128
+        {
129
+            return array_slice( $this->parts, 0 );
130
+        }
131
+        return array_slice( $this->parts, 1 );
132
+    }
133
+
134
+    /**
135
+     * Returns the part associated with the passed Content-ID.
136
+     *
137
+     * @param string $cid
138
+     * @return ezcMailPart
139
+     */
140
+    public function getRelatedPartByID( $cid )
141
+    {
142
+        $parts = $this->getRelatedParts();
143
+        foreach ( $parts as $part )
144
+        {
145
+            if ( ( $part->getHeader( 'Content-ID' ) !== '' ) &&
146
+                ( $part->getHeader( 'Content-ID' ) == "<$cid>" ) )
147
+            {
148
+                return $part;
149
+            }
150
+        }
151
+        return false;
152
+    }
153
+
154
+    /**
155
+     * Returns "related".
156
+     *
157
+     * @return string
158
+     */
159
+    public function multipartType()
160
+    {
161
+        return "related";
162
+    }
163
+
164
+    /**
165
+     * Substitutes links in all ezcMailText parts with the subType HTML in this multipart/alternative.
166
+     *
167
+     * This method will perform substitution of CID's and absolute and relative links as specified by
168
+     * RFC 2557 for links that resolve to files. Links to other message parts must be resolved when
169
+     * displaying the message.
170
+     *
171
+     * - provide methods for substitution of these as well (inclusive listing of which they are)
172
+     * @todo Move to separate class.
173
+     */
174
+    private function resolveHtmlLinks()
175
+    {
176
+        // 1. Check that the main part is a html part
177
+        // 2. Go through the related parts and build up a structure of available
178
+        //    CIDS and locations
179
+        // 3. Substitute in this message.
180
+    }
181
+}
182
+?>
... ...
@@ -0,0 +1,225 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailMultipartReport class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Mail part multipart/report used primarily to send delivery status notification messages.
13
+ *
14
+ * Multipart/Report: RFC 3462 {@link http://tools.ietf.org/html/rfc3462}
15
+ * Delivery Status Notifications: RFC 3464 {@link http://tools.ietf.org/html/rfc3464}
16
+ *
17
+ * The subparts of this mail part are according to RFC 3462:
18
+ *
19
+ * 1. A human readable part. The purpose of this part is to provide an easily understood
20
+ *    description of the condition(s) that caused the report to be generated.
21
+ *      Use the methods getReadablePart() and setReadablePart() to work with this part.
22
+ *
23
+ * 2. A machine parsable body part containing an account of
24
+ *    the reported message handling event. The purpose of this body part is
25
+ *    to provide a machine-readable description of the condition(s) that
26
+ *    caused the report to be generated, along with details not present in
27
+ *    the first body part that may be useful to human experts.
28
+ *      Use the methods getMachinePart() and setMachinePart() to work with this part.
29
+ *
30
+ * 3. Optional. A body part containing the returned message or a
31
+ *    portion thereof. This information may be useful to aid human experts
32
+ *    in diagnosing problems.
33
+ *      Use the methods getOriginalPart() and setOriginalPart() to work with this part.
34
+ *
35
+ * @property string $reportType
36
+ *           The report type of the multipart report. Default is "delivery-status".
37
+ *
38
+ * @package Mail
39
+ * @version 1.7.1
40
+ */
41
+class ezcMailMultipartReport extends ezcMailMultipart
42
+{
43
+    /**
44
+     * Constructs a new ezcMailMultipartReport.
45
+     *
46
+     * @param ezcMailPart|array(ezcMailPart) $...
47
+     */
48
+    public function __construct()
49
+    {
50
+        $args = func_get_args();
51
+        parent::__construct( $args );
52
+        $this->reportType = "delivery-status";
53
+    }
54
+
55
+    /**
56
+     * Sets the property $name to $value.
57
+     *
58
+     * @throws ezcBasePropertyNotFoundException
59
+     *         if the property does not exist
60
+     * @param string $name
61
+     * @param mixed $value
62
+     * @ignore
63
+     */
64
+    public function __set( $name, $value )
65
+    {
66
+        switch ( $name )
67
+        {
68
+            case 'reportType':
69
+                $this->properties[$name] = $value;
70
+                $this->setHeader( 'Content-Type', 'multipart/' . $this->multipartType() . '; ' .
71
+                                  'report-type=' . $this->reportType . '; ' .
72
+                                  'boundary="' . $this->boundary . '"' );
73
+                break;
74
+
75
+            default:
76
+                return parent::__set( $name, $value );
77
+                break;
78
+        }
79
+    }
80
+
81
+    /**
82
+     * Returns the property $name.
83
+     *
84
+     * @throws ezcBasePropertyNotFoundException
85
+     *         if the property does not exist
86
+     * @param string $name
87
+     * @return mixed
88
+     * @ignore
89
+     */
90
+    public function __get( $name )
91
+    {
92
+        switch ( $name )
93
+        {
94
+            case 'reportType':
95
+                return $this->properties[$name];
96
+                break;
97
+
98
+            default:
99
+                return parent::__get( $name );
100
+                break;
101
+        }
102
+    }
103
+
104
+    /**
105
+     * Returns true if the property $name is set, otherwise false.
106
+     *
107
+     * @param string $name
108
+     * @return bool
109
+     * @ignore
110
+     */
111
+    public function __isset( $name )
112
+    {
113
+        switch ( $name )
114
+        {
115
+            case 'reportType':
116
+                return isset( $this->properties[$name] );
117
+
118
+            default:
119
+                return parent::__isset( $name );
120
+        }
121
+    }
122
+
123
+    /**
124
+     * Appends a part to the list of parts.
125
+     *
126
+     * @param ezcMailPart $part
127
+     */
128
+    public function appendPart( ezcMailPart $part )
129
+    {
130
+        $this->parts[] = $part;
131
+    }
132
+
133
+    /**
134
+     * Returns the mail parts associated with this multipart.
135
+     *
136
+     * @return array(ezcMailPart)
137
+     */
138
+    public function getParts()
139
+    {
140
+        return $this->parts;
141
+    }
142
+
143
+    /**
144
+     * Sets the readable $part of this report multipart.
145
+     *
146
+     * @param ezcMailPart $part
147
+     */
148
+    public function setReadablePart( ezcMailPart $part )
149
+    {
150
+        $this->parts[0] = $part;
151
+    }
152
+
153
+    /**
154
+     * Returns the readable part of this multipart or null if there is no such part.
155
+     *
156
+     * @return ezcMailPart
157
+     */
158
+    public function getReadablePart()
159
+    {
160
+        if ( isset( $this->parts[0] ) )
161
+        {
162
+            return $this->parts[0];
163
+        }
164
+        return null;
165
+    }
166
+
167
+    /**
168
+     * Sets the machine $part of this report multipart.
169
+     *
170
+     * @param ezcMailPart $part
171
+     */
172
+    public function setMachinePart( ezcMailPart $part )
173
+    {
174
+        $this->parts[1] = $part;
175
+    }
176
+
177
+    /**
178
+     * Returns the machine part of this multipart or null if there is no such part.
179
+     *
180
+     * @return ezcMailPart
181
+     */
182
+    public function getMachinePart()
183
+    {
184
+        if ( isset( $this->parts[1] ) )
185
+        {
186
+            return $this->parts[1];
187
+        }
188
+        return null;
189
+    }
190
+
191
+    /**
192
+     * Sets the original content $part of this report multipart.
193
+     *
194
+     * @param ezcMailPart $part
195
+     */
196
+    public function setOriginalPart( ezcMailPart $part )
197
+    {
198
+        $this->parts[2] = $part;
199
+    }
200
+
201
+    /**
202
+     * Returns the original content part of this multipart or null if there is no such part.
203
+     *
204
+     * @return ezcMailPart
205
+     */
206
+    public function getOriginalPart()
207
+    {
208
+        if ( isset( $this->parts[2] ) )
209
+        {
210
+            return $this->parts[2];
211
+        }
212
+        return null;
213
+    }
214
+
215
+    /**
216
+     * Returns "report".
217
+     *
218
+     * @return string
219
+     */
220
+    public function multipartType()
221
+    {
222
+        return "report";
223
+    }
224
+}
225
+?>
... ...
@@ -0,0 +1,126 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailRfc822Digest class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Mail part or mail digest parts.
13
+ *
14
+ * This class is used to insert mail into mail.
15
+ *
16
+ *
17
+ * This example assumes that the mail object to digest is availble in the $digest variable:
18
+ * <code>
19
+ * $mail = new ezcMail();
20
+ * $mail->from = new ezcMailAddress( '[email protected]', 'Largo LaGrande' );
21
+ * $mail->addTo( new ezcMailAddress( '[email protected]', 'Wally B. Feed' ) );
22
+ * $mail->subject = "This is the subject of the mail with a mail digest.";
23
+ * $textPart = new ezcMailText( "This is the body of the mail with a mail digest." );
24
+ *
25
+ * $mail->body = new ezcMailMultipartMixed( $textPart, new ezcMailRfc822Digest( $digest ) );
26
+ *
27
+ * $transport = new ezcMailMtaTransport();
28
+ * $transport->send( $mail );
29
+ * </code>
30
+ *
31
+ * @property string $mail
32
+ *           The mail object to digest.
33
+ *
34
+ * @package Mail
35
+ * @version 1.7.1
36
+ */
37
+class ezcMailRfc822Digest extends ezcMailPart
38
+{
39
+    /**
40
+     * Constructs a new ezcMailDigest with the mail $mail.
41
+     *
42
+     * @param ezcMail $mail
43
+     */
44
+    public function __construct( ezcMail $mail )
45
+    {
46
+        parent::__construct();
47
+
48
+        $this->mail = $mail;
49
+        $this->setHeader( 'Content-Type', 'message/rfc822' );
50
+        $this->setHeader( 'Content-Disposition', 'inline' );
51
+    }
52
+
53
+    /**
54
+     * Sets the property $name to $value.
55
+     *
56
+     * @throws ezcBasePropertyNotFoundException
57
+     *         if the property does not exist.
58
+     * @param string $name
59
+     * @param mixed $value
60
+     * @ignore
61
+     */
62
+    public function __set( $name, $value )
63
+    {
64
+        switch ( $name )
65
+        {
66
+            case 'mail':
67
+                $this->properties[$name] = $value;
68
+                break;
69
+            default:
70
+                return parent::__set( $name, $value );
71
+                break;
72
+        }
73
+    }
74
+
75
+    /**
76
+     * Sets the property $name to $value.
77
+     *
78
+     * @throws ezcBasePropertyNotFoundException
79
+     *         if the property does not exist.
80
+     * @param string $name
81
+     * @return mixed
82
+     * @ignore
83
+     */
84
+    public function __get( $name )
85
+    {
86
+        switch ( $name )
87
+        {
88
+            case 'mail':
89
+                return $this->properties[$name];
90
+                break;
91
+            default:
92
+                return parent::__get( $name );
93
+                break;
94
+        }
95
+    }
96
+
97
+    /**
98
+     * Returns true if the property $name is set, otherwise false.
99
+     *
100
+     * @param string $name
101
+     * @return bool
102
+     * @ignore
103
+     */
104
+    public function __isset( $name )
105
+    {
106
+        switch ( $name )
107
+        {
108
+            case 'mail':
109
+                return isset( $this->properties[$name] );
110
+
111
+            default:
112
+                return parent::__isset( $name );
113
+        }
114
+    }
115
+
116
+    /**
117
+     * Returns the body part of this mail consisting of the digested mail.
118
+     *
119
+     * @return string
120
+     */
121
+    public function generateBody()
122
+    {
123
+        return $this->mail->generate();
124
+    }
125
+}
126
+?>
... ...
@@ -0,0 +1,188 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailText class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Mail part used for sending all forms of plain text.
13
+ *
14
+ * Example: ezcMailText in a plain text message
15
+ * <code>
16
+ * $textPart = new ezcMailText( "This is a text message" );
17
+ * </code>
18
+ *
19
+ * Example: ezcMailText in a HTML message
20
+ * <code>
21
+ * $textPart = new ezcMailText( "<html>This is an <b>HTML</b> message"</html> );
22
+ * $textPart->subType = 'html';
23
+ * </code>
24
+ *
25
+ * @property string $charset
26
+ *           The characterset used for this text part. Defaults to 'us-ascii'
27
+ *           while creating mail, and is always 'utf-8' while parsing mail.
28
+ * @property string $subType
29
+ *           The subtype of this text part.
30
+ *           Defaults to 'plain' for plain text.
31
+ *           Use 'html' for HTML messages.
32
+ * @property string $encoding
33
+ *           The encoding of the text. Defaults to eight bit.
34
+ * @property string $text
35
+ *           The main data of this text part.
36
+ * @property-read string $originalCharset
37
+ *                The characterset in which a text part originally was before
38
+ *                the conversion to UTF-8 when parsing incomming mail.
39
+ *
40
+ * @package Mail
41
+ * @version 1.7.1
42
+ */
43
+class ezcMailText extends ezcMailPart
44
+{
45
+    /**
46
+     * Constructs a new TextPart with the given $text, $charset and $encoding.
47
+     *
48
+     * OriginalCharset is only used when parsing mail. Parsed mail will always
49
+     * be converted to UTF-8 in this case $originalCharset will hold the
50
+     * charset before it was converted.
51
+     *
52
+     * @param string $text
53
+     * @param string $charset
54
+     * @param string $encoding
55
+     * @param string $originalCharset
56
+     */
57
+    public function __construct( $text, $charset = "us-ascii", $encoding = ezcMail::EIGHT_BIT, $originalCharset = 'us-ascii' )
58
+    {
59
+        parent::__construct();
60
+
61
+        $this->text = $text;
62
+        $this->charset = $charset;
63
+        $this->encoding = $encoding;
64
+        $this->subType = 'plain';
65
+        // We need to set this directly in the array as it's a read-only property.
66
+        $this->properties['originalCharset'] = $originalCharset;
67
+    }
68
+
69
+    /**
70
+     * Sets the property $name to $value.
71
+     *
72
+     * @throws ezcBasePropertyNotFoundException
73
+     *         if the property does not exist.
74
+     * @throws ezcBasePropertyPermissionException
75
+     *         if the property is read-only.
76
+     * @param string $name
77
+     * @param mixed $value
78
+     * @ignore
79
+     */
80
+    public function __set( $name, $value )
81
+    {
82
+        switch ( $name )
83
+        {
84
+            case 'charset':
85
+            case 'subType':
86
+            case 'encoding':
87
+            case 'text':
88
+                $this->properties[$name] = $value;
89
+                break;
90
+            case 'originalCharset':
91
+                throw new ezcBasePropertyPermissionException( $name, ezcBasePropertyPermissionException::READ );
92
+                break;
93
+            default:
94
+                return parent::__set( $name, $value );
95
+                break;
96
+        }
97
+    }
98
+
99
+    /**
100
+     * Sets the property $name to $value.
101
+     *
102
+     * @throws ezcBasePropertyNotFoundException
103
+     *         if the property does not exist.
104
+     * @param string $name
105
+     * @return mixed
106
+     * @ignore
107
+     */
108
+    public function __get( $name )
109
+    {
110
+        switch ( $name )
111
+        {
112
+            case 'charset':
113
+            case 'originalCharset':
114
+            case 'subType':
115
+            case 'encoding':
116
+            case 'text':
117
+                return $this->properties[$name];
118
+            default:
119
+                return parent::__get( $name );
120
+        }
121
+    }
122
+
123
+    /**
124
+     * Returns true if the property $name is set, otherwise false.
125
+     *
126
+     * @param string $name     
127
+     * @return bool
128
+     * @ignore
129
+     */
130
+    public function __isset( $name )
131
+    {
132
+        switch ( $name )
133
+        {
134
+            case 'charset':
135
+            case 'originalCharset':
136
+            case 'subType':
137
+            case 'encoding':
138
+            case 'text':
139
+                return isset( $this->properties[$name] );
140
+
141
+            default:
142
+                return parent::__isset( $name );
143
+        }
144
+    }
145
+
146
+    /**
147
+     * Returns the headers set for this part as a RFC822 compliant string.
148
+     *
149
+     * This method does not add the required two lines of space
150
+     * to separate the headers from the body of the part.
151
+     *
152
+     * @see setHeader()
153
+     * @return string
154
+     */
155
+    public function generateHeaders()
156
+    {
157
+        $this->setHeader( "Content-Type", "text/" . $this->subType . "; charset=" . $this->charset );
158
+        $this->setHeader( "Content-Transfer-Encoding", $this->encoding );
159
+        return parent::generateHeaders();
160
+    }
161
+
162
+    /**
163
+     * Returns the generated text body of this part as a string.
164
+     *
165
+     * @return string
166
+     */
167
+    public function generateBody()
168
+    {
169
+        switch ( $this->encoding )
170
+        {
171
+            case ezcMail::BASE64:
172
+                // leaves a \r\n to much at the end, but since it is base64 it will decode
173
+                // properly so we just leave it
174
+                return chunk_split( base64_encode( $this->text ), 76, ezcMailTools::lineBreak() );
175
+                break;
176
+            case ezcMail::QUOTED_PRINTABLE:
177
+                 $text = preg_replace( '/[^\x21-\x3C\x3E-\x7E\x09\x20]/e',
178
+                                       'sprintf( "=%02X", ord ( "$0" ) ) ;',  $this->text );
179
+                 preg_match_all( '/.{1,73}([^=]{0,2})?/', $text, $match );
180
+                 $text = implode( '=' . ezcMailTools::lineBreak(), $match[0] );
181
+                return $text;
182
+                break;
183
+            default:
184
+                return preg_replace( "/\r\n|\r|\n/", ezcMailTools::lineBreak(), $this->text );
185
+        }
186
+    }
187
+}
188
+?>
... ...
@@ -0,0 +1,192 @@
1
+<?php
2
+/**
3
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
4
+ * @license http://ez.no/licenses/new_bsd New BSD License
5
+ * @version 1.7.1
6
+ * @filesource
7
+ * @package Mail
8
+ */
9
+
10
+/**
11
+ * A container to store a Content-Disposition header as described in http://www.faqs.org/rfcs/rfc2183.
12
+ *
13
+ * This container is used on the contentDisposition property on mail parts.
14
+ * Use it for reading and setting the Content-Disposition header.
15
+ *
16
+ * @package Mail
17
+ * @version 1.7.1
18
+ */
19
+class ezcMailContentDispositionHeader extends ezcBaseStruct
20
+{
21
+    /**
22
+     * The disposition type, either "inline" or "attachment".
23
+     *
24
+     * @var string
25
+     */
26
+    public $disposition;
27
+
28
+    /**
29
+     * The filename of the attachment.
30
+     *
31
+     * The filename should never include path information.
32
+     *
33
+     * @var string
34
+     */
35
+    public $fileName;
36
+
37
+    /**
38
+     * The filename of the attachment, formatted for display. Used only for
39
+     * parsing, not used when generating a mail.
40
+     *
41
+     * The filename should never include path information.
42
+     *
43
+     * Added for issue #13038. If you use __set_state() be sure to set this
44
+     * property also.
45
+     *
46
+     * @var string
47
+     */
48
+    public $displayFileName;
49
+
50
+    /**
51
+     * The language of the filename.
52
+     *
53
+     * @var string
54
+     */
55
+    public $fileNameLanguage;
56
+
57
+    /**
58
+     * The characterset of the file name.
59
+     *
60
+     * @var string
61
+     */
62
+    public $fileNameCharSet;
63
+
64
+    /**
65
+     * The creation date of the file attachment.
66
+     *
67
+     * The time should be formatted as specified by http://www.faqs.org/rfcs/rfc822.html
68
+     * section 5.
69
+     *
70
+     * A typical example is: Sun, 21 May 2006 16:00:50 +0400
71
+     *
72
+     * @var string
73
+     */
74
+    public $creationDate;
75
+
76
+    /**
77
+     * The last modification date of the file attachment.
78
+     *
79
+     * The time should be formatted as specified by http://www.faqs.org/rfcs/rfc822.html
80
+     * section 5.
81
+     *
82
+     * A typical example is: Sun, 21 May 2006 16:00:50 +0400
83
+     *
84
+     * @var string
85
+     */
86
+    public $modificationDate;
87
+
88
+    /**
89
+     * The last date the file attachment was read.
90
+     *
91
+     * The time should be formatted as specified by http://www.faqs.org/rfcs/rfc822.html
92
+     * section 5.
93
+     *
94
+     * A typical example is: Sun, 21 May 2006 16:00:50 +0400
95
+     *
96
+     * @var string
97
+     */
98
+    public $readDate;
99
+
100
+    /**
101
+     * The size of the content in bytes.
102
+     *
103
+     * @var int
104
+     */
105
+    public $size;
106
+
107
+    /**
108
+     * Any additional parameters provided in the Content-Disposition header.
109
+     *
110
+     * The format of the field is array(parameterName=>parameterValue)
111
+     *
112
+     * @var array(string=>string)
113
+     */
114
+    public $additionalParameters = array();
115
+
116
+    /**
117
+     * Holds language and characterset data for the additional parameters.
118
+     *
119
+     * Format: array(parameterName=>array('charSet'=>string,'language'=>string))
120
+     *
121
+     * @apichange Merge this with $additionalParamters OR come up with an entirely new idea for the ContentDispositionHeader
122
+     * @var array(string=>array())
123
+     */
124
+    public $additionalParametersMetaData = array();
125
+
126
+    /**
127
+     * Constructs a new ezcMailContentDispositionHeader holding the various values of this
128
+     * container.
129
+     *
130
+     * @param string $disposition
131
+     * @param string $fileName
132
+     * @param string $creationDate
133
+     * @param string $modificationDate
134
+     * @param string $readDate
135
+     * @param string $size
136
+     * @param array(string=>string) $additionalParameters
137
+     * @param string $fileNameLanguage
138
+     * @param string $fileNameCharSet
139
+     */
140
+    public function __construct( $disposition = 'inline',
141
+                                 $fileName = null,
142
+                                 $creationDate = null,
143
+                                 $modificationDate = null,
144
+                                 $readDate = null,
145
+                                 $size = null,
146
+                                 $additionalParameters = array(),
147
+                                 $fileNameLanguage = null,
148
+                                 $fileNameCharSet = null,
149
+                                 $displayFileName = null )
150
+    {
151
+        $this->disposition = $disposition;
152
+        $this->fileName = $fileName;
153
+        $this->fileNameLanguage = $fileNameLanguage;
154
+        $this->fileNameCharSet = $fileNameCharSet;
155
+        $this->displayFileName = $displayFileName;
156
+        $this->creationDate = $creationDate;
157
+        $this->modificationDate = $modificationDate;
158
+        $this->readDate = $readDate;
159
+        $this->size = $size;
160
+        $this->additionalParameters = $additionalParameters;
161
+    }
162
+
163
+    /**
164
+     * Returns a new instance of this class with the data specified by $array.
165
+     *
166
+     * $array contains all the data members of this class in the form:
167
+     * array('member_name'=>value).
168
+     *
169
+     * __set_state makes this class exportable with var_export.
170
+     * var_export() generates code, that calls this method when it
171
+     * is parsed with PHP.
172
+     *
173
+     * @param array(string=>mixed) $array
174
+     * @return ezcMailAddress
175
+     */
176
+    static public function __set_state( array $array )
177
+    {
178
+        return new ezcMailContentDispositionHeader( $array['disposition'],
179
+                                                    $array['fileName'],
180
+                                                    $array['creationDate'],
181
+                                                    $array['modificationDate'],
182
+                                                    $array['readDate'],
183
+                                                    $array['size'],
184
+                                                    $array['additionalParameters'],
185
+                                                    $array['fileNameLanguage'],
186
+                                                    $array['fileNameCharSet'],
187
+                                                    $array['displayFileName']
188
+                                                    );
189
+    }
190
+}
191
+
192
+?>
... ...
@@ -0,0 +1,90 @@
1
+<?php
2
+/**
3
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
4
+ * @license http://ez.no/licenses/new_bsd New BSD License
5
+ * @version 1.7.1
6
+ * @filesource
7
+ * @package Mail
8
+ */
9
+
10
+/**
11
+ * A container to store a mail address in RFC822 format.
12
+ *
13
+ * The class ezcMailTools contains methods for transformation between several
14
+ * formats.
15
+ *
16
+ * @package Mail
17
+ * @version 1.7.1
18
+ * @mainclass
19
+ */
20
+class ezcMailAddress extends ezcBaseStruct
21
+{
22
+    /**
23
+     * The name of the recipient (optional).
24
+     *
25
+     * @var string
26
+     */
27
+    public $name;
28
+
29
+    /**
30
+     * The email address of the recipient.
31
+     *
32
+     * @var string
33
+     */
34
+    public $email;
35
+
36
+    /**
37
+     * The character set used in the $name property.
38
+     *
39
+     * The characterset defaults to us-ascii.
40
+     */
41
+    public $charset;
42
+
43
+    /**
44
+     * Constructs a new ezcMailAddress with the mail address $email and the optional name $name.
45
+     *
46
+     * @param string $email
47
+     * @param string $name
48
+     * @param string $charset
49
+     */
50
+    public function __construct( $email, $name = '', $charset = 'us-ascii' )
51
+    {
52
+        $this->name = $name;
53
+        $this->email = $email;
54
+        $this->charset = $charset;
55
+    }
56
+
57
+    /**
58
+     * Returns a new instance of this class with the data specified by $array.
59
+     *
60
+     * $array contains all the data members of this class in the form:
61
+     * array('member_name'=>value).
62
+     *
63
+     * __set_state makes this class exportable with var_export.
64
+     * var_export() generates code, that calls this method when it
65
+     * is parsed with PHP.
66
+     *
67
+     * @param array(string=>mixed) $array
68
+     * @return ezcMailAddress
69
+     */
70
+    static public function __set_state( array $array )
71
+    {
72
+        return new ezcMailAddress( $array['email'], $array['name'] );
73
+    }
74
+
75
+    /**
76
+     * Returns string representation of email address on string cast.
77
+     *
78
+     * Builds a representation in format "Name <[email protected]>", if name
79
+     * is present, else only "<[email protected]>", if name is not present. You
80
+     * can simply do echo with an object of type ezcMailAddress or (since PHP
81
+     * 5.2) explicitly cast it to string using (string) $object.
82
+     *
83
+     * @return string String representation of the email address.
84
+     */
85
+    public function __toString()
86
+    {
87
+        return ( !empty( $this->name ) ? "{$this->name} " : "" ) . "<{$this->email}>";
88
+    }
89
+}
90
+?>
... ...
@@ -0,0 +1,188 @@
1
+<?php
2
+/**
3
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
4
+ * @license http://ez.no/licenses/new_bsd New BSD License
5
+ * @version 1.7.1
6
+ * @filesource
7
+ * @package Mail
8
+ */
9
+
10
+/**
11
+ * Use this class to create a context to be passed to the walkParts() method from ezcMail.
12
+ *
13
+ * Example:
14
+ * <code>
15
+ * class App
16
+ * {
17
+ *     public static function saveMailPart( $context, $mailPart )
18
+ *     {
19
+ *         // code to save the $mailPart object to disk
20
+ *     }
21
+ * }
22
+ *
23
+ * // use the saveMailPart() function as a callback in walkParts()
24
+ * // where $mail is an ezcMail object.
25
+ * $context = new ezcMailPartWalkContext( array( 'App', 'saveMailPart' ) );
26
+ * $context->includeDigests = true; // if you want to go through the digests in the mail
27
+ * $mail->walkParts( $context, $mail );
28
+ * </code>
29
+ *
30
+ * @property array(string) $filter
31
+ *           Used to restrict processing only to the specified mail part names.
32
+ *           If empty or null, then ezcMailText, ezcMailFile and ezcMailRfc822Digest
33
+ *           parts are processed. Usage e.g.: array( 'ezcMailFile' )
34
+ * @property callback $callbackFunction
35
+ *           Name of a function or array( 'class_name', 'function_name' )
36
+ * @property bool $includeDigests
37
+ *           If true then then ezcMailRfc822Digest parts are not processed by
38
+ *           the callback function, instead the mail parts inside the digests will
39
+ *           be available for processing.
40
+ * @property int $level
41
+ *           The current level in the mail part walk (0 = first level).
42
+ *
43
+ * @package Mail
44
+ * @version 1.7.1
45
+ */
46
+class ezcMailPartWalkContext
47
+{
48
+    /**
49
+     * An array of mail parts (retrieved recursively from a mail object).
50
+     *
51
+     * @var array(ezcMailPart)
52
+     */
53
+    protected $parts = array();
54
+
55
+    /**
56
+     * Holds the properties of this class.
57
+     *
58
+     * @var array(string=>mixed)
59
+     */
60
+    private $properties = array();
61
+
62
+    /**
63
+     * Constructs a new ezcMailPartWalkContext object.
64
+     *
65
+     * The parameter $callbackFunction must be a function name as string or as
66
+     * array( 'class_name', 'function_name' ).
67
+     *
68
+     * @param callback $callbackFunction
69
+     */
70
+    public function __construct( $callbackFunction )
71
+    {
72
+        $this->callbackFunction = $callbackFunction;
73
+        $this->level = 0;
74
+        $this->filter = array();
75
+        $this->includeDigests = false;
76
+    }
77
+
78
+    /**
79
+     * Sets the property $name to $value.
80
+     *
81
+     * @throws ezcBasePropertyNotFoundException
82
+     *         if the property $name does not exist
83
+     * @throws ezcBaseValueException
84
+     *         if $value is not appropiate for property $name
85
+     * @param string $name
86
+     * @param mixed $value
87
+     * @ignore
88
+     */
89
+    public function __set( $name, $value )
90
+    {
91
+        switch ( $name )
92
+        {
93
+            case 'level':
94
+                if ( !is_numeric( $value) || $value < 0 )
95
+                {
96
+                    throw new ezcBaseValueException( $name, $value, 'int >= 0' );
97
+                }
98
+                $this->properties[$name] = (int) $value;
99
+                break;
100
+
101
+            case 'includeDigests':
102
+                if ( !is_bool( $value ) )
103
+                {
104
+                    throw new ezcBaseValueException( $name, $value, 'bool' );
105
+                }
106
+                $this->properties[$name] = (bool) $value;
107
+                break;
108
+
109
+            case 'filter':
110
+                $this->properties[$name] = $value;
111
+                break;
112
+
113
+            case 'callbackFunction':
114
+                $this->properties[$name] = $value;
115
+                break;
116
+
117
+            default:
118
+                throw new ezcBasePropertyNotFoundException( $name );
119
+        }
120
+    }
121
+
122
+    /**
123
+     * Returns the value of the property $name.
124
+     *
125
+     * @throws ezcBasePropertyNotFoundException
126
+     *         if the property $name does not exist
127
+     * @param string $name
128
+     * @return mixed
129
+     * @ignore
130
+     */
131
+    public function __get( $name )
132
+    {
133
+        switch ( $name )
134
+        {
135
+            case 'level':
136
+            case 'filter':
137
+            case 'callbackFunction':
138
+            case 'includeDigests':
139
+                return $this->properties[$name];
140
+
141
+            default:
142
+                throw new ezcBasePropertyNotFoundException( $name );
143
+        }
144
+    }
145
+
146
+    /**
147
+     * Returns true if the property $name is set, otherwise false.
148
+     *
149
+     * @param string $name
150
+     * @return bool
151
+     * @ignore
152
+     */
153
+    public function __isset( $name )
154
+    {
155
+        switch ( $name )
156
+        {
157
+            case 'level':
158
+            case 'filter':
159
+            case 'callbackFunction':
160
+            case 'includeDigests':
161
+                return isset( $this->properties[$name] );
162
+
163
+            default:
164
+                return false;
165
+        }
166
+    }
167
+
168
+    /**
169
+     * Appends a part to the list of mail parts.
170
+     *
171
+     * @param ezcMailPart $part
172
+     */
173
+    public function appendPart( ezcMailPart $part )
174
+    {
175
+        $this->parts[] = $part;
176
+    }
177
+
178
+    /**
179
+     * Returns the mail parts.
180
+     *
181
+     * @return array(ezcMailPart)
182
+     */
183
+    public function getParts()
184
+    {
185
+        return $this->parts;
186
+    }
187
+}
188
+?>
... ...
@@ -0,0 +1,782 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailTools class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * This class contains static convenience methods for composing addresses
13
+ * and ensuring correct line-breaks in the mail.
14
+ *
15
+ * @package Mail
16
+ * @version 1.7.1
17
+ * @mainclass
18
+ */
19
+class ezcMailTools
20
+{
21
+    /**
22
+     * Reply to sender.
23
+     */
24
+    const REPLY_SENDER = 1;
25
+
26
+    /**
27
+     * Reply to all.
28
+     */
29
+    const REPLY_ALL = 1;
30
+
31
+    /**
32
+     * Server to use for validateEmailAddressMx(). Change this if this server
33
+     * cannot be used with your Internet Service Provider.
34
+     *
35
+     * Default value: 'smtp.ez.no'.
36
+     *
37
+     * @var string
38
+     */
39
+    public static $mxValidateServer = 'smtp.ez.no';
40
+
41
+    /**
42
+     * Email address to use for validateEmailAddressMx(). Change this if this
43
+     * address cannot be used with your Internet Service Provider.
44
+     *
45
+     * Default value: '[email protected]'.
46
+     *
47
+     * @var string
48
+     */
49
+    public static $mxValidateAddress = '[email protected]';
50
+
51
+    /**
52
+     * Holds the unique ID's.
53
+     *
54
+     * @var int
55
+     */
56
+    private static $idCounter = 0;
57
+
58
+    /**
59
+     * The characters to use for line-breaks in the mail.
60
+     *
61
+     * The default is \r\n which is the value specified in RFC822.
62
+     *
63
+     * @var string
64
+     */
65
+    private static $lineBreak = "\r\n";
66
+
67
+    /**
68
+     * Returns ezcMailAddress $item as a RFC822 compliant address string.
69
+     *
70
+     * Example:
71
+     * <code>
72
+     * composeEmailAddress( new ezcMailAddress( '[email protected]', 'John Doe' ) );
73
+     * </code>
74
+     *
75
+     * Returns:
76
+     * <pre>
77
+     * John Doe <[email protected]>
78
+     * </pre>
79
+     *
80
+     * The name part of $item will be surrounded by quotes if it contains any of
81
+     * these characters: , @ < > : ; ' "
82
+     *
83
+     * @param ezcMailAddress $item
84
+     * @return string
85
+     */
86
+    public static function composeEmailAddress( ezcMailAddress $item )
87
+    {
88
+        $name = trim( $item->name );
89
+        if ( $name !== '' )
90
+        {
91
+            // remove the quotes around the name part if they are already there
92
+            if ( $name{0} === '"' && $name{strlen( $name ) - 1} === '"' )
93
+            {
94
+                $name = substr( $name, 1, -1 );
95
+            }
96
+
97
+            // add slashes to " and \ and surround the name part with quotes
98
+            if ( strpbrk( $name, ",@<>:;'\"" ) !== false )
99
+            {
100
+                $name = str_replace( '\\', '\\\\', $name );
101
+                $name = str_replace( '"', '\"', $name );
102
+                $name = "\"{$name}\"";
103
+            }
104
+
105
+            switch ( strtolower( $item->charset ) )
106
+            {
107
+                case 'us-ascii':
108
+                    $text = $name . ' <' . $item->email . '>';
109
+                    break;
110
+
111
+                case 'iso-8859-1': case 'iso-8859-2': case 'iso-8859-3': case 'iso-8859-4':
112
+                case 'iso-8859-5': case 'iso-8859-6': case 'iso-8859-7': case 'iso-8859-8':
113
+                case 'iso-8859-9': case 'iso-8859-10': case 'iso-8859-11': case 'iso-8859-12':
114
+                case 'iso-8859-13': case 'iso-8859-14': case 'iso-8859-15' :case 'iso-8859-16':
115
+                case 'windows-1250': case 'windows-1251': case 'windows-1252':
116
+                case 'utf-8':
117
+                    if ( strpbrk( $name, "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff" ) === false )
118
+                    {
119
+                        $text = $name . ' <' . $item->email . '>';
120
+                        break;
121
+                    }
122
+                    // break intentionally missing
123
+
124
+                default:
125
+                    $preferences = array(
126
+                        'input-charset' => $item->charset,
127
+                        'output-charset' => $item->charset,
128
+                        'scheme' => 'Q',
129
+                        'line-break-chars' => ezcMailTools::lineBreak()
130
+                    );
131
+                    $name = iconv_mime_encode( 'dummy', $name, $preferences );
132
+                    $name = substr( $name, 7 ); // "dummy: " + 1
133
+                    $text = $name . ' <' . $item->email . '>';
134
+                    break;
135
+            }
136
+        }
137
+        else
138
+        {
139
+            $text = $item->email;
140
+        }
141
+        return $text;
142
+    }
143
+
144
+    /**
145
+     * Returns the array $items consisting of ezcMailAddress objects
146
+     * as one RFC822 compliant address string.
147
+     *
148
+     * Set foldLength to control how many characters each line can have before a line
149
+     * break is inserted according to the folding rules specified in RFC2822.
150
+     *
151
+     * @param array(ezcMailAddress) $items
152
+     * @param int $foldLength
153
+     * @return string
154
+     */
155
+    public static function composeEmailAddresses( array $items, $foldLength = null )
156
+    {
157
+        $textElements = array();
158
+        foreach ( $items as $item )
159
+        {
160
+            $textElements[] = ezcMailTools::composeEmailAddress( $item );
161
+        }
162
+
163
+        if ( $foldLength === null ) // quick version
164
+        {
165
+            return implode( ', ', $textElements );
166
+        }
167
+
168
+        $result = "";
169
+        $charsSinceFold = 0;
170
+        foreach ( $textElements as $element )
171
+        {
172
+            $length = strlen( $element );
173
+            if ( ( $charsSinceFold + $length + 2 /* comma, space */ ) > $foldLength )
174
+            {
175
+                // fold last line if there is any
176
+                if ( $result != '' )
177
+                {
178
+                    $result .= "," . ezcMailTools::lineBreak() .' ';
179
+                    $charsSinceFold = 0;
180
+                }
181
+                $result .= $element;
182
+            }
183
+            else
184
+            {
185
+                if ( $result == '' )
186
+                {
187
+                    $result = $element;
188
+                }
189
+                else
190
+                {
191
+                    $result .= ', ' . $element;
192
+                }
193
+            }
194
+            $charsSinceFold += $length + 1 /*space*/;
195
+        }
196
+        return $result;
197
+    }
198
+
199
+    /**
200
+     * Returns an ezcMailAddress object parsed from the address string $address.
201
+     *
202
+     * You can set the encoding of the name part with the $encoding parameter.
203
+     * If $encoding is omitted or set to "mime" parseEmailAddress will asume that
204
+     * the name part is mime encoded.
205
+     *
206
+     * This method does not perform validation. It will also accept slightly
207
+     * malformed addresses.
208
+     *
209
+     * If the mail address given can not be decoded null is returned.
210
+     *
211
+     * Example:
212
+     * <code>
213
+     * ezcMailTools::parseEmailAddress( 'John Doe <[email protected]>' );
214
+     * </code>
215
+     *
216
+     * @param string $address
217
+     * @param string $encoding
218
+     * @return ezcMailAddress
219
+     */
220
+    public static function parseEmailAddress( $address, $encoding = "mime" )
221
+    {
222
+        // we don't care about the "group" part of the address since this is not used anywhere
223
+
224
+        $matches = array();
225
+        $pattern = '/<?\"?[a-zA-Z0-9!#\$\%\&\'\*\+\-\/=\?\^_`{\|}~\.]+\"?@[a-zA-Z0-9!#\$\%\&\'\*\+\-\/=\?\^_`{\|}~\.]+>?$/';
226
+        if ( preg_match( trim( $pattern ), $address, $matches, PREG_OFFSET_CAPTURE ) != 1 )
227
+        {
228
+            return null;
229
+        }
230
+        $name = substr( $address, 0, $matches[0][1] );
231
+
232
+        // trim <> from the address and "" from the name
233
+        $name = trim( $name, '" ' );
234
+        $mail = trim( $matches[0][0], '<>' );
235
+        // remove any quotes found in mail addresses like "bah,"@example.com
236
+        $mail = str_replace( '"', '', $mail );
237
+
238
+        if ( $encoding == 'mime' )
239
+        {
240
+            // the name may contain interesting character encoding. We need to convert it.
241
+            $name = ezcMailTools::mimeDecode( $name );
242
+        }
243
+        else
244
+        {
245
+            $name = ezcMailCharsetConverter::convertToUTF8( $name, $encoding );
246
+        }
247
+
248
+        $address = new ezcMailAddress( $mail, $name, 'utf-8' );
249
+        return $address;
250
+    }
251
+
252
+    /**
253
+     * Returns an array of ezcMailAddress objects parsed from the address string $addresses.
254
+     *
255
+     * You can set the encoding of the name parts with the $encoding parameter.
256
+     * If $encoding is omitted or set to "mime" parseEmailAddresses will asume that
257
+     * the name parts are mime encoded.
258
+     *
259
+     * Example:
260
+     * <code>
261
+     * ezcMailTools::parseEmailAddresses( 'John Doe <[email protected]>' );
262
+     * </code>
263
+     *
264
+     * @param string $addresses
265
+     * @param string $encoding
266
+     * @return array(ezcMailAddress)
267
+     */
268
+    public static function parseEmailAddresses( $addresses, $encoding = "mime" )
269
+    {
270
+        $addressesArray = array();
271
+        $inQuote = false;
272
+        $last = 0; // last hit
273
+        $length = strlen( $addresses );
274
+        for ( $i = 0; $i < $length; $i++ )
275
+        {
276
+            if ( $addresses[$i] == '"' )
277
+            {
278
+                $inQuote = !$inQuote;
279
+            }
280
+            else if ( $addresses[$i] == ',' && !$inQuote )
281
+            {
282
+                $addressesArray[] = substr( $addresses, $last, $i - $last );
283
+                $last = $i + 1; // eat comma
284
+            }
285
+        }
286
+
287
+        // fetch the last one
288
+        $addressesArray[] = substr( $addresses, $last );
289
+
290
+        $addressObjects = array();
291
+        foreach ( $addressesArray as $address )
292
+        {
293
+            $addressObject = self::parseEmailAddress( $address, $encoding );
294
+            if ( $addressObject !== null )
295
+            {
296
+                $addressObjects[] = $addressObject;
297
+            }
298
+        }
299
+
300
+        return $addressObjects;
301
+    }
302
+
303
+    /**
304
+     * Returns true if $address is a valid email address, false otherwise.
305
+     *
306
+     * By default it will only validate against the same regular expression
307
+     * used in ext/filter. It follows
308
+     * {@link http://www.faqs.org/rfcs/rfc822.html RFC822} and
309
+     * {@link http://www.faqs.org/rfcs/rfc2822.html RFC2822}.
310
+     *
311
+     * If $checkMxRecords is true, then an MX records check will be performed
312
+     * also, by sending a test mail (RCPT TO) to $address using the MX records
313
+     * found for the domain part of $address. MX record checking does not work
314
+     * on Windows due to the lack of getmxrr() and checkdnsrr() PHP functions.
315
+     * The ezcBaseFunctionalityNotSupportedException is thrown in this case.
316
+     *
317
+     * If checking against MX records, set these values before performing the
318
+     * check, to ensure the MX record checks work properly:
319
+     * <code>
320
+     * ezcMailTools::$mxValidateServer = 'your.mail.server'; // default 'smtp.ez.no'
321
+     * ezcMailTools::$mxValidateAddress = '[email protected]'; // default '[email protected]'
322
+     * </code>
323
+     *
324
+     * The input email address $address should be trimmed from white spaces
325
+     * and/or quotes around it before calling this function (if needed).
326
+     *
327
+     * An email address has this form:
328
+     * <code>
329
+     *   localpart@domainpart
330
+     * </code>
331
+     *
332
+     * The localpart has these rules, and these rules are just an approximation of
333
+     * the rules in RFC2822:
334
+     *  - allowed characters: . + ~ / ' - _ ` ^ $ % & ! ' | {
335
+     *  - the dot (.) cannot be the first or the last character
336
+     *  - the double-quote character (") can only surround the localpart (so
337
+     *    if it appears it must be the first and the last character of localpart)
338
+     *  - spaces are allowed if the localpart is surrounded in double-quotes
339
+     *  - other ASCII characters (even from the extended-ASCII set) are allowed
340
+     *    if the localparts is surrounded in double-quotes (the function
341
+     *    ezcMailTools::composeEmailAddress will encode it when using it
342
+     *    in a mail header)
343
+     *  - the double-quotes character (") cannot be escaped to appear in a
344
+     *    localpart surrounded by double quotes (so "john"doe"@example.com is not
345
+     *    a valid email address)
346
+     *
347
+     * The domainpart has the same rules as a domain name, as defined in
348
+     * {@link http://www.faqs.org/rfcs/rfc822.html RFC822} and
349
+     * {@link http://www.faqs.org/rfcs/rfc2822.html RFC2822}.
350
+     *
351
+     * See also the test files (in the "Mail/tests/tools/data" directory) for
352
+     * examples of correct and incorrect email addresses.
353
+     *
354
+     * @throws ezcBaseFunctionalityNotSupportedException
355
+     *         if $checkMxRecords is true and getmxrr() or checkdnsrr() functions
356
+     *         are missing (e.g. on Windows)
357
+     * @param string $address
358
+     * @param bool $checkMxRecords
359
+     * @return bool
360
+     */
361
+    public static function validateEmailAddress( $address, $checkMxRecords = false )
362
+    {
363
+        $pattern = '/^((\"[^\"\f\n\r\t\v\b]+\")|([A-Za-z0-9_\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+(\.[A-Za-z0-9_\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]{2,}))$/';
364
+
365
+        if ( preg_match( $pattern, $address ) )
366
+        {
367
+            if ( $checkMxRecords )
368
+            {
369
+                return self::validateEmailAddressMx( $address );
370
+            }
371
+            else
372
+            {
373
+                // $address passed through regexp, with no MX checks
374
+                return true;
375
+            }
376
+        }
377
+        else
378
+        {
379
+            // $address did not pass through regexp
380
+            return false;
381
+        }
382
+    }
383
+
384
+    /**
385
+     * Checks if the email address $address is valid based on its MX records.
386
+     *
387
+     * Steps:
388
+     *  - the MX records are fetched for the domain part of $address, along with
389
+     *    their weights
390
+     *  - the MX records are sorted based on the weights
391
+     *  - for each MX record a connection is open
392
+     *  - a test mail (RCPT TO) is tried to be sent to $address
393
+     *  - if one test mail succeeds, then the address is valid, else invalid
394
+     *
395
+     * Set these values before calling this function, to ensure the MX record
396
+     * checks work properly:
397
+     * <code>
398
+     * ezcMailTools::$mxValidateServer = 'your.mail.server'; // default 'smtp.ez.no'
399
+     * ezcMailTools::$mxValidateAddress = '[email protected]'; // default '[email protected]'
400
+     * </code>
401
+     *
402
+     * MX record checking does not work on Windows due to the lack of getmxrr()
403
+     * and checkdnsrr() PHP functions. The ezcBaseFunctionalityNotSupportedException
404
+     * is thrown in this case.
405
+     *
406
+     * @throws ezcBaseFunctionalityNotSupportedException
407
+     *         if getmxrr() or checkdnsrr() functions are missing (e.g. on Windows)
408
+     * @param string $address
409
+     * @return bool
410
+     */
411
+    protected static function validateEmailAddressMx( $address )
412
+    {
413
+        if ( !ezcBaseFeatures::hasFunction( 'getmxrr' ) || !ezcBaseFeatures::hasFunction( 'checkdnsrr' ) )
414
+        {
415
+            throw new ezcBaseFunctionalityNotSupportedException( 'Checking DNS records', 'getmxrr() or checkdnsrr() missing' );
416
+        }
417
+
418
+        $timeoutOpen = 3; // for fsockopen()
419
+        $timeoutConnection = 5; // for stream_set_timeout()
420
+
421
+        list( $local, $domain ) = explode( '@', $address );
422
+        if ( !empty( $domain ) )
423
+        {
424
+            if ( getmxrr( $domain, $hosts, $weights ) )
425
+            {
426
+                for ( $i = 0; $i < count( $hosts ); $i++ )
427
+                {
428
+                    $mx[$hosts[$i]] = $weights[$i];
429
+                }
430
+
431
+                asort( $mx );
432
+                $mx = array_keys( $mx );
433
+            }
434
+            elseif ( checkdnsrr( $domain, 'A' ) )
435
+            {
436
+                $mx[0] = gethostbyname( $domain );
437
+            }
438
+            else
439
+            {
440
+                $mx = array();
441
+            }
442
+
443
+            if ( ( $numberOfMx = count( $mx ) ) > 0 )
444
+            {
445
+                $smtp = array(
446
+                               "HELO " . self::$mxValidateServer,
447
+                               "MAIL FROM: <" . self::$mxValidateAddress . ">",
448
+                               "RCPT TO: <{$address}>",
449
+                               "QUIT",
450
+                             );
451
+
452
+                for ( $i = 0; $i < $numberOfMx; $i++ )
453
+                {
454
+                    if ( $socket = @fsockopen( $mx[$i], 25, $errno = 0, $errstr = 0, $timeoutOpen ) )
455
+                    {
456
+                        $response = fgets( $socket );
457
+                        stream_set_timeout( $socket, $timeoutConnection );
458
+                        $meta = stream_get_meta_data( $socket );
459
+                        if ( !$meta['timed_out'] && !preg_match( '/^2\d\d[ -]/', $response ) )
460
+                        {
461
+                            return false;
462
+                        }
463
+                        foreach ( $smtp as $command )
464
+                        {
465
+                            fputs( $socket, "{$command}\r\n" );
466
+                            $response = fgets( $socket, 4096 );
467
+                            if ( !$meta['timed_out'] && preg_match( '/^5\d\d[ -]/', $response ) )
468
+                            {
469
+                                return false;
470
+                            }
471
+                        }
472
+                        fclose( $socket );
473
+                        return true;
474
+                    }
475
+                    elseif ( $i === $numberOfMx - 1 )
476
+                    {
477
+                        // none of the mail servers could be contacted
478
+                        return false;
479
+                    }
480
+                }
481
+            }
482
+            else
483
+            {
484
+                // no mail servers found
485
+                return false;
486
+            }
487
+        }
488
+    }
489
+
490
+    /**
491
+     * Returns an unique message ID to be used for a mail message.
492
+     *
493
+     * The hostname $hostname will be added to the unique ID as required by RFC822.
494
+     * If an e-mail address is provided instead, the hostname is extracted and used.
495
+     *
496
+     * The formula to generate the message ID is: [time_and_date].[process_id].[counter]
497
+     *
498
+     * @param string $hostname
499
+     * @return string
500
+     */
501
+    public static function generateMessageId( $hostname )
502
+    {
503
+        if ( strpos( $hostname, '@' ) !== false )
504
+        {
505
+            $hostname = strstr( $hostname, '@' );
506
+        }
507
+        else
508
+        {
509
+            $hostname = '@' . $hostname;
510
+        }
511
+        return date( 'YmdGHjs' ) . '.' . getmypid() . '.' . self::$idCounter++ . $hostname;
512
+    }
513
+
514
+    /**
515
+     * Returns an unique ID to be used for Content-ID headers.
516
+     *
517
+     * The part $partName is default set to "part". Another value can be used to provide,
518
+     * for example, a file name of a part. $partName will be encoded with base64 to be
519
+     * compliant with the RFCs.
520
+     *
521
+     * The formula used is [base64( $partName )]."@".[time].[counter]
522
+     *
523
+     * @param string $partName
524
+     * @return string
525
+     */
526
+    public static function generateContentId( $partName = "part" )
527
+    {
528
+        return str_replace( array( '=', '+', '/' ), '', base64_encode( $partName ) ) . '@' .  date( 'His' ) . self::$idCounter++;
529
+    }
530
+
531
+    /**
532
+     * Sets the endLine $character(s) to use when generating mail.
533
+     * The default is to use "\r\n" as specified by RFC 2045.
534
+     *
535
+     * @param string $characters
536
+     */
537
+    public static function setLineBreak( $characters )
538
+    {
539
+        self::$lineBreak = $characters;
540
+    }
541
+
542
+    /**
543
+     * Returns one endLine character.
544
+     *
545
+     * The default is to use "\n\r" as specified by RFC 2045.
546
+     *
547
+     * @return string
548
+     */
549
+    public static function lineBreak()
550
+    {
551
+        // Note, this function does deliberately not
552
+        // have a $count parameter because of speed issues.
553
+        return self::$lineBreak;
554
+    }
555
+
556
+    /**
557
+     * Decodes mime encoded fields and tries to recover from errors.
558
+     *
559
+     * Decodes the $text encoded as a MIME string to the $charset. In case the
560
+     * strict conversion fails this method tries to workaround the issues by
561
+     * trying to "fix" the original $text before trying to convert it.
562
+     *
563
+     * @param string $text
564
+     * @param string $charset
565
+     * @return string
566
+     */
567
+    public static function mimeDecode( $text, $charset = 'utf-8' )
568
+    {
569
+        $origtext = $text;
570
+        $text = @iconv_mime_decode( $text, 0, $charset );
571
+        if ( $text !== false )
572
+        {
573
+            return $text;
574
+        }
575
+
576
+        // something went wrong while decoding, let's see if we can fix it
577
+        // Try to fix lower case hex digits
578
+        $text = preg_replace_callback(
579
+            '/=(([a-f][a-f0-9])|([a-f0-9][a-f]))/',
580
+            create_function( '$matches', 'return strtoupper($matches[0]);' ),
581
+            $origtext
582
+        );
583
+        $text = @iconv_mime_decode( $text, 0, $charset );
584
+        if ( $text !== false )
585
+        {
586
+            return $text;
587
+        }
588
+
589
+        // Workaround a bug in PHP 5.1.0-5.1.3 where the "b" and "q" methods
590
+        // are not understood (but only "B" and "Q")
591
+        $text = str_replace( array( '?b?', '?q?' ), array( '?B?', '?Q?' ), $origtext );
592
+        $text = @iconv_mime_decode( $text, 0, $charset );
593
+        if ( $text !== false )
594
+        {
595
+            return $text;
596
+        }
597
+
598
+        // Try it as latin 1 string
599
+        $text = preg_replace( '/=\?([^?]+)\?/', '=?iso-8859-1?', $origtext );
600
+        $text = iconv_mime_decode( $text, 0, $charset );
601
+
602
+        return $text;
603
+    }
604
+
605
+    /**
606
+     * Returns a new mail object that is a reply to the current object.
607
+     *
608
+     * The new mail will have the correct to, cc, bcc and reference headers set.
609
+     * It will not have any body set.
610
+     *
611
+     * By default the reply will only be sent to the sender of the original mail.
612
+     * If $type is set to REPLY_ALL, all the original recipients will be included
613
+     * in the reply.
614
+     *
615
+     * Use $subjectPrefix to set the prefix to the subject of the mail. The default
616
+     * is to prefix with 'Re: '.
617
+     *
618
+     * @param ezcMail $mail
619
+     * @param ezcMailAddress $from
620
+     * @param int $type REPLY_SENDER or REPLY_ALL
621
+     * @param string $subjectPrefix
622
+     * @param string $mailClass
623
+     * @return ezcMail
624
+     */
625
+    static public function replyToMail( ezcMail $mail, ezcMailAddress $from,
626
+                                        $type = self::REPLY_SENDER, $subjectPrefix = "Re: ",
627
+                                        $mailClass = "ezcMail" )
628
+    {
629
+        $reply = new $mailClass();
630
+        $reply->from = $from;
631
+
632
+        // To = Reply-To if set
633
+        if ( $mail->getHeader( 'Reply-To' ) != '' )
634
+        {
635
+            $reply->to = ezcMailTools::parseEmailAddresses( $mail->getHeader( 'Reply-To' ) );
636
+        }
637
+        else  // Else To = From
638
+
639
+        {
640
+            $reply->to = array( $mail->from );
641
+        }
642
+
643
+        if ( $type == self::REPLY_ALL )
644
+        {
645
+            // Cc = Cc + To - your own address
646
+            $cc = array();
647
+            foreach ( $mail->to as $address )
648
+            {
649
+                if ( $address->email != $from->email )
650
+                {
651
+                    $cc[] = $address;
652
+                }
653
+            }
654
+            foreach ( $mail->cc as $address )
655
+            {
656
+                if ( $address->email != $from->email )
657
+                {
658
+                    $cc[] = $address;
659
+                }
660
+            }
661
+            $reply->cc = $cc;
662
+        }
663
+
664
+        $reply->subject = $subjectPrefix . $mail->subject;
665
+
666
+        if ( $mail->getHeader( 'Message-Id' ) )
667
+        {
668
+            // In-Reply-To = Message-Id
669
+            $reply->setHeader( 'In-Reply-To', $mail->getHeader( 'Message-ID' ) );
670
+
671
+            // References = References . Message-Id
672
+            if ( $mail->getHeader( 'References' ) != '' )
673
+            {
674
+                $reply->setHeader( 'References', $mail->getHeader( 'References' )
675
+                                   . ' ' . $mail->getHeader( 'Message-ID' ) );
676
+            }
677
+            else
678
+            {
679
+                $reply->setHeader( 'References', $mail->getHeader( 'Message-ID' ) );
680
+            }
681
+        }
682
+        else // original mail is borked. Let's support it anyway.
683
+        {
684
+            $reply->setHeader( 'References', $mail->getHeader( 'References' ) );
685
+        }
686
+
687
+        return $reply;
688
+    }
689
+
690
+    /**
691
+     * Guesses the content and mime type by using the file extension.
692
+     *
693
+     * The content and mime types are returned through the $contentType
694
+     * and $mimeType arguments.
695
+     * For the moment only for image files.
696
+     *
697
+     * @param string $fileName
698
+     * @param string $contentType
699
+     * @param string $mimeType
700
+     */
701
+    static public function guessContentType( $fileName, &$contentType, &$mimeType )
702
+    {
703
+        $extension = strtolower( pathinfo( $fileName, PATHINFO_EXTENSION ) );
704
+        switch ( $extension )
705
+        {
706
+            case 'gif':
707
+                $contentType = 'image';
708
+                $mimeType = 'gif';
709
+                break;
710
+
711
+            case 'jpg':
712
+            case 'jpe':
713
+            case 'jpeg':
714
+                $contentType = 'image';
715
+                $mimeType = 'jpeg';
716
+                break;
717
+
718
+            case 'png':
719
+                $contentType = 'image';
720
+                $mimeType = 'png';
721
+                break;
722
+
723
+            case 'bmp':
724
+                $contentType = 'image';
725
+                $mimeType = 'bmp';
726
+                break;
727
+
728
+            case 'tif':
729
+            case 'tiff':
730
+                $contentType = 'image';
731
+                $mimeType = 'tiff';
732
+                break;
733
+
734
+            default:
735
+                return false;
736
+        }
737
+        return true;
738
+    }
739
+
740
+    /**
741
+     * Replaces HTML embedded "cid:" references with replacements from $contentIdArray.
742
+     *
743
+     * The method matches all "cid:" references in the $htmlText and then loops
744
+     * over each match. For each match the found content ID is looked-up as key
745
+     * in the $contentIdArray and the value is then inserted as replacement for
746
+     * the "cid:" reference.
747
+     *
748
+     * <code>
749
+     * <?php
750
+     * $contentIdArray = array( 'consoletools-table.png@1421450' => 'http://localhost/consoletools-table.jpg' );
751
+     * $text = "<html> Embedded image: <img src='cid:consoletools-table.png@1421450'/> </html>";
752
+     * $htmlBody = ezcMailTools::replaceContentIdRefs( $text, $contentIdArray );
753
+     * // $htmlBody is now: 
754
+     * // <html> Embedded image: <img src='http://localhost/consoletools-table.jpg'/> </html>
755
+     * ?>
756
+     * </code>
757
+     *
758
+     * The $contentIdArray can be build by iterating over all parts in the
759
+     * mail, and for each ezcMailFilePart that you find: 1. copy the associated
760
+     * file (fileName property of the ezcMailFilePart object) to your webroot;
761
+     * 2. add an element to the array with the key created from the contentId
762
+     * property from the ezcMailFilePart object. See the tutorial for an
763
+     * example of this.
764
+     *
765
+     * @param string $htmlText
766
+     * @param array(string=>string) $contentIdArray
767
+     * @return string
768
+     */
769
+    static function replaceContentIdRefs( $htmlText, $contentIdArray )
770
+    {
771
+        preg_match_all( '@src=[\'"](cid:(.*?))[\'"]@', $htmlText, $matches );
772
+        for ( $i = 0; $i < count( $matches[0] ); $i++ )
773
+        {
774
+            if ( isset( $contentIdArray[$matches[2][$i]] ) )
775
+            {
776
+                $htmlText = str_replace( $matches[1][$i], $contentIdArray[$matches[2][$i]], $htmlText );
777
+            }
778
+        }
779
+        return $htmlText;
780
+    }
781
+}
782
+?>
... ...
@@ -0,0 +1,188 @@
1
+<?php
2
+declare(encoding="latin1");
3
+
4
+/**
5
+ * File containing the ezcMailFileSet class
6
+ *
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ * @version 1.7.1
10
+ * @package Mail
11
+ */
12
+
13
+/**
14
+ * ezcMailFileSet is an internal class that can be used to parse mail directly
15
+ * from files on disk.
16
+ *
17
+ * Each file should contain only one mail message in RFC822 format. Bad files
18
+ * or non-existing files are ignored.
19
+ *
20
+ * Example:
21
+ *
22
+ * <code>
23
+ * $set = new ezcMailFileSet( array( 'path/to/mail/rfc822message.mail' ) );
24
+ * $parser = new ezcMailParser();
25
+ * $mail = $parser->parseMail( $set );
26
+ * </code>
27
+ *
28
+ * @package Mail
29
+ * @version 1.7.1
30
+ */
31
+class ezcMailFileSet implements ezcMailParserSet
32
+{
33
+    /**
34
+     * Holds the pointer to the file currently being parsed.
35
+     *
36
+     * @var filepointer
37
+     */
38
+    private $fp = null;
39
+
40
+    /**
41
+     * Holds the list of files that the set should serve.
42
+     *
43
+     * @var array(string)
44
+     */
45
+    private $files = array();
46
+
47
+    /**
48
+     * This variable is true if there is more data in the mail that is being fetched.
49
+     *
50
+     * It is false if there is no mail being fetched currently or if all the data of the current mail
51
+     * has been fetched.
52
+     *
53
+     * @var bool
54
+     */
55
+    private $hasMoreMailData = false;
56
+
57
+    /**
58
+     * Constructs a new set that servers the files specified by $files.
59
+     *
60
+     * The set will start on the first file in the the array.
61
+     *
62
+     * @param array(string) $files
63
+     */
64
+    public function __construct( array $files )
65
+    {
66
+        $this->files = $files;
67
+        reset( $this->files );
68
+        $this->hasMoreMailData = false;
69
+    }
70
+
71
+    /**
72
+     * Destructs the set.
73
+     *
74
+     * Closes any open files.
75
+     */
76
+    public function __destruct()
77
+    {
78
+        if ( is_resource( $this->fp ) )
79
+        {
80
+            fclose( $this->fp );
81
+            $this->fp = null;
82
+        }
83
+    }
84
+
85
+    /**
86
+     * Returns whether the file set contains files
87
+     *
88
+     * @return bool
89
+     */
90
+    public function hasData()
91
+    {
92
+        if ( count( $this->files ) >= 1 )
93
+        {
94
+            if ( $this->files[0] === 'php://stdin' || filesize( $this->files[0] ) > 0 )
95
+            {
96
+                return true;
97
+            }
98
+        }
99
+        return false;
100
+    }
101
+
102
+    /**
103
+     * Returns one line of data from the current mail in the set.
104
+     *
105
+     * Null is returned if there is no current mail in the set or
106
+     * the end of the mail is reached,
107
+     *
108
+     * @return string
109
+     */
110
+    public function getNextLine()
111
+    {
112
+        if ( $this->hasMoreMailData === false )
113
+        {
114
+            $this->nextMail();
115
+        }
116
+        // finished?
117
+        if ( $this->fp == null || feof( $this->fp ) )
118
+        {
119
+            if ( $this->fp != null )
120
+            {
121
+                fclose( $this->fp );
122
+                $this->fp = null;
123
+            }
124
+            return null;
125
+        }
126
+
127
+        // get one line
128
+        $next = fgets( $this->fp );
129
+        if ( $next == "" && feof( $this->fp ) )
130
+        {
131
+            return null;
132
+        }
133
+        return $next;
134
+    }
135
+
136
+    /**
137
+     * Moves the set to the next mail and returns true upon success.
138
+     *
139
+     * False is returned if there are no more mail in the set.
140
+     *
141
+     * @return bool
142
+     */
143
+    public function nextMail()
144
+    {
145
+        if ( $this->hasMoreMailData === false )
146
+        {
147
+            $this->hasMoreMailData = true;
148
+            return $this->openFile( true );
149
+        }
150
+        return $this->openFile();
151
+    }
152
+
153
+    /**
154
+     * Opens the next file in the set and returns true on success.
155
+     *
156
+     * @param bool $isFirst
157
+     * @return bool
158
+     */
159
+    private function openFile( $isFirst = false )
160
+    {
161
+        // cleanup file pointer if needed
162
+        if ( $this->fp != null )
163
+        {
164
+            fclose( $this->fp );
165
+            $this->fp = null;
166
+        }
167
+
168
+        // open the new file
169
+        $file = $isFirst ? current( $this->files ) : next( $this->files );
170
+
171
+        // loop until we can open a file.
172
+        while ( $this->fp == null && $file !== false )
173
+        {
174
+            if ( $file === 'php://stdin' || file_exists( $file ) )
175
+            {
176
+                $fp = fopen( $file, 'r' );
177
+                if ( $fp !== false )
178
+                {
179
+                    $this->fp = $fp;
180
+                    return true;
181
+                }
182
+            }
183
+            $file = next( $this->files );
184
+        }
185
+        return false;
186
+    }
187
+}
188
+?>
... ...
@@ -0,0 +1,375 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailImapSet class.
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * ezcMailImapSet is an internal class that fetches a series of mail
13
+ * from the IMAP server.
14
+ *
15
+ * The IMAP set works on an existing connection and a list of the messages that
16
+ * the user wants to fetch. The user must accept all the data for each mail for
17
+ * correct behaviour.
18
+ *
19
+ * @package Mail
20
+ * @version 1.7.1
21
+ */
22
+class ezcMailImapSet implements ezcMailParserSet
23
+{
24
+    /**
25
+     * Holds the list of messages that the user wants to retrieve from the server.
26
+     *
27
+     * @var array(int)
28
+     */
29
+    private $messages;
30
+
31
+    /**
32
+     * Holds the current message the user is fetching.
33
+     *
34
+     * The variable is null before the first message and false after
35
+     * the last message has been fetched.
36
+     *
37
+     * @var int
38
+     */
39
+    private $currentMessage = null;
40
+
41
+    /**
42
+     * Holds the line that will be read-ahead in order to determine the trailing paranthesis.
43
+     *
44
+     * @var string
45
+     */
46
+    private $nextData = null;
47
+
48
+    /**
49
+     * This variable is true if there is more data in the mail that is being fetched.
50
+     *
51
+     * It is false if there is no mail being fetched currently or if all the data of the current mail
52
+     * has been fetched.
53
+     *
54
+     * @var bool
55
+     */
56
+    private $hasMoreMailData = false;
57
+
58
+    /**
59
+     * Holds if mail should be deleted from the server after retrieval.
60
+     *
61
+     * @var bool
62
+     */
63
+    private $deleteFromServer = false;
64
+
65
+    /**
66
+     * Used to generate a tag for sending commands to the IMAP server.
67
+     * 
68
+     * @var string
69
+     */
70
+    private $currentTag = 'A0000';
71
+
72
+    /**
73
+     * Holds the mode in which the IMAP commands operate.
74
+     *
75
+     * @var string
76
+     */
77
+    private $uid;
78
+
79
+    /**
80
+     * Holds the options for an IMAP mail set.
81
+     *
82
+     * @var ezcMailImapSetOptions
83
+     */
84
+    private $options;
85
+
86
+    /**
87
+     * Holds the number of bytes to read from the IMAP server.
88
+     *
89
+     * It is set before starting to read a message from the information
90
+     * returned by the IMAP server in this form:
91
+     *
92
+     * <code>
93
+     * * 2 FETCH (FLAGS (\Answered \Seen) RFC822 {377}
94
+     * </code>
95
+     *
96
+     * In this example, $this->bytesToRead will be set to 377.
97
+     *
98
+     * @var int
99
+     */
100
+    private $bytesToRead = false;
101
+
102
+    /**
103
+     * Constructs a new IMAP parser set that will fetch the messages $messages.
104
+     *
105
+     * $connection must hold a valid connection to a IMAP server that is ready
106
+     * to retrieve the messages.
107
+     *
108
+     * If $deleteFromServer is set to true the messages will be deleted after retrieval.
109
+     *
110
+     * See {@link ezcMailImapSetOptions} for options you can set to IMAP sets.
111
+     *
112
+     * @throws ezcMailTransportException
113
+     *         if the server sent a negative response
114
+     * @param ezcMailTransportConnection $connection
115
+     * @param array(int) $messages
116
+     * @param bool $deleteFromServer
117
+     * @param ezcMailImapSetOptions|array(string=>mixed) $options
118
+     */
119
+    public function __construct( ezcMailTransportConnection $connection, array $messages, $deleteFromServer = false, $options = array() )
120
+    {
121
+        if ( $options instanceof ezcMailImapSetOptions )
122
+        {
123
+            $this->options = $options;
124
+        }
125
+        else if ( is_array( $options ) )
126
+        {
127
+            $this->options = new ezcMailImapSetOptions( $options );
128
+        }
129
+        else
130
+        {
131
+            throw new ezcBaseValueException( "options", $options, "ezcMailImapSetOptions|array" );
132
+        }
133
+
134
+        $this->connection = $connection;
135
+        $this->messages = $messages;
136
+        $this->deleteFromServer = $deleteFromServer;
137
+        $this->nextData = null;
138
+        
139
+        $this->uid = ( $this->options->uidReferencing ) ? ezcMailImapTransport::UID : ezcMailImapTransport::NO_UID;
140
+    }
141
+
142
+    /**
143
+     * Returns true if all the data has been fetched from this set.
144
+     *
145
+     * @return bool
146
+     */
147
+    public function isFinished()
148
+    {
149
+        return $this->currentMessage === false ? true : false;
150
+    }
151
+
152
+    /**
153
+     * Returns one line of data from the current mail in the set.
154
+     *
155
+     * Null is returned if there is no current mail in the set or
156
+     * the end of the mail is reached,
157
+     *
158
+     * @return string
159
+     */
160
+    public function getNextLine()
161
+    {
162
+        if ( $this->currentMessage === null )
163
+        {
164
+            // instead of calling $this->nextMail() in the constructor, it is called
165
+            // here, to avoid sending commands to the server when creating the set, and
166
+            // instead send the server commands when parsing the set (see ezcMailParser).
167
+            $this->nextMail();
168
+        }
169
+        if ( $this->hasMoreMailData )
170
+        {
171
+            if ( $this->bytesToRead !== false && $this->bytesToRead >= 0 )
172
+            {
173
+                $data = $this->connection->getLine();
174
+                $this->bytesToRead -= strlen( $data );
175
+
176
+                // modified for issue #13878 (Endless loop in ezcMailParser):
177
+                // removed wrong checks (ending in ')' check and ending with tag check (e.g. 'A0002'))
178
+                if ( $this->bytesToRead <= 0 )
179
+                {
180
+                    if ( $this->bytesToRead < 0 )
181
+                    {
182
+                        $data = substr( $data, 0, strlen( $data ) + $this->bytesToRead ); //trim( $data, ")\r\n" );
183
+                    }
184
+
185
+                    if ( $this->bytesToRead === 0 )
186
+                    {
187
+                        // hack for Microsoft Exchange, which sometimes puts
188
+                        // FLAGS (\Seen)) at the end of a message instead of before (!)
189
+                        if ( strlen( trim( $data, ")\r\n" ) !== strlen( $data ) - 3 ) )
190
+                        {
191
+                            // if the last line in a mail does not end with ")\r\n"
192
+                            // then read an extra line and discard it
193
+                            $extraData = $this->connection->getLine();
194
+                        }
195
+                    }
196
+
197
+                    $this->hasMoreMailData = false;
198
+                    // remove the mail if required by the user.
199
+                    if ( $this->deleteFromServer === true )
200
+                    {
201
+                        $tag = $this->getNextTag();
202
+                        $this->connection->sendData( "{$tag} {$this->uid}STORE {$this->currentMessage} +FLAGS (\\Deleted)" );
203
+                        // skip OK response ("{$tag} OK Store completed.")
204
+                        $response = $this->getResponse( $tag );
205
+                    }
206
+                    return $data;
207
+                }
208
+            }
209
+            return $data;
210
+        }
211
+        return null;
212
+    }
213
+
214
+    /**
215
+     * Moves the set to the next mail and returns true upon success.
216
+     *
217
+     * False is returned if there are no more mail in the set.
218
+     *
219
+     * @throws ezcMailTransportException
220
+     *         if the server sent a negative response
221
+     * @return bool
222
+     */
223
+    public function nextMail()
224
+    {
225
+        if ( $this->currentMessage === null )
226
+        {
227
+            $this->currentMessage = reset( $this->messages );
228
+        }
229
+        else
230
+        {
231
+            $this->currentMessage = next( $this->messages );
232
+        }
233
+        $this->nextData = null;
234
+        $this->bytesToRead = false;
235
+        if ( $this->currentMessage !== false )
236
+        {
237
+            $tag = $this->getNextTag();
238
+            $this->connection->sendData( "{$tag} {$this->uid}FETCH {$this->currentMessage} RFC822" );
239
+            $response = $this->connection->getLine();
240
+            if ( strpos( $response, ' NO ' ) !== false ||
241
+                 strpos( $response, ' BAD ') !== false )
242
+            {
243
+                throw new ezcMailTransportException( "The IMAP server sent a negative reply when requesting mail." );
244
+            }
245
+            else
246
+            {
247
+                $response = $this->getResponse( 'FETCH (', $response );
248
+                if ( strpos( $response, 'FETCH (' ) !== false )
249
+                {
250
+                    $this->hasMoreMailData = true;
251
+                    // retrieve the message size from $response, eg. if $response is:
252
+                    // * 2 FETCH (FLAGS (\Answered \Seen) RFC822 {377}
253
+                    // then $this->bytesToRead will be 377
254
+                    preg_match( '/\{(.*)\}/', $response, $matches );
255
+                    if ( count( $matches ) > 0 )
256
+                    {
257
+                        $this->bytesToRead = (int) $matches[1];
258
+                    }
259
+                    return true;
260
+                }
261
+                else
262
+                {
263
+                    $response = $this->getResponse( $tag );
264
+                    if ( strpos( $response, 'OK ' ) === false )
265
+                    {
266
+                        throw new ezcMailTransportException( "The IMAP server sent a negative reply when requesting mail." );
267
+                    }
268
+                }
269
+            }
270
+        }
271
+        return false;
272
+    }
273
+
274
+    /**
275
+     * Reads the responses from the server until encountering $tag.
276
+     *
277
+     * In IMAP, each command sent by the client is prepended with a
278
+     * alphanumeric tag like 'A1234'. The server sends the response
279
+     * to the client command as lines, and the last line in the response
280
+     * is prepended with the same tag, and it contains the status of
281
+     * the command completion ('OK', 'NO' or 'BAD').
282
+     *
283
+     * Sometimes the server sends alerts and response lines from other
284
+     * commands before sending the tagged line, so this method just
285
+     * reads all the responses until it encounters $tag.
286
+     *
287
+     * It returns the tagged line to be processed by the calling method.
288
+     *
289
+     * If $response is specified, then it will not read the response
290
+     * from the server before searching for $tag in $response.
291
+     *
292
+     * Before calling this method, a connection to the IMAP server must be
293
+     * established.
294
+     *
295
+     * @param string $tag
296
+     * @param string $response
297
+     * @return string
298
+     */
299
+    private function getResponse( $tag = null, $response = null )
300
+    {
301
+        if ( is_null( $response ) )
302
+        {
303
+            $response = $this->connection->getLine();
304
+        }
305
+        while ( strpos( $response, $tag ) === false )
306
+        {
307
+            if ( strpos( $response, ' BAD ' ) !== false ||
308
+                 strpos( $response, ' NO ' ) !== false )
309
+            {
310
+                break;
311
+            }
312
+            $response = $this->connection->getLine();
313
+        }
314
+        return $response;
315
+    }
316
+
317
+    /**
318
+     * Generates the next IMAP tag to prepend to client commands.
319
+     *
320
+     * The structure of the IMAP tag is Axxxx, where:
321
+     *  - A is a letter (uppercase for conformity)
322
+     *  - x is a digit from 0 to 9
323
+     *
324
+     * example of generated tag: T5439
325
+     *
326
+     * It uses the class variable $this->currentTag.
327
+     *
328
+     * Everytime it is called, the tag increases by 1.
329
+     *
330
+     * If it reaches the last tag, it wraps around to the first tag.
331
+     *
332
+     * By default, the first generated tag is A0001.
333
+     *
334
+     * @return string
335
+     */
336
+    private function getNextTag()
337
+    {
338
+        $tagLetter = substr( $this->currentTag, 0, 1 );
339
+        $tagNumber = intval( substr( $this->currentTag, 1 ) );
340
+        $tagNumber++;
341
+        if ( $tagLetter == 'Z' && $tagNumber == 10000 )
342
+        {
343
+            $tagLetter = 'A';
344
+            $tagNumber = 1;
345
+        }
346
+        if ( $tagNumber == 10000 )
347
+        {
348
+            $tagLetter++;
349
+            $tagNumber = 0;
350
+        }
351
+        $this->currentTag = $tagLetter . sprintf( "%04s", $tagNumber );
352
+        return $this->currentTag;
353
+    }
354
+
355
+    /**
356
+     * Returns whether the set has mails.
357
+     *
358
+     * @return bool
359
+     */
360
+    public function hasData()
361
+    {
362
+        return count( $this->messages );
363
+    }
364
+
365
+    /**
366
+     * Returns message numbers from the current set.
367
+     *
368
+     * @return array(int)
369
+     */
370
+    public function getMessageNumbers()
371
+    {
372
+        return $this->messages;
373
+    }
374
+}
375
+?>
... ...
@@ -0,0 +1,2728 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailImapTransport class.
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * The class ezcMailImapTransport implements functionality for handling IMAP
13
+ * mail servers.
14
+ *
15
+ * The implementation supports most of the commands specified in:
16
+ *  - {@link http://www.faqs.org/rfcs/rfc1730.html} (IMAP4)
17
+ *  - {@link http://www.faqs.org/rfcs/rfc2060.html} (IMAP4rev1)
18
+ *
19
+ * Each user account on the IMAP server has it's own folders (mailboxes).
20
+ * Mailboxes can be created, renamed or deleted. All accounts have a special
21
+ * mailbox called Inbox which cannot be deleted or renamed.
22
+ *
23
+ * Messages are organized in mailboxes, and are identified by a message number
24
+ * (which can change over time) and a unique ID (which does not change under
25
+ * normal circumstances). The commands operating on messages can handle both
26
+ * modes (message numbers or unique IDs).
27
+ *
28
+ * Messages are marked by certain flags (SEEN, DRAFT, etc). Deleting a message
29
+ * actually sets it's DELETED flag, and a later call to {@link expunge()} will
30
+ * delete all the messages marked with the DELETED flag.
31
+ *
32
+ * The IMAP server can be in different states. Most IMAP commands require
33
+ * that a connection is established and a user is authenticated. Certain
34
+ * commands require in addition that a mailbox is selected.
35
+ *
36
+ * The IMAP transport class allows developers to interface with an IMAP server.
37
+ * The commands which support unique IDs to refer to messages are marked with
38
+ * [*] (see {@link ezcMailImapTransportOptions} to find out how to enable
39
+ * unique IDs referencing):
40
+ *
41
+ * Basic commands:
42
+ *  - connect to an IMAP server ({@link __construct()})
43
+ *  - authenticate a user with a username and password ({@link authenticate()})
44
+ *  - select a mailbox ({@link selectMailbox()})
45
+ *  - disconnect from the IMAP server ({@link disconnect()})
46
+ *
47
+ * Work with mailboxes:
48
+ *  - get the list of mailboxes of the user ({@link listMailboxes()})
49
+ *  - create a mailbox ({@link createMailbox()})
50
+ *  - rename a mailbox ({@link renameMailbox()})
51
+ *  - delete a mailbox ({@link deleteMailbox()})
52
+ *  - append a message to a mailbox ({@link append()})
53
+ *  - select a mailbox ({@link selectMailbox()})
54
+ *  - get the status of messages in the current mailbox ({@link status()})
55
+ *  - get the number of messages with a certain flag ({@link countByFlag()})
56
+ *
57
+ * Work with message numbers (on the currently selected mailbox):
58
+ *  - get the message numbers and sizes of all the messages ({@link listMessages()})
59
+ *  - get the message numbers and IDs of all the messages ({@link listUniqueIdentifiers()})
60
+ *  - [*] get the headers of a certain message ({@link top()})
61
+ *  - [*] delete a message ({@link delete()} and {@link expunge()})
62
+ *  - [*] copy messages to another mailbox ({@link copyMessages()})
63
+ *  - [*] get the sizes of the specified messages ({@link fetchSizes()})
64
+ *
65
+ * Work with flags (on the currently selected mailbox):
66
+ *  - [*] get the flags of the specified messages ({@link fetchFlags()})
67
+ *  - [*] set a flag on the specified messages ({@link setFlag()})
68
+ *  - [*] clear a flag from the specified messages ({@link clearFlag()})
69
+ *
70
+ * Work with {@link ezcMailImapSet} sets (parseable with {@link ezcMailParser})
71
+ * (on the currently selected mailbox):
72
+ *  - [*] create a set from all messages ({@link fetchAll()})
73
+ *  - [*] create a set from a certain message ({@link fetchByMessageNr()})
74
+ *  - [*] create a set from a range of messages ({@link fetchFromOffset()})
75
+ *  - [*] create a set from messages with a certain flag ({@link fetchByFlag()})
76
+ *  - [*] create a set from a sorted range of messages ({@link sortFromOffset()})
77
+ *  - [*] create a set from a sorted list of messages ({@link sortMessages()})
78
+ *  - [*] create a set from a free-form search ({@link searchMailbox()})
79
+ *
80
+ * Miscellaneous commands:
81
+ *  - get the capabilities of the IMAP server ({@link capability()})
82
+ *  - get the hierarchy delimiter (useful for nested mailboxes) ({@link getHierarchyDelimiter()})
83
+ *  - issue a NOOP command to keep the connection alive ({@link noop()})
84
+ *
85
+ * The usual operation with an IMAP server is illustrated by this example:
86
+ * <code>
87
+ * // create a new IMAP transport object by specifying the server name, optional port
88
+ * // and optional SSL mode
89
+ * $options = new ezcMailImapTransportOptions();
90
+ * $options->ssl = true;
91
+ * $imap = new ezcMailImapTransport( 'imap.example.com', null, $options );
92
+ *
93
+ * // Authenticate to the IMAP server
94
+ * $imap->authenticate( 'username', 'password' );
95
+ *
96
+ * // Select a mailbox (here 'Inbox')
97
+ * $imap->selectMailbox( 'Inbox' );
98
+ *
99
+ * // issue commands to the IMAP server
100
+ * // for example get the number of RECENT messages
101
+ * $recent = $imap->countByFlag( 'RECENT' );
102
+ *
103
+ * // see the above list of commands or consult the online documentation for
104
+ * // the full list of commands you can issue to an IMAP server and examples
105
+ *
106
+ * // disconnect from the IMAP server
107
+ * $imap->disconnect();
108
+ * </code>
109
+ *
110
+ * See {@link ezcMailImapTransportOptions} for other options you can specify
111
+ * for IMAP.
112
+ *
113
+ * @todo ignore messages of a certain size?
114
+ * @todo // support for signing?
115
+ * @todo listUniqueIdentifiers(): add UIVALIDITY value to UID (like in POP3).
116
+ *       (if necessary).
117
+ *
118
+ * @property ezcMailImapTransportOptions $options
119
+ *           Holds the options you can set to the IMAP transport.
120
+ *
121
+ * @package Mail
122
+ * @version 1.7.1
123
+ * @mainclass
124
+ */
125
+class ezcMailImapTransport
126
+{
127
+    /**
128
+     * Internal state when the IMAP transport is not connected to a server.
129
+     *
130
+     * @access private
131
+     */
132
+    const STATE_NOT_CONNECTED = 1;
133
+
134
+    /**
135
+     * Internal state when the IMAP transport is connected to a server,
136
+     * but no successful authentication has been performed.
137
+     *
138
+     * @access private
139
+     */
140
+    const STATE_NOT_AUTHENTICATED = 2;
141
+
142
+    /**
143
+     * Internal state when the IMAP transport is connected to a server
144
+     * and authenticated, but no mailbox is selected yet.
145
+     *
146
+     * @access private
147
+     */
148
+    const STATE_AUTHENTICATED = 3;
149
+
150
+    /**
151
+     * Internal state when the IMAP transport is connected to a server,
152
+     * authenticated, and a mailbox is selected.
153
+     *
154
+     * @access private
155
+     */
156
+    const STATE_SELECTED = 4;
157
+
158
+    /**
159
+     * Internal state when the IMAP transport is connected to a server,
160
+     * authenticated, and a mailbox is selected read only.
161
+     *
162
+     * @access private
163
+     */
164
+    const STATE_SELECTED_READONLY = 5;
165
+
166
+    /**
167
+     * Internal state when the LOGOUT command has been issued to the IMAP
168
+     * server, but before the disconnect has taken place.
169
+     *
170
+     * @access private
171
+     */
172
+    const STATE_LOGOUT = 6;
173
+
174
+    /**
175
+     * The response sent from the IMAP server is "OK".
176
+     *
177
+     * @access private
178
+     */
179
+    const RESPONSE_OK = 1;
180
+
181
+    /**
182
+     * The response sent from the IMAP server is "NO".
183
+     *
184
+     * @access private
185
+     */
186
+    const RESPONSE_NO = 2;
187
+
188
+    /**
189
+     * The response sent from the IMAP server is "BAD".
190
+     *
191
+     * @access private
192
+     */
193
+    const RESPONSE_BAD = 3;
194
+
195
+    /**
196
+     * The response sent from the IMAP server is untagged (starts with "*").
197
+     *
198
+     * @access private
199
+     */
200
+    const RESPONSE_UNTAGGED = 4;
201
+
202
+    /**
203
+     * The response sent from the IMAP server requires the client to send
204
+     * information (starts with "+").
205
+     *
206
+     * @access private
207
+     */
208
+    const RESPONSE_FEEDBACK = 5;
209
+
210
+    /**
211
+     * Use UID commands (access messages by their unique ID).
212
+     *
213
+     * @access private
214
+     */
215
+    const UID = 'UID ';
216
+
217
+    /**
218
+     * Use message number commands (access messages by their message numbers).
219
+     *
220
+     * @access private
221
+     */
222
+    const NO_UID = '';
223
+
224
+    /**
225
+     * The string returned by Google IMAP servers when at connection time.
226
+     *
227
+     * @access private
228
+     */
229
+    const SERVER_GIMAP = 'Gimap';
230
+
231
+    /**
232
+     * Basic flags are used by {@link setFlag()} and {@link clearFlag()}
233
+     *
234
+     * Basic flags:
235
+     *  - ANSWERED   - message has been answered
236
+     *  - DELETED    - message is marked to be deleted by later EXPUNGE
237
+     *  - DRAFT      - message is marked as a draft
238
+     *  - FLAGGED    - message is "flagged" for urgent/special attention
239
+     *  - SEEN       - message has been read
240
+     *
241
+     * @var array(string)
242
+     */
243
+    protected static $basicFlags = array( 'ANSWERED', 'DELETED', 'DRAFT', 'FLAGGED', 'SEEN' );
244
+
245
+    /**
246
+     * Extended flags are used by {@link searchByFlag()}
247
+     *
248
+     * Basic flags:
249
+     *  - ANSWERED   - message has been answered
250
+     *  - DELETED    - message is marked to be deleted by later EXPUNGE
251
+     *  - DRAFT      - message is marked as a draft
252
+     *  - FLAGGED    - message is "flagged" for urgent/special attention
253
+     *  - RECENT     - message is recent
254
+     *  - SEEN       - message has been read
255
+     *
256
+     * Opposites of the above flags:
257
+     *  - UNANSWERED
258
+     *  - UNDELETED
259
+     *  - UNDRAFT
260
+     *  - UNFLAGGED
261
+     *  - OLD
262
+     *  - UNSEEN
263
+     *
264
+     * Composite flags:
265
+     *  - NEW        - equivalent to RECENT + UNSEEN
266
+     *  - ALL        - all the messages
267
+     *
268
+     * @var array(string)
269
+     */
270
+    protected static $extendedFlags = array( 'ALL', 'ANSWERED', 'DELETED', 'DRAFT', 'FLAGGED', 'NEW', 'OLD', 'RECENT', 'SEEN', 'UNANSWERED', 'UNDELETED', 'UNDRAFT', 'UNFLAGGED', 'UNRECENT', 'UNSEEN' );
271
+
272
+    /**
273
+     * Used to generate a tag for sending commands to the IMAP server.
274
+     *
275
+     * @var string
276
+     */
277
+    protected $currentTag = 'A0000';
278
+
279
+    /**
280
+     * Holds the connection state.
281
+     *
282
+     * @var int {@link STATE_NOT_CONNECTED},
283
+     *          {@link STATE_NOT_AUTHENTICATED},
284
+     *          {@link STATE_AUTHENTICATED},
285
+     *          {@link STATE_SELECTED},
286
+     *          {@link STATE_SELECTED_READONLY} or
287
+     *          {@link STATE_LOGOUT}.
288
+     */
289
+    protected $state = self::STATE_NOT_CONNECTED;
290
+
291
+    /**
292
+     * Holds the currently selected mailbox.
293
+     *
294
+     * @var string
295
+     */
296
+    protected $selectedMailbox = null;
297
+
298
+    /**
299
+     * Holds the connection to the IMAP server.
300
+     *
301
+     * @var ezcMailTransportConnection
302
+     */
303
+    protected $connection = null;
304
+
305
+    /**
306
+     * Holds the string which identifies the IMAP server type.
307
+     *
308
+     * Used for fixing problems with Google IMAP (see issue #14360). Possible
309
+     * values are {@link self::SERVER_GIMAP} or null for all other servers.
310
+     *
311
+     * @todo Add identification strings for each existing IMAP server?
312
+     *
313
+     * @var string
314
+     */
315
+    protected $serverType = null;
316
+
317
+    /**
318
+     * Holds the options for an IMAP transport connection.
319
+     *
320
+     * @var ezcMailImapTransportOptions
321
+     */
322
+    private $options;
323
+
324
+    /**
325
+     * Creates a new IMAP transport and connects to the $server at $port.
326
+     *
327
+     * You can specify the $port if the IMAP server is not on the default port
328
+     * 993 (for SSL connections) or 143 (for plain connections). Use the $options
329
+     * parameter to specify an SSL connection.
330
+     *
331
+     * See {@link ezcMailImapTransportOptions} for options you can specify for
332
+     * IMAP.
333
+     *
334
+     * Example of creating an IMAP transport:
335
+     * <code>
336
+     * // replace with your IMAP server address
337
+     * $imap = new ezcMailImapTransport( 'imap.example.com' );
338
+     *
339
+     * // if you want to use SSL:
340
+     * $options = new ezcMailImapTransportOptions();
341
+     * $options->ssl = true;
342
+     *
343
+     * $imap = new ezcMailImapTransport( 'imap.example.com', null, $options );
344
+     * </code>
345
+     *
346
+     * @throws ezcMailTransportException
347
+     *         if it was not possible to connect to the server
348
+     * @throws ezcBaseExtensionNotFoundException
349
+     *         if trying to use SSL and the extension openssl is not installed
350
+     * @throws ezcBasePropertyNotFoundException
351
+     *         if $options contains a property not defined
352
+     * @throws ezcBaseValueException
353
+     *         if $options contains a property with a value not allowed
354
+     * @param string $server
355
+     * @param int $port
356
+     * @param ezcMailImapTransportOptions|array(string=>mixed) $options
357
+     */
358
+    public function __construct( $server, $port = null, $options = array() )
359
+    {
360
+        if ( $options instanceof ezcMailImapTransportOptions )
361
+        {
362
+            $this->options = $options;
363
+        }
364
+        else if ( is_array( $options ) )
365
+        {
366
+            $this->options = new ezcMailImapTransportOptions( $options );
367
+        }
368
+        else
369
+        {
370
+            throw new ezcBaseValueException( "options", $options, "ezcMailImapTransportOptions|array" );
371
+        }
372
+
373
+        if ( $port === null )
374
+        {
375
+            $port = ( $this->options->ssl === true ) ? 993 : 143;
376
+        }
377
+        $this->connection = new ezcMailTransportConnection( $server, $port, $this->options );
378
+        // get the server greeting
379
+        $response = $this->connection->getLine();
380
+        if ( strpos( $response, "* OK" ) === false )
381
+        {
382
+            throw new ezcMailTransportException( "The connection to the IMAP server is ok, but a negative response from server was received. Try again later." );
383
+        }
384
+        if ( strpos( $response, self::SERVER_GIMAP ) !== false )
385
+        {
386
+            $this->serverType = self::SERVER_GIMAP; // otherwise it is null
387
+        }
388
+        $this->state = self::STATE_NOT_AUTHENTICATED;
389
+    }
390
+
391
+    /**
392
+     * Destructs the IMAP transport.
393
+     *
394
+     * If there is an open connection to the IMAP server it is closed.
395
+     */
396
+    public function __destruct()
397
+    {
398
+        try 
399
+        {
400
+            $this->disconnect();
401
+        }
402
+        catch ( ezcMailTransportException $e )
403
+        {
404
+            // Ignore occuring transport exceptions.
405
+        }
406
+    }
407
+
408
+    /**
409
+     * Sets the value of the property $name to $value.
410
+     *
411
+     * @throws ezcBasePropertyNotFoundException
412
+     *         if the property $name does not exist
413
+     * @throws ezcBaseValueException
414
+     *         if $value is not accepted for the property $name
415
+     * @param string $name
416
+     * @param mixed $value
417
+     * @ignore
418
+     */
419
+    public function __set( $name, $value )
420
+    {
421
+        switch ( $name )
422
+        {
423
+            case 'options':
424
+                if ( !( $value instanceof ezcMailImapTransportOptions ) )
425
+                {
426
+                    throw new ezcBaseValueException( 'options', $value, 'instanceof ezcMailImapTransportOptions' );
427
+                }
428
+                $this->options = $value;
429
+                break;
430
+
431
+            default:
432
+                throw new ezcBasePropertyNotFoundException( $name );
433
+        }
434
+    }
435
+
436
+    /**
437
+     * Returns the value of the property $name.
438
+     *
439
+     * @throws ezcBasePropertyNotFoundException
440
+     *         if the property $name does not exist
441
+     * @param string $name
442
+     * @ignore
443
+     */
444
+    public function __get( $name )
445
+    {
446
+        switch ( $name )
447
+        {
448
+            case 'options':
449
+                return $this->options;
450
+            
451
+            default:
452
+                throw new ezcBasePropertyNotFoundException( $name );
453
+        }
454
+    }
455
+
456
+    /**
457
+     * Returns true if the property $name is set, otherwise false.
458
+     *
459
+     * @param string $name
460
+     * @return bool
461
+     * @ignore
462
+     */
463
+    public function __isset( $name )
464
+    {
465
+        switch ( $name )
466
+        {
467
+            case 'options':
468
+                return true;
469
+
470
+            default:
471
+                return false;
472
+        }
473
+    }
474
+
475
+    /**
476
+     * Disconnects the transport from the IMAP server.
477
+     */
478
+    public function disconnect()
479
+    {
480
+        if ( $this->state !== self::STATE_NOT_CONNECTED
481
+             && $this->connection->isConnected() === true )
482
+        {
483
+            $tag = $this->getNextTag();
484
+            $this->connection->sendData( "{$tag} LOGOUT" );
485
+            // discard the "bye bye" message ("{$tag} OK Logout completed.")
486
+            $this->getResponse( $tag );
487
+            $this->state = self::STATE_LOGOUT;
488
+            $this->selectedMailbox = null;
489
+
490
+            $this->connection->close();
491
+            $this->connection = null;
492
+            $this->state = self::STATE_NOT_CONNECTED;
493
+        }
494
+    }
495
+
496
+    /**
497
+     * Authenticates the user to the IMAP server with $user and $password.
498
+     *
499
+     * This method should be called directly after the construction of this
500
+     * object.
501
+     *
502
+     * If the server is waiting for the authentication process to respond, the
503
+     * connection with the IMAP server will be closed, and false is returned,
504
+     * and it is the application's task to reconnect and reauthenticate.
505
+     *
506
+     * Example of creating an IMAP transport and authenticating:
507
+     * <code>
508
+     * // replace with your IMAP server address
509
+     * $imap = new ezcMailImapTransport( 'imap.example.com' );
510
+     *
511
+     * // replace the values with your username and password for the IMAP server
512
+     * $imap->authenticate( 'username', 'password' );
513
+     * </code>
514
+     *
515
+     * @throws ezcMailTransportException
516
+     *         if already authenticated
517
+     *         or if the provided username/password combination did not work
518
+     * @param string $user
519
+     * @param string $password
520
+     * @return bool
521
+     */
522
+    public function authenticate( $user, $password )
523
+    {
524
+        if ( $this->state != self::STATE_NOT_AUTHENTICATED )
525
+        {
526
+            throw new ezcMailTransportException( "Tried to authenticate when there was no connection or when already authenticated." );
527
+        }
528
+
529
+        $tag = $this->getNextTag();
530
+        $this->connection->sendData( "{$tag} LOGIN {$user} {$password}" );
531
+        $response = trim( $this->connection->getLine() );
532
+        // hack for gmail, to fix issue #15837: imap.google.com (google gmail) changed IMAP response
533
+        if ( $this->serverType === self::SERVER_GIMAP && strpos( $response, "* CAPABILITY" ) === 0 )
534
+        {
535
+            $response = trim( $this->connection->getLine() );
536
+        }
537
+        if ( strpos( $response, '* OK' ) !== false )
538
+        {
539
+            // the server is busy waiting for authentication process to
540
+            // respond, so it is a good idea to just close the connection,
541
+            // otherwise the application will be halted until the server
542
+            // recovers
543
+            $this->connection->close();
544
+            $this->connection = null;
545
+            $this->state = self::STATE_NOT_CONNECTED;
546
+            return false;
547
+        }
548
+        if ( $this->responseType( $response ) != self::RESPONSE_OK )
549
+        {
550
+            throw new ezcMailTransportException( "The IMAP server did not accept the username and/or password: {$response}." );
551
+        }
552
+        else
553
+        {
554
+            $this->state = self::STATE_AUTHENTICATED;
555
+            $this->selectedMailbox = null;
556
+        }
557
+        return true;
558
+    }
559
+
560
+    /**
561
+     * Returns an array with the names of the available mailboxes for the user
562
+     * currently authenticated on the IMAP server.
563
+     *
564
+     * Before calling this method, a connection to the IMAP server must be
565
+     * established and a user must be authenticated successfully.
566
+     *
567
+     * For more information about $reference and $mailbox, consult
568
+     * the IMAP RFCs documents ({@link http://www.faqs.org/rfcs/rfc1730.html}
569
+     * or {@link http://www.faqs.org/rfcs/rfc2060.html}, section 7.2.2.).
570
+     *
571
+     * By default, $reference is "" and $mailbox is "*".
572
+     *
573
+     * The array returned contains the mailboxes available for the connected
574
+     * user on this IMAP server. Inbox is a special mailbox, and it can be
575
+     * specified upper-case or lower-case or mixed-case. The other mailboxes
576
+     * should be specified as they are (to the {@link selectMailbox()} method).
577
+     *
578
+     * Example of listing mailboxes:
579
+     * <code>
580
+     * $imap = new ezcMailImapTransport( 'imap.example.com' );
581
+     * $imap->authenticate( 'username', 'password' );
582
+     *
583
+     * $mailboxes = $imap->listMailboxes();
584
+     * </code>
585
+     *
586
+     * @throws ezcMailMailTransportException
587
+     *         if the current server state is not accepted
588
+     *         or if the server sent a negative response
589
+     * @param string $reference
590
+     * @param string $mailbox
591
+     * @return array(string)
592
+     */
593
+    public function listMailboxes( $reference = '', $mailbox = '*' )
594
+    {
595
+        if ( $this->state != self::STATE_AUTHENTICATED &&
596
+             $this->state != self::STATE_SELECTED &&
597
+             $this->state != self::STATE_SELECTED_READONLY )
598
+        {
599
+            throw new ezcMailTransportException( "Can't call listMailboxes() when not successfully logged in." );
600
+        }
601
+
602
+        $result = array();
603
+        $tag = $this->getNextTag();
604
+        $this->connection->sendData( "{$tag} LIST \"{$reference}\" \"{$mailbox}\"" );
605
+        $response = trim( $this->connection->getLine() );
606
+        while ( strpos( $response, '* LIST (' ) !== false )
607
+        {
608
+            // only consider the selectable mailboxes
609
+            if ( strpos( $response, "\\Noselect" ) === false )
610
+            {
611
+                $response = substr( $response, strpos( $response, "\" " ) + 2 );
612
+                $response = trim( $response );
613
+                $response = trim( $response, "\"" );
614
+                $result[] = $response;
615
+
616
+            }
617
+            $response = $this->connection->getLine();
618
+        }
619
+
620
+        $response = $this->getResponse( $tag, $response );
621
+        if ( $this->responseType( $response ) != self::RESPONSE_OK )
622
+        {
623
+            throw new ezcMailTransportException( "Could not list mailboxes with the parameters '\"{$reference}\"' and '\"{$mailbox}\"': {$response}." );
624
+        }
625
+        return $result;
626
+    }
627
+
628
+    /**
629
+     * Returns the hierarchy delimiter of the IMAP server, useful for handling
630
+     * nested IMAP folders.
631
+     *
632
+     * For more information about the hierarchy delimiter, consult the IMAP RFCs
633
+     * {@link http://www.faqs.org/rfcs/rfc1730.html} or
634
+     * {@link http://www.faqs.org/rfcs/rfc2060.html}, section 6.3.8.
635
+     *
636
+     * Before calling this method, a connection to the IMAP server must be
637
+     * established and a user must be authenticated successfully.
638
+     *
639
+     * Example of returning the hierarchy delimiter:
640
+     * <code>
641
+     * $imap = new ezcMailImapTransport( 'imap.example.com' );
642
+     * $imap->authenticate( 'username', 'password' );
643
+     *
644
+     * $delimiter = $imap->getDelimiter();
645
+     * </code>
646
+     *
647
+     * After running the above code, $delimiter should be something like "/".
648
+     *
649
+     * @throws ezcMailMailTransportException
650
+     *         if the current server state is not accepted
651
+     *         or if the server sent a negative response
652
+     * @return string
653
+     */
654
+    public function getHierarchyDelimiter()
655
+    {
656
+        if ( $this->state != self::STATE_AUTHENTICATED &&
657
+             $this->state != self::STATE_SELECTED &&
658
+             $this->state != self::STATE_SELECTED_READONLY )
659
+        {
660
+            throw new ezcMailTransportException( "Can't call getDelimiter() when not successfully logged in." );
661
+        }
662
+
663
+        $tag = $this->getNextTag();
664
+        $this->connection->sendData( "{$tag} LIST \"\" \"\"" );
665
+
666
+        // there should be only one * LIST response line from IMAP
667
+        $response = trim( $this->getResponse( '* LIST' ) );
668
+        $parts = explode( '"', $response );
669
+
670
+        if ( count( $parts ) >= 2 )
671
+        {
672
+            $result = $parts[1];
673
+        }
674
+        else
675
+        {
676
+            throw new ezcMailTransportException( "Could not retrieve the hierarchy delimiter: {$response}." );
677
+        }
678
+
679
+        $response = $this->getResponse( $tag, $response );
680
+        if ( $this->responseType( $response ) != self::RESPONSE_OK )
681
+        {
682
+            throw new ezcMailTransportException( "Could not retrieve the hierarchy delimiter: {$response}." );
683
+        }
684
+        return $result;
685
+    }
686
+
687
+    /**
688
+     * Selects the mailbox $mailbox, which will be the active mailbox for the
689
+     * subsequent commands until it is changed.
690
+     *
691
+     * Before calling this method, a connection to the IMAP server must be
692
+     * established and a user must be authenticated successfully.
693
+     *
694
+     * Inbox is a special mailbox and can be specified with any case.
695
+     *
696
+     * This method should be called after authentication, and before fetching
697
+     * any messages.
698
+     *
699
+     * Example of selecting a mailbox:
700
+     * <code>
701
+     * $imap = new ezcMailImapTransport( 'imap.example.com' );
702
+     * $imap->authenticate( 'username', 'password' );
703
+     *
704
+     * $imap->selectMailbox( 'Reports 2006' );
705
+     * </code>
706
+     *
707
+     * @throws ezcMailMailTransportException
708
+     *         if the current server state is not accepted
709
+     *         or if the server sent a negative response
710
+     * @param string $mailbox
711
+     * @param bool $readOnly
712
+     */
713
+    public function selectMailbox( $mailbox, $readOnly = false )
714
+    {
715
+        if ( $this->state != self::STATE_AUTHENTICATED &&
716
+             $this->state != self::STATE_SELECTED &&
717
+             $this->state != self::STATE_SELECTED_READONLY )
718
+        {
719
+            throw new ezcMailTransportException( "Can't call selectMailbox() when not successfully logged in." );
720
+        }
721
+
722
+        $tag = $this->getNextTag();
723
+
724
+        // if the mailbox selection will be successful, $state will be STATE_SELECTED
725
+        // or STATE_SELECTED_READONLY, depending on the $readOnly parameter
726
+        if ( $readOnly !== true ) 
727
+        {
728
+            $this->connection->sendData( "{$tag} SELECT \"{$mailbox}\"" );
729
+            $state = self::STATE_SELECTED;
730
+        }
731
+        else
732
+        {
733
+            $this->connection->sendData( "{$tag} EXAMINE \"{$mailbox}\"" );
734
+            $state = self::STATE_SELECTED_READONLY;
735
+        }
736
+
737
+        // if the selecting of the mailbox fails (with "NO" or "BAD" response
738
+        // from the server), $state reverts to STATE_AUTHENTICATED
739
+        $response = trim( $this->getResponse( $tag ) );
740
+        if ( $this->responseType( $response ) == self::RESPONSE_OK )
741
+        {
742
+            $this->state = $state;
743
+            $this->selectedMailbox = $mailbox;
744
+        }
745
+        else
746
+        {
747
+            $this->state = self::STATE_AUTHENTICATED;
748
+            $this->selectedMailbox = null;
749
+            throw new ezcMailTransportException( "Could not select mailbox '{$mailbox}': {$response}." );
750
+        }
751
+    }
752
+
753
+    /**
754
+     * Creates the mailbox $mailbox.
755
+     *
756
+     * Inbox cannot be created.
757
+     *
758
+     * Before calling this method, a connection to the IMAP server must be
759
+     * established and a user must be authenticated successfully.
760
+     *
761
+     * @throws ezcMailTransportException
762
+     *         if the current server state is not accepted
763
+     *         or if the server sent a negative response
764
+     * @param string $mailbox
765
+     * @return bool
766
+     */
767
+    public function createMailbox( $mailbox )
768
+    {
769
+        if ( $this->state != self::STATE_AUTHENTICATED &&
770
+             $this->state != self::STATE_SELECTED &&
771
+             $this->state != self::STATE_SELECTED_READONLY )
772
+        {
773
+            throw new ezcMailTransportException( "Can't call createMailbox() when not successfully logged in." );
774
+        }
775
+
776
+        $tag = $this->getNextTag();
777
+        $this->connection->sendData( "{$tag} CREATE \"{$mailbox}\"" );
778
+        $response = trim( $this->getResponse( $tag ) );
779
+        if ( $this->responseType( $response ) != self::RESPONSE_OK )
780
+        {
781
+            throw new ezcMailTransportException( "The IMAP server could not create mailbox '{$mailbox}': {$response}." );
782
+        }
783
+        return true;
784
+    }
785
+
786
+    /**
787
+     * Renames the mailbox $mailbox to $newName.
788
+     *
789
+     * Inbox cannot be renamed.
790
+     *
791
+     * Before calling this method, a connection to the IMAP server must be
792
+     * established and a user must be authenticated successfully.
793
+     *
794
+     * @throws ezcMailTransportException
795
+     *         if the current server state is not accepted
796
+     *         or if trying to rename the currently selected mailbox
797
+     *         or if the server sent a negative response
798
+     * @param string $mailbox
799
+     * @param string $newName
800
+     * @return bool
801
+     */
802
+    public function renameMailbox( $mailbox, $newName )
803
+    {
804
+        if ( $this->state != self::STATE_AUTHENTICATED &&
805
+             $this->state != self::STATE_SELECTED &&
806
+             $this->state != self::STATE_SELECTED_READONLY )
807
+        {
808
+            throw new ezcMailTransportException( "Can't call renameMailbox() when not successfully logged in." );
809
+        }
810
+
811
+        if ( strtolower( $this->selectedMailbox ) == strtolower( $mailbox ) )
812
+        {
813
+            throw new ezcMailTransportException( "Can't rename the currently selected mailbox." );
814
+        }
815
+
816
+        $tag = $this->getNextTag();
817
+        $this->connection->sendData( "{$tag} RENAME \"{$mailbox}\" \"{$newName}\"" );
818
+        $response = trim( $this->getResponse( $tag ) );
819
+        if ( $this->responseType( $response ) != self::RESPONSE_OK )
820
+        {
821
+            throw new ezcMailTransportException( "The IMAP server could not rename the mailbox '{$mailbox}' to '{$newName}': {$response}." );
822
+        }
823
+        return true;
824
+    }
825
+
826
+    /**
827
+     * Deletes the mailbox $mailbox.
828
+     *
829
+     * Inbox and the the currently selected mailbox cannot be deleted.
830
+     *
831
+     * Before calling this method, a connection to the IMAP server must be
832
+     * established and a user must be authenticated successfully.
833
+     *
834
+     * @throws ezcMailTransportException
835
+     *         if the current server state is not accepted
836
+     *         or if trying to delete the currently selected mailbox
837
+     *         or if the server sent a negative response
838
+     * @param string $mailbox
839
+     * @return bool
840
+     */
841
+    public function deleteMailbox( $mailbox )
842
+    {
843
+        if ( $this->state != self::STATE_AUTHENTICATED &&
844
+             $this->state != self::STATE_SELECTED &&
845
+             $this->state != self::STATE_SELECTED_READONLY )
846
+        {
847
+            throw new ezcMailTransportException( "Can't call deleteMailbox() when not successfully logged in." );
848
+        }
849
+
850
+        if ( strtolower( $this->selectedMailbox ) == strtolower( $mailbox ) )
851
+        {
852
+            throw new ezcMailTransportException( "Can't delete the currently selected mailbox." );
853
+        }
854
+
855
+        $tag = $this->getNextTag();
856
+        $this->connection->sendData( "{$tag} DELETE \"{$mailbox}\"" );
857
+        $response = trim( $this->getResponse( $tag ) );
858
+        if ( $this->responseType( $response ) != self::RESPONSE_OK )
859
+        {
860
+            throw new ezcMailTransportException( "The IMAP server could not delete the mailbox '{$mailbox}': {$response}." );
861
+        }
862
+        return true;
863
+    }
864
+
865
+    /** 
866
+     * Copies message(s) from the currently selected mailbox to mailbox
867
+     * $destination.
868
+     *
869
+     * This method supports unique IDs instead of message numbers. See
870
+     * {@link ezcMailImapTransportOptions} for how to enable unique IDs
871
+     * referencing.
872
+     *
873
+     * Warning! When using unique IDs referencing and trying to copy a message
874
+     * with an ID that does not exist, this method will not throw an exception.
875
+     *
876
+     * @todo Find out if it is possible to catch this IMAP bug.
877
+     *
878
+     * $messages can be:
879
+     *  - a single message number (eg: '1')
880
+     *  - a message range (eg. '1:4')
881
+     *  - a message list (eg. '1,2,4')
882
+     *
883
+     * Before calling this method, a connection to the IMAP server must be
884
+     * established and a user must be authenticated successfully, and a mailbox
885
+     * must be selected (the mailbox from which messages will be copied).
886
+     *
887
+     * Example of copying 3 messages to a mailbox:
888
+     * <code>
889
+     * $imap = new ezcMailImapTransport( 'imap.example.com' );
890
+     * $imap->authenticate( 'username', 'password' );
891
+     * $imap->selectMailbox( 'Inbox' );
892
+     *
893
+     * $imap->copyMessages( '1,2,4', 'Reports 2006' );
894
+     * </code>
895
+     *
896
+     * The above code will copy the messages with numbers 1, 2 and 4 from Inbox
897
+     * to Reports 2006.
898
+     *
899
+     * @throws ezcMailTransportException
900
+     *         if the current server state is not accepted
901
+     *         or if the server sent a negative response
902
+     * @param string $messages
903
+     * @param string $destination
904
+     * @return bool
905
+     */
906
+    public function copyMessages( $messages, $destination )
907
+    {
908
+        $uid = ( $this->options->uidReferencing ) ? self::UID : self::NO_UID;
909
+
910
+        if ( $this->state != self::STATE_SELECTED &&
911
+             $this->state != self::STATE_SELECTED_READONLY )
912
+        {
913
+            throw new ezcMailTransportException( "Can't call copyMessages() on the IMAP transport when a mailbox is not selected." );
914
+        }
915
+    
916
+        $tag = $this->getNextTag();
917
+        $this->connection->sendData( "{$tag} {$uid}COPY {$messages} \"{$destination}\"" );
918
+        
919
+        $response = trim( $this->getResponse( $tag ) );
920
+        if ( $this->responseType( $response ) != self::RESPONSE_OK )
921
+        {
922
+            throw new ezcMailTransportException( "The IMAP server could not copy '{$messages}' to '{$destination}': {$response}." );
923
+        }
924
+        return true;
925
+    }
926
+
927
+    /**
928
+     * Returns a list of the not deleted messages in the current mailbox.
929
+     *
930
+     * It returns only the messages with the flag DELETED not set.
931
+     *
932
+     * Before calling this method, a connection to the IMAP server must be
933
+     * established and a user must be authenticated successfully, and a mailbox
934
+     * must be selected.
935
+     *
936
+     * The format of the returned array is
937
+     * <code>
938
+     *   array( message_id => size );
939
+     * </code>
940
+     *
941
+     * Example:
942
+     * <code>
943
+     *   array( 2 => 1700, 5 => 1450, 6 => 21043 );
944
+     * </code>
945
+     *
946
+     * If $contentType is set, it returns only the messages with
947
+     * $contentType in the Content-Type header.
948
+     *
949
+     * For example $contentType can be "multipart/mixed" to return only the
950
+     * messages with attachments.
951
+     *
952
+     * @throws ezcMailTransportException
953
+     *         if a mailbox is not selected
954
+     *         or if the server sent a negative response
955
+     * @param string $contentType
956
+     * @return array(int)
957
+     */
958
+    public function listMessages( $contentType = null )
959
+    {
960
+        if ( $this->state != self::STATE_SELECTED &&
961
+             $this->state != self::STATE_SELECTED_READONLY )
962
+        {
963
+            throw new ezcMailTransportException( "Can't call listMessages() on the IMAP transport when a mailbox is not selected." );
964
+        }
965
+
966
+        $messageList = array();
967
+        $messages = array();
968
+ 
969
+        // get the numbers of the existing messages
970
+        $tag = $this->getNextTag();
971
+        $command = "{$tag} SEARCH UNDELETED";
972
+        if ( !is_null( $contentType ) )
973
+        {
974
+            $command .= " HEADER \"Content-Type\" \"{$contentType}\"";
975
+        }
976
+        $this->connection->sendData( $command );
977
+        $response = trim( $this->getResponse( '* SEARCH' ) );
978
+        if ( strpos( $response, '* SEARCH' ) !== false )
979
+        {
980
+            $ids = trim( substr( $response, 9 ) );
981
+            if ( $ids !== "" )
982
+            {
983
+                $messageList = explode( ' ', $ids );
984
+            }
985
+        }
986
+        // skip the OK response ("{$tag} OK Search completed.")
987
+        $response = trim( $this->getResponse( $tag, $response ) );
988
+        if ( $this->responseType( $response ) != self::RESPONSE_OK )
989
+        {
990
+            throw new ezcMailTransportException( "The IMAP server could not list messages: {$response}." );
991
+        }
992
+
993
+        if ( !empty( $messageList ) )
994
+        {
995
+            // get the sizes of the messages
996
+            $tag = $this->getNextTag();
997
+            $query = trim( implode( ',', $messageList ) );
998
+            $this->connection->sendData( "{$tag} FETCH {$query} RFC822.SIZE" );
999
+            $response = $this->getResponse( 'FETCH (' );
1000
+            $currentMessage = trim( reset( $messageList ) );
1001
+            while ( strpos( $response, 'FETCH (' ) !== false )
1002
+            {
1003
+                $line = $response;
1004
+                $line = explode( ' ', $line );
1005
+                $line = trim( $line[count( $line ) - 1] );
1006
+                $line = substr( $line, 0, strlen( $line ) - 1 );
1007
+                $messages[$currentMessage] = intval( $line );
1008
+                $currentMessage = next( $messageList );
1009
+                $response = $this->connection->getLine();
1010
+            }
1011
+            // skip the OK response ("{$tag} OK Fetch completed.")
1012
+            $response = trim( $this->getResponse( $tag, $response ) );
1013
+            if ( $this->responseType( $response ) != self::RESPONSE_OK )
1014
+            {
1015
+                throw new ezcMailTransportException( "The IMAP server could not list messages: {$response}." );
1016
+            }
1017
+        }
1018
+        return $messages;
1019
+    }
1020
+
1021
+    /**
1022
+     * Fetches the sizes in bytes for messages $messages.
1023
+     *
1024
+     * This method supports unique IDs instead of message numbers. See
1025
+     * {@link ezcMailImapTransportOptions} for how to enable unique IDs
1026
+     * referencing.
1027
+     *
1028
+     * $messages is an array of message numbers, for example:
1029
+     * <code>
1030
+     *   array( 1, 2, 4 );
1031
+     * </code>
1032
+     *
1033
+     * The format of the returned array is:
1034
+     * <code>
1035
+     *   array( message_number => size )
1036
+     * </code>
1037
+     *
1038
+     * Before calling this method, a connection to the IMAP server must be
1039
+     * established and a user must be authenticated successfully, and a mailbox
1040
+     * must be selected.
1041
+     *
1042
+     * Example:
1043
+     * <code>
1044
+     * $imap = new ezcMailImapTransport( 'imap.example.com' );
1045
+     * $imap->authenticate( 'username', 'password' );
1046
+     * $imap->selectMailbox( 'mailbox' ); // Inbox or another mailbox
1047
+     *
1048
+     * $sizes = $imap->fetchSizes( array( 1, 2, 4 ) );
1049
+     * </code>
1050
+     *
1051
+     * The returned array $sizes will be something like:
1052
+     * <code>
1053
+     *   array( 1 => 1043,
1054
+     *          2 => 203901,
1055
+     *          4 => 14277
1056
+     *        );
1057
+     * </code>
1058
+     *
1059
+     * @throws ezcMailTransportException
1060
+     *         if a mailbox is not selected
1061
+     *         or if the server sent a negative response
1062
+     * @param array $messages
1063
+     * @return array(int)
1064
+     */
1065
+    public function fetchSizes( $messages )
1066
+    {
1067
+        $uid = ( $this->options->uidReferencing ) ? self::UID : self::NO_UID;
1068
+
1069
+        if ( $this->state != self::STATE_SELECTED &&
1070
+             $this->state != self::STATE_SELECTED_READONLY )
1071
+        {
1072
+            throw new ezcMailTransportException( "Can't call fetchSizes() on the IMAP transport when a mailbox is not selected." );
1073
+        }
1074
+
1075
+        $sizes = array();
1076
+        $ids = implode( $messages, ',' );
1077
+
1078
+        $tag = $this->getNextTag();
1079
+        $this->connection->sendData( "{$tag} {$uid}FETCH {$ids} (RFC822.SIZE)" );
1080
+
1081
+        $response = trim( $this->connection->getLine() );
1082
+        while ( strpos( $response, $tag ) === false )
1083
+        {
1084
+            if ( strpos( $response, ' FETCH (' ) !== false )
1085
+            {
1086
+                if ( $this->options->uidReferencing )
1087
+                {
1088
+                    preg_match( '/\*\s.*\sFETCH\s\(RFC822\.SIZE\s(.*)\sUID\s(.*)\)/U', $response, $matches );
1089
+                    $sizes[intval( $matches[2] )] = (int) $matches[1];
1090
+                }
1091
+                else
1092
+                {
1093
+                    preg_match( '/\*\s(.*)\sFETCH\s\(RFC822\.SIZE\s(.*)\)/U', $response, $matches );
1094
+                    $sizes[intval( $matches[1] )] = (int) $matches[2];
1095
+                }
1096
+
1097
+            }
1098
+            $response = trim( $this->connection->getLine() );
1099
+        }
1100
+
1101
+        if ( $this->responseType( $response ) != self::RESPONSE_OK )
1102
+        {
1103
+            throw new ezcMailTransportException( "The IMAP server could not fetch flags for the messages '{$messages}': {$response}." );
1104
+        }
1105
+        return $sizes;
1106
+    }
1107
+
1108
+    /**
1109
+     * Returns information about the messages in the current mailbox.
1110
+     *
1111
+     * The information returned through the parameters is:
1112
+     *  - $numMessages = number of not deleted messages in the selected mailbox
1113
+     *  - $sizeMessages = sum of the not deleted messages sizes
1114
+     *  - $recent = number of recent and not deleted messages
1115
+     *  - $unseen = number of unseen and not deleted messages
1116
+     *
1117
+     * Before calling this method, a connection to the IMAP server must be
1118
+     * established and a user must be authenticated successfully, and a mailbox
1119
+     * must be selected.
1120
+     *
1121
+     * Example of returning the status of the currently selected mailbox:
1122
+     * <code>
1123
+     * $imap = new ezcMailImapTransport( 'imap.example.com' );
1124
+     * $imap->authenticate( 'username', 'password' );
1125
+     * $imap->selectMailbox( 'Inbox' );
1126
+     *
1127
+     * $imap->status( $numMessages, $sizeMessages, $recent, $unseen );
1128
+     * </code>
1129
+     *
1130
+     * After running the above code, $numMessages, $sizeMessages, $recent
1131
+     * and $unseen will be populated with values.
1132
+     *
1133
+     * @throws ezcMailTransportException
1134
+     *         if a mailbox is not selected
1135
+     *         or if the server sent a negative response
1136
+     * @param int &$numMessages
1137
+     * @param int &$sizeMessages
1138
+     * @param int &$recent
1139
+     * @param int &$unseen
1140
+     * @return bool
1141
+     */
1142
+    public function status( &$numMessages, &$sizeMessages, &$recent = 0, &$unseen = 0 )
1143
+    {
1144
+        if ( $this->state != self::STATE_SELECTED &&
1145
+             $this->state != self::STATE_SELECTED_READONLY )
1146
+        {
1147
+            throw new ezcMailTransportException( "Can't call status() on the IMAP transport when a mailbox is not selected." );
1148
+        }
1149
+        $messages = $this->listMessages();
1150
+        $numMessages = count( $messages );
1151
+        $sizeMessages = array_sum( $messages );
1152
+        $messages = array_keys( $messages );
1153
+        $recentMessages = array_intersect( $this->searchByFlag( "RECENT" ), $messages );
1154
+        $unseenMessages = array_intersect( $this->searchByFlag( "UNSEEN" ), $messages );
1155
+        $recent = count( $recentMessages );
1156
+        $unseen = count( $unseenMessages );
1157
+        return true;
1158
+    }
1159
+
1160
+    /**
1161
+     * Deletes the message with the message number $msgNum from the current mailbox.
1162
+     *
1163
+     * This method supports unique IDs instead of message numbers. See
1164
+     * {@link ezcMailImapTransportOptions} for how to enable unique IDs
1165
+     * referencing.
1166
+     *
1167
+     * The message number $msgNum must be a valid identifier fetched with e.g.
1168
+     * {@link listMessages()}.
1169
+     *
1170
+     * The message is not physically deleted, but has its DELETED flag set,
1171
+     * and can be later undeleted by clearing its DELETED flag with
1172
+     * {@link clearFlag()}.
1173
+     *
1174
+     * Before calling this method, a connection to the IMAP server must be
1175
+     * established and a user must be authenticated successfully, and a mailbox
1176
+     * must be selected.
1177
+     *
1178
+     * @throws ezcMailTransportException
1179
+     *         if a mailbox is not selected
1180
+     *         or if the server sent a negative response
1181
+     * @param int $msgNum
1182
+     * @return bool
1183
+     */
1184
+    public function delete( $msgNum )
1185
+    {
1186
+        $uid = ( $this->options->uidReferencing ) ? self::UID : self::NO_UID;
1187
+
1188
+        if ( $this->state != self::STATE_SELECTED )
1189
+        {
1190
+            throw new ezcMailTransportException( "Can't call delete() when a mailbox is not selected." );
1191
+        }
1192
+        $tag = $this->getNextTag();
1193
+        $this->connection->sendData( "{$tag} {$uid}STORE {$msgNum} +FLAGS (\\Deleted)" );
1194
+
1195
+        // get the response (should be "{$tag} OK Store completed.")
1196
+        $response = trim( $this->getResponse( $tag ) );
1197
+        if ( $this->responseType( $response ) != self::RESPONSE_OK )
1198
+        {
1199
+            throw new ezcMailTransportException( "The IMAP server could not delete the message '{$msgNum}': {$response}." );
1200
+        }
1201
+        return true;
1202
+    }
1203
+
1204
+    /**
1205
+     * Returns the headers and the first characters from message $msgNum,
1206
+     * without setting the SEEN flag.
1207
+     *
1208
+     * This method supports unique IDs instead of message numbers. See
1209
+     * {@link ezcMailImapTransportOptions} for how to enable unique IDs
1210
+     * referencing.
1211
+     *
1212
+     * If the command failed or if it was not supported by the server an empty
1213
+     * string is returned.
1214
+     *
1215
+     * This method is useful for retrieving the headers of messages from the
1216
+     * mailbox as strings, which can be later parsed with {@link ezcMailParser}
1217
+     * and {@link ezcMailVariableSet}. In this way the retrieval of the full
1218
+     * messages from the server is avoided when building a list of messages.
1219
+     *
1220
+     * Before calling this method, a connection to the IMAP server must be
1221
+     * established and a user must be authenticated successfully, and a mailbox
1222
+     * must be selected.
1223
+     *
1224
+     * Example of listing the mail headers of all the messages in the current
1225
+     * mailbox:
1226
+     * <code>
1227
+     * $imap = new ezcMailImapTransport( 'imap.example.com' );
1228
+     * $imap->authenticate( 'username', 'password' );
1229
+     * $imap->selectMailbox( 'Inbox' );
1230
+     *
1231
+     * $parser = new ezcMailParser();
1232
+     * $messages = $imap->listMessages();
1233
+     * foreach ( $messages as $messageNr => $size )
1234
+     * {
1235
+     *     $set = new ezcMailVariableSet( $imap->top( $messageNr ) );
1236
+     *     $mail = $parser->parseMail( $set );
1237
+     *     $mail = $mail[0];
1238
+     *     echo "From: {$mail->from}, Subject: {$mail->subject}, Size: {$size}\n";
1239
+     * }
1240
+     * </code>
1241
+     *
1242
+     * For a more advanced example see the "Mail listing example" in the online
1243
+     * documentation.
1244
+     *
1245
+     * @throws ezcMailTransportException
1246
+     *         if a mailbox is not selected
1247
+     *         or if the server sent a negative response
1248
+     * @param int $msgNum
1249
+     * @param int $chars
1250
+     * @return string
1251
+     */
1252
+    public function top( $msgNum, $chars = 0 )
1253
+    {
1254
+        $uid = ( $this->options->uidReferencing ) ? self::UID : self::NO_UID;
1255
+
1256
+        if ( $this->state != self::STATE_SELECTED &&
1257
+             $this->state != self::STATE_SELECTED_READONLY )
1258
+        {
1259
+            throw new ezcMailTransportException( "Can't call top() on the IMAP transport when a mailbox is not selected." );
1260
+        }
1261
+
1262
+        $tag = $this->getNextTag();
1263
+
1264
+        if ( $chars === 0 )
1265
+        {
1266
+            $command = "{$tag} {$uid}FETCH {$msgNum} (BODY.PEEK[HEADER] BODY.PEEK[TEXT])";
1267
+        }
1268
+        else
1269
+        {
1270
+            $command = "{$tag} {$uid}FETCH {$msgNum} (BODY.PEEK[HEADER] BODY.PEEK[TEXT]<0.{$chars}>)";
1271
+        }
1272
+        $this->connection->sendData( $command );
1273
+        if ( $this->options->uidReferencing )
1274
+        {
1275
+            // special case (BUG?) where "UID FETCH {$msgNum}" returns nothing
1276
+            $response = trim( $this->connection->getLine() );
1277
+            if ( $this->responseType( $response ) === self::RESPONSE_OK )
1278
+            {
1279
+                throw new ezcMailTransportException( "The IMAP server could not fetch the message '{$msgNum}': {$response}." );
1280
+            }
1281
+        }
1282
+        else
1283
+        {
1284
+            $response = $this->getResponse( 'FETCH (' );
1285
+        }
1286
+        $message = "";
1287
+        if ( strpos( $response, 'FETCH (' ) !== false )
1288
+        {
1289
+            // Added hack for issue #14360: problems with $imap->top() command in gmail.
1290
+            if ( $this->serverType === self::SERVER_GIMAP )
1291
+            {
1292
+                // Google IMAP servers return the body first, then the headers (!)
1293
+                $bytesToRead = $this->getMessageSectionSize( $response );
1294
+                $response = "";
1295
+                while ( $bytesToRead >= 0 )
1296
+                {
1297
+                    $data = $this->connection->getLine();
1298
+                    $lastResponse = $data;
1299
+                    $bytesToRead -= strlen( $data );
1300
+
1301
+                    // in case reading too much and the string "BODY[HEADER] {size}"
1302
+                    // is at the end of the last line
1303
+                    if ( $bytesToRead <= 0 )
1304
+                    {
1305
+                        if ( $bytesToRead < 0 )
1306
+                        {
1307
+                            $lastResponse = substr( $data, $bytesToRead );
1308
+                            $data = substr( $data, 0, strlen( $data ) + $bytesToRead );
1309
+                        }
1310
+                    }
1311
+                    $message .= $data;
1312
+                }
1313
+
1314
+                // Read the headers
1315
+                $headers = '';
1316
+                $response = $this->connection->getLine();
1317
+                $bytesToRead = $this->getMessageSectionSize( $lastResponse );
1318
+
1319
+                $response = $this->connection->getLine();
1320
+                while ( strpos( $response, $tag ) === false )
1321
+                {
1322
+                    $headers .= $response;
1323
+                    $response = $this->connection->getLine();
1324
+                }
1325
+                $headers = trim( $headers, ")\r\n" );
1326
+
1327
+                // Append the body AFTER the headers as it should be
1328
+                $message = $headers . "\r\n\r\n" . $message;
1329
+            }
1330
+            else
1331
+            {
1332
+                // Other IMAP servers return the headers first, then the body
1333
+                $response = "";
1334
+                while ( strpos( $response, 'BODY[TEXT]' ) === false )
1335
+                {
1336
+                    $message .= $response;
1337
+                    $response = $this->connection->getLine();
1338
+                }
1339
+
1340
+                $response = $this->connection->getLine();
1341
+                while ( strpos( $response, $tag ) === false )
1342
+                {
1343
+                    $message .= $response;
1344
+                    $response = $this->connection->getLine();
1345
+                }
1346
+            }
1347
+        }
1348
+        // skip the OK response ("{$tag} OK Fetch completed.")
1349
+        $response = trim( $this->getResponse( $tag, $response ) );
1350
+        if ( $this->responseType( $response ) != self::RESPONSE_OK )
1351
+        {
1352
+            throw new ezcMailTransportException( "The IMAP server could not fetch the message '{$msgNum}': {$response}." );
1353
+        }
1354
+        return $message;
1355
+    }
1356
+
1357
+    /**
1358
+     * Returns the unique identifiers for the messages from the current mailbox.
1359
+     *
1360
+     * You can fetch the unique identifier for a specific message by
1361
+     * providing the $msgNum parameter.
1362
+     *
1363
+     * The unique identifier can be used to recognize mail from servers
1364
+     * between requests. In contrast to the message numbers the unique
1365
+     * numbers assigned to an email usually never changes.
1366
+     *
1367
+     * The format of the returned array is:
1368
+     * <code>
1369
+     *   array( message_num => unique_id );
1370
+     * </code>
1371
+     *
1372
+     * Example:
1373
+     * <code>
1374
+     *   array( 1 => 216, 2 => 217, 3 => 218, 4 => 219 );
1375
+     * </code>
1376
+     *
1377
+     * Before calling this method, a connection to the IMAP server must be
1378
+     * established and a user must be authenticated successfully, and a mailbox
1379
+     * must be selected.
1380
+     *
1381
+     * @todo add UIVALIDITY value to UID (like in POP3) (if necessary).
1382
+     *
1383
+     * @throws ezcMailTransportException
1384
+     *         if a mailbox is not selected
1385
+     *         or if the server sent a negative response
1386
+     * @param int $msgNum
1387
+     * @return array(string)
1388
+     */
1389
+    public function listUniqueIdentifiers( $msgNum = null )
1390
+    {
1391
+        if ( $this->state != self::STATE_SELECTED &&
1392
+             $this->state != self::STATE_SELECTED_READONLY )
1393
+        {
1394
+            throw new ezcMailTransportException( "Can't call listUniqueIdentifiers() on the IMAP transport when a mailbox is not selected." );
1395
+        }
1396
+
1397
+        $result = array();
1398
+        if ( $msgNum !== null )
1399
+        {
1400
+            $tag = $this->getNextTag();
1401
+            $this->connection->sendData( "{$tag} UID SEARCH {$msgNum}" );
1402
+            $response = $this->getResponse( '* SEARCH' );
1403
+            if ( strpos( $response, '* SEARCH' ) !== false )
1404
+            {
1405
+                $result[(int)$msgNum] = trim( substr( $response, 9 ) );
1406
+            }
1407
+            $response = trim( $this->getResponse( $tag, $response ) );
1408
+        }
1409
+        else
1410
+        {
1411
+            $uids = array();
1412
+            $messages = array_keys( $this->listMessages() );
1413
+            $tag = $this->getNextTag();
1414
+            $this->connection->sendData( "{$tag} UID SEARCH UNDELETED" );
1415
+            $response = $this->getResponse( '* SEARCH' );
1416
+            if ( strpos( $response, '* SEARCH' ) !== false )
1417
+            {
1418
+                $response = trim( substr( $response, 9 ) );
1419
+                if ( $response !== "" )
1420
+                {
1421
+                    $uids = explode( ' ', $response );
1422
+                }
1423
+                for ( $i = 0; $i < count( $messages ); $i++ )
1424
+                {
1425
+                    $result[trim( $messages[$i] )] = $uids[$i];
1426
+                }
1427
+            }
1428
+            $response = trim( $this->getResponse( $tag ) );
1429
+        }
1430
+        if ( $this->responseType( $response ) != self::RESPONSE_OK )
1431
+        {
1432
+            throw new ezcMailTransportException( "The IMAP server could not fetch the unique identifiers: {$response}." );
1433
+        }
1434
+        return $result;
1435
+    }
1436
+
1437
+    /**
1438
+     * Returns an {@link ezcMailImapSet} with all the messages from the current mailbox.
1439
+     *
1440
+     * This method supports unique IDs instead of message numbers. See
1441
+     * {@link ezcMailImapTransportOptions} for how to enable unique IDs
1442
+     * referencing.
1443
+     *
1444
+     * If $deleteFromServer is set to true the mail will be marked for deletion
1445
+     * after retrieval. If not it will be left intact.
1446
+     *
1447
+     * The set returned can be parsed with {@link ezcMailParser}.
1448
+     *
1449
+     * Before calling this method, a connection to the IMAP server must be
1450
+     * established and a user must be authenticated successfully, and a mailbox
1451
+     * must be selected.
1452
+     *
1453
+     * Example:
1454
+     * <code>
1455
+     * $imap = new ezcMailImapTransport( 'imap.example.com' );
1456
+     * $imap->authenticate( 'username', 'password' );
1457
+     * $imap->selectMailbox( 'Inbox' );
1458
+     *
1459
+     * $set = $imap->fetchAll();
1460
+     *
1461
+     * // parse $set with ezcMailParser
1462
+     * $parser = new ezcMailParser();
1463
+     * $mails = $parser->parseMail( $set );
1464
+     * foreach ( $mails as $mail )
1465
+     * {
1466
+     *     // process $mail which is an ezcMail object
1467
+     * }
1468
+     * </code>
1469
+     *
1470
+     * @throws ezcMailTransportException
1471
+     *         if a mailbox is not selected
1472
+     *         or if the server sent a negative response
1473
+     * @param bool $deleteFromServer
1474
+     * @return ezcMailParserSet
1475
+     */
1476
+    public function fetchAll( $deleteFromServer = false )
1477
+    {
1478
+        if ( $this->options->uidReferencing )
1479
+        {
1480
+            $messages = array_values( $this->listUniqueIdentifiers() );
1481
+        }
1482
+        else
1483
+        {
1484
+            $messages = array_keys( $this->listMessages() );
1485
+        }
1486
+
1487
+        return new ezcMailImapSet( $this->connection, $messages, $deleteFromServer, array( 'uidReferencing' => $this->options->uidReferencing ) );
1488
+    }
1489
+
1490
+    /**
1491
+     * Returns an {@link ezcMailImapSet} containing only the $number -th message in
1492
+     * the current mailbox.
1493
+     *
1494
+     * This method supports unique IDs instead of message numbers. See
1495
+     * {@link ezcMailImapTransportOptions} for how to enable unique IDs
1496
+     * referencing.
1497
+     *
1498
+     * If $deleteFromServer is set to true the mail will be marked for deletion
1499
+     * after retrieval. If not it will be left intact.
1500
+     *
1501
+     * Note: for IMAP the first message is 1 (so for $number = 0 an exception
1502
+     * will be thrown).
1503
+     *
1504
+     * Before calling this method, a connection to the IMAP server must be
1505
+     * established and a user must be authenticated successfully, and a mailbox
1506
+     * must be selected.
1507
+     *
1508
+     * Example:
1509
+     * <code>
1510
+     * $imap = new ezcMailImapTransport( 'imap.example.com' );
1511
+     * $imap->authenticate( 'username', 'password' );
1512
+     * $imap->selectMailbox( 'Inbox' );
1513
+     *
1514
+     * $set = $imap->fetchByMessageNr( 1 );
1515
+     *
1516
+     * // $set can be parsed with ezcMailParser
1517
+     * </code>
1518
+     *
1519
+     * @throws ezcMailTransportException
1520
+     *         if a mailbox is not selected
1521
+     *         or if the server sent a negative response
1522
+     * @throws ezcMailNoSuchMessageException
1523
+     *         if the message $number is out of range
1524
+     * @param int $number
1525
+     * @param bool $deleteFromServer
1526
+     * @return ezcMailImapSet
1527
+     */
1528
+    public function fetchByMessageNr( $number, $deleteFromServer = false )
1529
+    {
1530
+        if ( $this->options->uidReferencing )
1531
+        {
1532
+            $messages = array_flip( $this->listUniqueIdentifiers() );
1533
+        }
1534
+        else
1535
+        {
1536
+            $messages = $this->listMessages();
1537
+        }
1538
+
1539
+        if ( !isset( $messages[$number] ) )
1540
+        {
1541
+            throw new ezcMailNoSuchMessageException( $number );
1542
+        }
1543
+
1544
+        return new ezcMailImapSet( $this->connection, array( 0 => $number ), $deleteFromServer, array( 'uidReferencing' => $this->options->uidReferencing ) );
1545
+    }
1546
+
1547
+    /**
1548
+     * Returns an {@link ezcMailImapSet} with $count messages starting from $offset from
1549
+     * the current mailbox.
1550
+     *
1551
+     * This method supports unique IDs instead of message numbers. See
1552
+     * {@link ezcMailImapTransportOptions} for how to enable unique IDs
1553
+     * referencing.
1554
+     *
1555
+     * Fetches $count messages starting from the $offset and returns them as a
1556
+     * {@link ezcMailImapSet}. If $count is not specified or if it is 0, it fetches
1557
+     * all messages starting from the $offset.
1558
+     *
1559
+     * Before calling this method, a connection to the IMAP server must be
1560
+     * established and a user must be authenticated successfully, and a mailbox
1561
+     * must be selected.
1562
+     *
1563
+     * Example:
1564
+     * <code>
1565
+     * $imap = new ezcMailImapTransport( 'imap.example.com' );
1566
+     * $imap->authenticate( 'username', 'password' );
1567
+     * $imap->selectMailbox( 'Inbox' );
1568
+     *
1569
+     * $set = $imap->fetchFromOffset( 1, 10 );
1570
+     *
1571
+     * // $set can be parsed with ezcMailParser
1572
+     * </code>
1573
+     *
1574
+     * @throws ezcMailTransportException
1575
+     *         if a mailbox is not selected
1576
+     *         or if the server sent a negative response
1577
+     * @throws ezcMailInvalidLimitException
1578
+     *         if $count is negative
1579
+     * @throws ezcMailOffsetOutOfRangeException
1580
+     *         if $offset is outside of the existing range of messages
1581
+     * @param int $offset
1582
+     * @param int $count
1583
+     * @param bool $deleteFromServer
1584
+     * @return ezcMailImapSet
1585
+     */
1586
+    public function fetchFromOffset( $offset, $count = 0, $deleteFromServer = false )
1587
+    {
1588
+        if ( $count < 0 )
1589
+        {
1590
+            throw new ezcMailInvalidLimitException( $offset, $count );
1591
+        }
1592
+
1593
+        if ( $this->options->uidReferencing )
1594
+        {
1595
+            $messages = array_values( $this->listUniqueIdentifiers() );
1596
+            $ids = array_flip( $messages );
1597
+
1598
+            if ( $count === 0 )
1599
+            {
1600
+                $count = count( $messages );
1601
+            }
1602
+
1603
+            if ( !isset( $ids[$offset] ) )
1604
+            {
1605
+                throw new ezcMailOffsetOutOfRangeException( $offset, $count );
1606
+            }
1607
+
1608
+            $range = array();
1609
+            for ( $i = $ids[$offset]; $i < min( $count, count( $messages ) ); $i++ )
1610
+            {
1611
+                $range[] = $messages[$i];
1612
+            }
1613
+        }
1614
+        else
1615
+        {
1616
+            $messages = array_keys( $this->listMessages() );
1617
+
1618
+            if ( $count === 0 )
1619
+            {
1620
+                $count = count( $messages );
1621
+            }
1622
+
1623
+            $range = array_slice( $messages, $offset - 1, $count, true );
1624
+
1625
+            if ( !isset( $range[$offset - 1] ) )
1626
+            {
1627
+                throw new ezcMailOffsetOutOfRangeException( $offset, $count );
1628
+            }
1629
+        }
1630
+
1631
+        return new ezcMailImapSet( $this->connection, $range, $deleteFromServer, array( 'uidReferencing' => $this->options->uidReferencing ) );
1632
+    }
1633
+
1634
+    /**
1635
+     * Returns an {@link ezcMailImapSet} containing the messages which match the
1636
+     * provided $criteria from the current mailbox.
1637
+     *
1638
+     * This method supports unique IDs instead of message numbers. See
1639
+     * {@link ezcMailImapTransportOptions} for how to enable unique IDs
1640
+     * referencing.
1641
+     *
1642
+     * See {@link http://www.faqs.org/rfcs/rfc1730.html} - 6.4.4. (or
1643
+     * {@link http://www.faqs.org/rfcs/rfc1730.html} - 6.4.4.) for criterias
1644
+     * which can be used for searching. The criterias can be combined in the
1645
+     * same search string (separate the criterias with spaces).
1646
+     *
1647
+     * If $criteria is null or empty then it will default to 'ALL' (returns all
1648
+     * messages in the mailbox).
1649
+     *
1650
+     * Before calling this method, a connection to the IMAP server must be
1651
+     * established and a user must be authenticated successfully, and a mailbox
1652
+     * must be selected.
1653
+     *
1654
+     * Examples:
1655
+     * <code>
1656
+     * $imap = new ezcMailImapTransport( 'imap.example.com' );
1657
+     * $imap->authenticate( 'username', 'password' );
1658
+     * $imap->selectMailbox( 'mailbox' ); // Inbox or another mailbox
1659
+     *
1660
+     * // return an ezcMailImapSet containing all messages flagged as 'SEEN'
1661
+     * $set = $imap->searchMailbox( 'SEEN' );
1662
+     *
1663
+     * // return an ezcMailImapSet containing messages with 'release' in their Subject
1664
+     * $set = $imap->searchMailbox( 'SUBJECT "release"' );
1665
+     *
1666
+     * // criterias can be combined:
1667
+     * // return an ezcMailImapSet containing messages flagged as 'SEEN' and
1668
+     * // with 'release' in their Subject
1669
+     * $set = $imap->searchMailbox( 'SEEN SUBJECT "release"' );
1670
+     *
1671
+     * // $set can be parsed with ezcMailParser
1672
+     * </code>
1673
+     *
1674
+     * @throws ezcMailTransportException
1675
+     *         if a mailbox is not selected
1676
+     *         or if the server sent a negative response
1677
+     * @param string $criteria
1678
+     * @return ezcMailImapSet
1679
+     */
1680
+    public function searchMailbox( $criteria = null )
1681
+    {
1682
+        $uid = ( $this->options->uidReferencing ) ? self::UID : self::NO_UID;
1683
+
1684
+        if ( $this->state != self::STATE_SELECTED &&
1685
+             $this->state != self::STATE_SELECTED_READONLY )
1686
+        {
1687
+            throw new ezcMailTransportException( "Can't call searchMailbox() on the IMAP transport when a mailbox is not selected." );
1688
+        }
1689
+
1690
+        $criteria = trim( $criteria );
1691
+        if ( empty( $criteria ) )
1692
+        {
1693
+            $criteria = 'ALL';
1694
+        }
1695
+
1696
+        $matchingMessages = array();
1697
+        $tag = $this->getNextTag();
1698
+        $this->connection->sendData( "{$tag} {$uid}SEARCH {$criteria}" );
1699
+
1700
+        $response = $this->getResponse( '* SEARCH' );
1701
+        if ( strpos( $response, '* SEARCH' ) !== false )
1702
+        {
1703
+            $ids = substr( trim( $response ), 9 );
1704
+            if ( trim( $ids ) !== "" )
1705
+            {
1706
+                $matchingMessages = explode( ' ', $ids );
1707
+            }
1708
+        }
1709
+
1710
+        $response = trim( $this->getResponse( $tag, $response ) );
1711
+        if ( $this->responseType( $response ) != self::RESPONSE_OK )
1712
+        {
1713
+            throw new ezcMailTransportException( "The IMAP server could not search the messages by the specified criteria: {$response}." );
1714
+        }
1715
+
1716
+        return new ezcMailImapSet( $this->connection, array_values( $matchingMessages ), false, array( 'uidReferencing' => $this->options->uidReferencing ) );
1717
+    }
1718
+
1719
+    /**
1720
+     * Returns an {@link ezcMailImapSet} containing $count messages starting
1721
+     * from $offset sorted by $sortCriteria from the current mailbox.
1722
+     *
1723
+     * This method supports unique IDs instead of message numbers. See
1724
+     * {@link ezcMailImapTransportOptions} for how to enable unique IDs
1725
+     * referencing.
1726
+     *
1727
+     * It is useful for paging through a mailbox.
1728
+     *
1729
+     * Fetches $count messages starting from the $offset and returns them as a
1730
+     * {@link ezcMailImapSet}. If $count is is 0, it fetches all messages
1731
+     * starting from the $offset.
1732
+     *
1733
+     * $sortCriteria is an email header like: Subject, To, From, Date, Sender, etc.
1734
+     *
1735
+     * Before calling this method, a connection to the IMAP server must be
1736
+     * established and a user must be authenticated successfully, and a mailbox
1737
+     * must be selected.
1738
+     *
1739
+     * Example:
1740
+     * <code>
1741
+     * $imap = new ezcMailImapTransport( 'imap.example.com' );
1742
+     * $imap->authenticate( 'username', 'password' );
1743
+     * $imap->selectMailbox( 'mailbox' ); // Inbox or another mailbox
1744
+     *
1745
+     * // Fetch a range of messages sorted by Date
1746
+     * $set = $imap->sortFromOffset( 1, 10, "Date" );
1747
+     *
1748
+     * // $set can be parsed with ezcMailParser
1749
+     * </code>
1750
+     *
1751
+     * @throws ezcMailTransportException
1752
+     *         if a mailbox is not selected
1753
+     *         or if the server sent a negative response
1754
+     * @throws ezcMailInvalidLimitException
1755
+     *         if $count is negative
1756
+     * @throws ezcMailOffsetOutOfRangeException
1757
+     *         if $offset is outside of the existing range of messages
1758
+     * @param int $offset
1759
+     * @param int $count
1760
+     * @param string $sortCriteria
1761
+     * @param bool $reverse
1762
+     * @return ezcMailImapSet
1763
+     */
1764
+    public function sortFromOffset( $offset, $count = 0, $sortCriteria, $reverse = false )
1765
+    {
1766
+        if ( $count < 0 )
1767
+        {
1768
+            throw new ezcMailInvalidLimitException( $offset, $count );
1769
+        }
1770
+
1771
+        $range = array();
1772
+        if ( $this->options->uidReferencing )
1773
+        {
1774
+            $uids = array_values( $this->listUniqueIdentifiers() );
1775
+
1776
+            $flip = array_flip( $uids );
1777
+            if ( !isset( $flip[$offset] ) )
1778
+            {
1779
+                throw new ezcMailOffsetOutOfRangeException( $offset, $count );
1780
+            }
1781
+
1782
+            $start = $flip[$offset];
1783
+
1784
+            $messages = $this->sort( $uids, $sortCriteria, $reverse );
1785
+
1786
+            if ( $count === 0 )
1787
+            {
1788
+                $count = count( $messages );
1789
+            }
1790
+
1791
+            $ids = array_keys( $messages );
1792
+
1793
+            for ( $i = $start; $i < $count; $i++ )
1794
+            {
1795
+                $range[] = $ids[$i];
1796
+            }
1797
+        }
1798
+        else
1799
+        {
1800
+            $messageCount = $this->countByFlag( 'ALL' );
1801
+            $messages = array_keys( $this->sort( range( 1, $messageCount ), $sortCriteria, $reverse ) );
1802
+
1803
+            if ( $count === 0 )
1804
+            {
1805
+                $count = count( $messages );
1806
+            }
1807
+
1808
+            $range = array_slice( $messages, $offset - 1, $count, true );
1809
+
1810
+            if ( !isset( $range[$offset - 1] ) )
1811
+            {
1812
+                throw new ezcMailOffsetOutOfRangeException( $offset, $count );
1813
+            }
1814
+        }
1815
+
1816
+        return new ezcMailImapSet( $this->connection, $range, false, array( 'uidReferencing' => $this->options->uidReferencing ) );
1817
+    }
1818
+
1819
+    /**
1820
+     * Returns an {@link ezcMailImapSet} containing messages $messages sorted by
1821
+     * $sortCriteria from the current mailbox.
1822
+     *
1823
+     * This method supports unique IDs instead of message numbers. See
1824
+     * {@link ezcMailImapTransportOptions} for how to enable unique IDs
1825
+     * referencing.
1826
+     *
1827
+     * $messages is an array of message numbers, for example:
1828
+     * <code>
1829
+     *   array( 1, 2, 4 );
1830
+     * </code>
1831
+     *
1832
+     * $sortCriteria is an email header like: Subject, To, From, Date, Sender, etc.
1833
+     *
1834
+     * Before calling this method, a connection to the IMAP server must be
1835
+     * established and a user must be authenticated successfully, and a mailbox
1836
+     * must be selected.
1837
+     *
1838
+     * Example:
1839
+     * <code>
1840
+     * $imap = new ezcMailImapTransport( 'imap.example.com' );
1841
+     * $imap->authenticate( 'username', 'password' );
1842
+     * $imap->selectMailbox( 'mailbox' ); // Inbox or another mailbox
1843
+     *
1844
+     * // Fetch the list of messages sorted by Date
1845
+     * $set = $imap->sortMessages( 1, 10, "Date" );
1846
+     *
1847
+     * // $set can be parsed with ezcMailParser
1848
+     * </code>
1849
+     *
1850
+     * @throws ezcMailTransportException
1851
+     *         if a mailbox is not selected
1852
+     *         or if the server sent a negative response
1853
+     *         or if array $messages is empty
1854
+     * @param array(int) $messages
1855
+     * @param string $sortCriteria
1856
+     * @param bool $reverse
1857
+     * @return ezcMailImapSet
1858
+     */
1859
+    public function sortMessages( $messages, $sortCriteria, $reverse = false )
1860
+    {
1861
+        $messages = $this->sort( $messages, $sortCriteria, $reverse );
1862
+        return new ezcMailImapSet( $this->connection, array_keys ( $messages ), false, array( 'uidReferencing' => $this->options->uidReferencing ) );
1863
+    }
1864
+
1865
+    /**
1866
+     * Returns an {@link ezcMailImapSet} containing messages with a certain flag from
1867
+     * the current mailbox.
1868
+     *
1869
+     * This method supports unique IDs instead of message numbers. See
1870
+     * {@link ezcMailImapTransportOptions} for how to enable unique IDs
1871
+     * referencing.
1872
+     *
1873
+     * $flag can be one of:
1874
+     *
1875
+     * Basic flags:
1876
+     *  - ANSWERED   - message has been answered
1877
+     *  - DELETED    - message is marked to be deleted by later EXPUNGE
1878
+     *  - DRAFT      - message is marked as a draft
1879
+     *  - FLAGGED    - message is "flagged" for urgent/special attention
1880
+     *  - RECENT     - message is recent
1881
+     *  - SEEN       - message has been read
1882
+     *
1883
+     * Opposites of the above flags:
1884
+     *  - UNANSWERED
1885
+     *  - UNDELETED
1886
+     *  - UNDRAFT
1887
+     *  - UNFLAGGED
1888
+     *  - OLD
1889
+     *  - UNSEEN
1890
+     *
1891
+     * Composite flags:
1892
+     *  - NEW        - equivalent to RECENT + UNSEEN
1893
+     *  - ALL        - all the messages
1894
+     *
1895
+     * Before calling this method, a connection to the IMAP server must be
1896
+     * established and a user must be authenticated successfully, and a mailbox
1897
+     * must be selected.
1898
+     *
1899
+     * Example:
1900
+     * <code>
1901
+     * $imap = new ezcMailImapTransport( 'imap.example.com' );
1902
+     * $imap->authenticate( 'username', 'password' );
1903
+     * $imap->selectMailbox( 'mailbox' ); // Inbox or another mailbox
1904
+     *
1905
+     * // Fetch the messages marked with the RECENT flag
1906
+     * $set = $imap->fetchByFlag( 'RECENT' );
1907
+     *
1908
+     * // $set can be parsed with ezcMailParser
1909
+     * </code>
1910
+     *
1911
+     * @throws ezcMailTransportException
1912
+     *         if a mailbox is not selected
1913
+     *         or if the server sent a negative response
1914
+     *         or if $flag is not valid
1915
+     * @param string $flag
1916
+     * @return ezcMailImapSet
1917
+     */
1918
+    public function fetchByFlag( $flag )
1919
+    {
1920
+        $messages = $this->searchByFlag( $flag );
1921
+        return new ezcMailImapSet( $this->connection, $messages, false, array( 'uidReferencing' => $this->options->uidReferencing ) );
1922
+    }
1923
+
1924
+    /**
1925
+     * Wrapper function to fetch count of messages by a certain flag.
1926
+     *
1927
+     * $flag can be one of:
1928
+     *
1929
+     * Basic flags:
1930
+     *  - ANSWERED   - message has been answered
1931
+     *  - DELETED    - message is marked to be deleted by later EXPUNGE
1932
+     *  - DRAFT      - message is marked as a draft
1933
+     *  - FLAGGED    - message is "flagged" for urgent/special attention
1934
+     *  - RECENT     - message is recent
1935
+     *  - SEEN       - message has been read
1936
+     *
1937
+     * Opposites of the above flags:
1938
+     *  - UNANSWERED
1939
+     *  - UNDELETED
1940
+     *  - UNDRAFT
1941
+     *  - UNFLAGGED
1942
+     *  - OLD
1943
+     *  - UNSEEN
1944
+     *
1945
+     * Composite flags:
1946
+     *  - NEW        - equivalent to RECENT + UNSEEN
1947
+     *  - ALL        - all the messages
1948
+     *
1949
+     * Before calling this method, a connection to the IMAP server must be
1950
+     * established and a user must be authenticated successfully, and a mailbox
1951
+     * must be selected.
1952
+     *
1953
+     * @throws ezcMailTransportException
1954
+     *         if a mailbox is not selected
1955
+     *         or if the server sent a negative response
1956
+     *         or if $flag is not valid
1957
+     * @param string $flag
1958
+     * @return int
1959
+     */
1960
+    public function countByFlag( $flag )
1961
+    {
1962
+        $flag = $this->normalizeFlag( $flag );
1963
+        $messages = $this->searchByFlag( $flag );
1964
+        return count( $messages );
1965
+    }
1966
+
1967
+    /**
1968
+     * Fetches IMAP flags for messages $messages.
1969
+     *
1970
+     * This method supports unique IDs instead of message numbers. See
1971
+     * {@link ezcMailImapTransportOptions} for how to enable unique IDs
1972
+     * referencing.
1973
+     *
1974
+     * $messages is an array of message numbers, for example:
1975
+     * <code>
1976
+     *   array( 1, 2, 4 );
1977
+     * </code>
1978
+     *
1979
+     * The format of the returned array is:
1980
+     * <code>
1981
+     *   array( message_number => array( flags ) )
1982
+     * </code>
1983
+     *
1984
+     * Before calling this method, a connection to the IMAP server must be
1985
+     * established and a user must be authenticated successfully, and a mailbox
1986
+     * must be selected.
1987
+     *
1988
+     * Example:
1989
+     * <code>
1990
+     * $imap = new ezcMailImapTransport( 'imap.example.com' );
1991
+     * $imap->authenticate( 'username', 'password' );
1992
+     * $imap->selectMailbox( 'mailbox' ); // Inbox or another mailbox
1993
+     *
1994
+     * $flags = $imap->fetchFlags( array( 1, 2, 4 ) );
1995
+     * </code>
1996
+     *
1997
+     * The returned array $flags will be something like:
1998
+     * <code>
1999
+     *   array( 1 => array( '\Seen' ),
2000
+     *          2 => array( '\Seen' ),
2001
+     *          4 => array( '\Seen', 'NonJunk' )
2002
+     *        );
2003
+     * </code>
2004
+     *
2005
+     * @throws ezcMailTransportException
2006
+     *         if a mailbox is not selected
2007
+     *         or if the server sent a negative response
2008
+     * @param array $messages
2009
+     * @return array(mixed)
2010
+     */
2011
+    public function fetchFlags( $messages )
2012
+    {
2013
+        $uid = ( $this->options->uidReferencing ) ? self::UID : self::NO_UID;
2014
+
2015
+        if ( $this->state != self::STATE_SELECTED &&
2016
+             $this->state != self::STATE_SELECTED_READONLY )
2017
+        {
2018
+            throw new ezcMailTransportException( "Can't call fetchFlags() on the IMAP transport when a mailbox is not selected." );
2019
+        }
2020
+
2021
+        $flags = array();
2022
+        $ids = implode( $messages, ',' );
2023
+
2024
+        $tag = $this->getNextTag();
2025
+        $this->connection->sendData( "{$tag} {$uid}FETCH {$ids} (FLAGS)" );
2026
+
2027
+        $response = trim( $this->connection->getLine() );
2028
+        while ( strpos( $response, $tag ) === false )
2029
+        {
2030
+            if ( strpos( $response, ' FETCH (' ) !== false )
2031
+            {
2032
+                if ( $this->options->uidReferencing )
2033
+                {
2034
+                    preg_match( '/\*\s.*\sFETCH\s\(FLAGS \((.*)\)\sUID\s(.*)\)/U', $response, $matches );
2035
+                    $parts = explode( ' ', $matches[1] );
2036
+                    $flags[intval( $matches[2] )] = $parts;
2037
+                }
2038
+                else
2039
+                {
2040
+                    preg_match( '/\*\s(.*)\sFETCH\s\(FLAGS \((.*)\)/U', $response, $matches );
2041
+                    $parts = explode( ' ', $matches[2] );
2042
+                    $flags[intval( $matches[1] )] = $parts;
2043
+                }
2044
+            }
2045
+            $response = trim( $this->connection->getLine() );
2046
+        }
2047
+
2048
+        if ( $this->responseType( $response ) != self::RESPONSE_OK )
2049
+        {
2050
+            throw new ezcMailTransportException( "The IMAP server could not fetch flags for the messages '{$messages}': {$response}." );
2051
+        }
2052
+        return $flags;
2053
+    }
2054
+
2055
+    /**
2056
+     * Sets $flag on $messages.
2057
+     *
2058
+     * This method supports unique IDs instead of message numbers. See
2059
+     * {@link ezcMailImapTransportOptions} for how to enable unique IDs
2060
+     * referencing.
2061
+     *
2062
+     * $messages can be:
2063
+     *  - a single message number (eg. 1)
2064
+     *  - a message range (eg. 1:4)
2065
+     *  - a message list (eg. 1,2,4)
2066
+     *
2067
+     * $flag can be one of:
2068
+     *  - ANSWERED   - message has been answered
2069
+     *  - DELETED    - message is marked to be deleted by later EXPUNGE
2070
+     *  - DRAFT      - message is marked as a draft
2071
+     *  - FLAGGED    - message is "flagged" for urgent/special attention
2072
+     *  - SEEN       - message has been read
2073
+     *
2074
+     * This function automatically adds the '\' in front of the flag when
2075
+     * calling the server command.
2076
+     *
2077
+     * Before calling this method, a connection to the IMAP server must be
2078
+     * established and a user must be authenticated successfully, and a mailbox
2079
+     * must be selected.
2080
+     *
2081
+     * Example:
2082
+     * <code>
2083
+     * $imap = new ezcMailImapTransport( 'imap.example.com' );
2084
+     * $imap->authenticate( 'username', 'password' );
2085
+     * $imap->selectMailbox( 'mailbox' ); // Inbox or another mailbox
2086
+     *
2087
+     * $imap->setFlag( '1:4', 'DRAFT' );
2088
+     * </code>
2089
+     *
2090
+     * @throws ezcMailTransportException
2091
+     *         if a mailbox is not selected
2092
+     *         or if the server sent a negative response
2093
+     *         or if $flag is not valid
2094
+     * @param string $messages
2095
+     * @param string $flag
2096
+     * @return bool
2097
+     */
2098
+    public function setFlag( $messages, $flag )
2099
+    {
2100
+        $uid = ( $this->options->uidReferencing ) ? self::UID : self::NO_UID;
2101
+
2102
+        if ( $this->state != self::STATE_SELECTED )
2103
+        {
2104
+            throw new ezcMailTransportException( "Can't call setFlag() when a mailbox is not selected." );
2105
+        }
2106
+
2107
+        $flag = $this->normalizeFlag( $flag );
2108
+        if ( in_array( $flag, self::$basicFlags ) )
2109
+        {
2110
+            $tag = $this->getNextTag();
2111
+            $this->connection->sendData( "{$tag} {$uid}STORE {$messages} +FLAGS (\\{$flag})" );
2112
+            $response = trim( $this->getResponse( $tag ) );
2113
+            if ( $this->responseType( $response ) != self::RESPONSE_OK )
2114
+            {
2115
+                throw new ezcMailTransportException( "The IMAP server could not set flag '{$flag}' on the messages '{$messages}': {$response}." );
2116
+            }
2117
+        }
2118
+        else
2119
+        {
2120
+            throw new ezcMailTransportException( "Flag '{$flag}' is not allowed for setting." );
2121
+        }
2122
+        return true;
2123
+    }
2124
+
2125
+    /**
2126
+     * Clears $flag from $messages.
2127
+     *
2128
+     * This method supports unique IDs instead of message numbers. See
2129
+     * {@link ezcMailImapTransportOptions} for how to enable unique IDs
2130
+     * referencing.
2131
+     *
2132
+     * $messages can be:
2133
+     *  - a single message number (eg. '1')
2134
+     *  - a message range (eg. '1:4')
2135
+     *  - a message list (eg. '1,2,4')
2136
+     *
2137
+     * $flag can be one of:
2138
+     *  - ANSWERED   - message has been answered
2139
+     *  - DELETED    - message is marked to be deleted by later EXPUNGE
2140
+     *  - DRAFT      - message is marked as a draft
2141
+     *  - FLAGGED    - message is "flagged" for urgent/special attention
2142
+     *  - SEEN       - message has been read
2143
+     *
2144
+     * This function automatically adds the '\' in front of the flag when
2145
+     * calling the server command.
2146
+     *
2147
+     * Before calling this method, a connection to the IMAP server must be
2148
+     * established and a user must be authenticated successfully, and a mailbox
2149
+     * must be selected.
2150
+     *
2151
+     * Example:
2152
+     * <code>
2153
+     * $imap = new ezcMailImapTransport( 'imap.example.com' );
2154
+     * $imap->authenticate( 'username', 'password' );
2155
+     * $imap->selectMailbox( 'mailbox' ); // Inbox or another mailbox
2156
+     *
2157
+     * $imap->clearFlag( '1:4', 'DRAFT' );
2158
+     * </code>
2159
+     *
2160
+     * @throws ezcMailTransportException
2161
+     *         if a mailbox is not selected
2162
+     *         or if the server sent a negative response
2163
+     *         or if $flag is not valid
2164
+     * @param string $messages
2165
+     * @param string $flag
2166
+     * @return bool
2167
+     */
2168
+    public function clearFlag( $messages, $flag )
2169
+    {
2170
+        $uid = ( $this->options->uidReferencing ) ? self::UID : self::NO_UID;
2171
+
2172
+        if ( $this->state != self::STATE_SELECTED )
2173
+        {
2174
+            throw new ezcMailTransportException( "Can't call clearFlag() when a mailbox is not selected." );
2175
+        }
2176
+
2177
+        $flag = $this->normalizeFlag( $flag );
2178
+        if ( in_array( $flag, self::$basicFlags ) )
2179
+        {
2180
+            $tag = $this->getNextTag();
2181
+            $this->connection->sendData( "{$tag} {$uid}STORE {$messages} -FLAGS (\\{$flag})" );
2182
+            $response = trim( $this->getResponse( $tag ) );
2183
+            if ( $this->responseType( $response ) != self::RESPONSE_OK )
2184
+            {
2185
+                throw new ezcMailTransportException( "The IMAP server could not clear flag '{$flag}' on the messages '{$messages}': {$response}." );
2186
+            }
2187
+        }
2188
+        else
2189
+        {
2190
+            throw new ezcMailTransportException( "Flag '{$flag}' is not allowed for clearing." );
2191
+        }
2192
+        return true;
2193
+    }
2194
+
2195
+    /**
2196
+     * Returns an array of message numbers from the selected mailbox which have a
2197
+     * certain flag set.
2198
+     *
2199
+     * This method supports unique IDs instead of message numbers. See
2200
+     * {@link ezcMailImapTransportOptions} for how to enable unique IDs
2201
+     * referencing.
2202
+     *
2203
+     * $flag can be one of:
2204
+     *
2205
+     * Basic flags:
2206
+     *  - ANSWERED   - message has been answered
2207
+     *  - DELETED    - message is marked to be deleted by later EXPUNGE
2208
+     *  - DRAFT      - message is marked as a draft
2209
+     *  - FLAGGED    - message is "flagged" for urgent/special attention
2210
+     *  - RECENT     - message is recent
2211
+     *  - SEEN       - message has been read
2212
+     *
2213
+     * Opposites of the above flags:
2214
+     *  - UNANSWERED
2215
+     *  - UNDELETED
2216
+     *  - UNDRAFT
2217
+     *  - UNFLAGGED
2218
+     *  - OLD
2219
+     *  - UNSEEN
2220
+     *
2221
+     * Composite flags:
2222
+     *  - NEW        - equivalent to RECENT + UNSEEN
2223
+     *  - ALL        - all the messages
2224
+     *
2225
+     * The returned array is something like this:
2226
+     * <code>
2227
+     *   array( 0 => 1, 1 => 5 );
2228
+     * </code>
2229
+     *
2230
+     * Before calling this method, a connection to the IMAP server must be
2231
+     * established and a user must be authenticated successfully, and a mailbox
2232
+     * must be selected.
2233
+     *
2234
+     * @throws ezcMailTransportException
2235
+     *         if a mailbox is not selected
2236
+     *         or if the server sent a negative response
2237
+     *         or if $flag is not valid
2238
+     * @param string $flag
2239
+     * @return array(int)
2240
+     */
2241
+    protected function searchByFlag( $flag )
2242
+    {
2243
+        $uid = ( $this->options->uidReferencing ) ? self::UID : self::NO_UID;
2244
+
2245
+        if ( $this->state != self::STATE_SELECTED &&
2246
+             $this->state != self::STATE_SELECTED_READONLY )
2247
+        {
2248
+            throw new ezcMailTransportException( "Can't call searchByFlag() on the IMAP transport when a mailbox is not selected." );
2249
+        }
2250
+
2251
+        $matchingMessages = array();
2252
+        $flag = $this->normalizeFlag( $flag );
2253
+        if ( in_array( $flag, self::$extendedFlags ) )
2254
+        {
2255
+            $tag = $this->getNextTag();
2256
+            $this->connection->sendData( "{$tag} {$uid}SEARCH ({$flag})" );
2257
+            $response = $this->getResponse( '* SEARCH' );
2258
+
2259
+            if ( strpos( $response, '* SEARCH' ) !== false )
2260
+            {
2261
+                $ids = substr( trim( $response ), 9 );
2262
+                if ( trim( $ids ) !== "" )
2263
+                {
2264
+                    $matchingMessages = explode( ' ', $ids );
2265
+                }
2266
+            }
2267
+            $response = trim( $this->getResponse( $tag, $response ) );
2268
+            if ( $this->responseType( $response ) != self::RESPONSE_OK )
2269
+            {
2270
+                throw new ezcMailTransportException( "The IMAP server could not search the messages by flags: {$response}." );
2271
+            }
2272
+        }
2273
+        else
2274
+        {
2275
+            throw new ezcMailTransportException( "Flag '{$flag}' is not allowed for searching." );
2276
+        }
2277
+        return $matchingMessages;
2278
+    }
2279
+
2280
+    /**
2281
+     * Sends a NOOP command to the server, use it to keep the connection alive.
2282
+     *
2283
+     * Before calling this method, a connection to the IMAP server must be
2284
+     * established.
2285
+     *
2286
+     * @throws ezcMailTransportException
2287
+     *         if there was no connection to the server
2288
+     *         or if the server sent a negative response
2289
+     */
2290
+    public function noop()
2291
+    {
2292
+        if ( $this->state != self::STATE_NOT_AUTHENTICATED &&
2293
+             $this->state != self::STATE_AUTHENTICATED &&
2294
+             $this->state != self::STATE_SELECTED &&
2295
+             $this->state != self::STATE_SELECTED_READONLY )
2296
+        {
2297
+            throw new ezcMailTransportException( "Can not issue NOOP command if not connected." );
2298
+        }
2299
+
2300
+        $tag = $this->getNextTag();
2301
+        $this->connection->sendData( "{$tag} NOOP" );
2302
+        $response = trim( $this->getResponse( $tag ) );
2303
+        if ( $this->responseType( $response ) != self::RESPONSE_OK )
2304
+        {
2305
+            throw new ezcMailTransportException( "NOOP failed: {$response}." );
2306
+        }
2307
+    }
2308
+
2309
+    /**
2310
+     * Returns an array with the capabilities of the IMAP server.
2311
+     *
2312
+     * The returned array will be something like this:
2313
+     * <code>
2314
+     *   array( 'IMAP4rev1', 'SASL-IR SORT', 'THREAD=REFERENCES', 'MULTIAPPEND',
2315
+     *          'UNSELECT', 'LITERAL+', 'IDLE', 'CHILDREN', 'NAMESPACE',
2316
+     *          'LOGIN-REFERRALS'
2317
+     *        );
2318
+     * </code>
2319
+     *
2320
+     * Before calling this method, a connection to the IMAP server must be
2321
+     * established.
2322
+     *
2323
+     * @throws ezcMailTransportException
2324
+     *         if there was no connection to the server
2325
+     *         or if the server sent a negative response
2326
+     * @return array(string)
2327
+     */
2328
+    public function capability()
2329
+    {
2330
+        if ( $this->state != self::STATE_NOT_AUTHENTICATED &&
2331
+             $this->state != self::STATE_AUTHENTICATED &&
2332
+             $this->state != self::STATE_SELECTED &&
2333
+             $this->state != self::STATE_SELECTED_READONLY )
2334
+        {
2335
+            throw new ezcMailTransportException( "Trying to request capability when not connected to server." );
2336
+        }
2337
+
2338
+        $tag = $this->getNextTag();
2339
+        $this->connection->sendData( "{$tag} CAPABILITY" );
2340
+
2341
+        $response = $this->connection->getLine();
2342
+        while ( $this->responseType( $response ) != self::RESPONSE_UNTAGGED &&
2343
+                strpos( $response, '* CAPABILITY ' ) === false )
2344
+        {
2345
+            $response = $this->connection->getLine();
2346
+        }
2347
+        $result = trim( $response );
2348
+
2349
+        $response = trim( $this->getResponse( $tag ) );
2350
+        if ( $this->responseType( $response ) != self::RESPONSE_OK )
2351
+        {
2352
+            throw new ezcMailTransportException( "The IMAP server responded negative to the CAPABILITY command: {$response}." );
2353
+        }
2354
+
2355
+        return explode( ' ', str_replace( '* CAPABILITY ', '', $result ) );
2356
+    }
2357
+
2358
+    /**
2359
+     * Sends an EXPUNGE command to the server.
2360
+     *
2361
+     * This method permanently deletes the messages marked for deletion by
2362
+     * the method {@link delete()}.
2363
+     *
2364
+     * Before calling this method, a connection to the IMAP server must be
2365
+     * established and a user must be authenticated successfully, and a mailbox
2366
+     * must be selected.
2367
+     *
2368
+     * @throws ezcMailTransportException
2369
+     *         if a mailbox was not selected
2370
+     *         or if the server sent a negative response
2371
+     */
2372
+    public function expunge()
2373
+    {
2374
+        if ( $this->state != self::STATE_SELECTED )
2375
+        {
2376
+            throw new ezcMailTransportException( "Can not issue EXPUNGE command if a mailbox is not selected." );
2377
+        }
2378
+
2379
+        $tag = $this->getNextTag();
2380
+        $this->connection->sendData( "{$tag} EXPUNGE" );
2381
+        $response = trim( $this->getResponse( $tag ) );
2382
+        if ( $this->responseType( $response ) != self::RESPONSE_OK )
2383
+        {
2384
+            throw new ezcMailTransportException( "EXPUNGE failed: {$response}." );
2385
+        }
2386
+    }
2387
+
2388
+    /**
2389
+     * Appends $mail to the $mailbox mailbox.
2390
+     *
2391
+     * Use this method to create email messages in a mailbox such as Sent or
2392
+     * Draft.
2393
+     *
2394
+     * $flags is an array of flags to be set to the $mail (if provided):
2395
+     *
2396
+     * $flag can be one of:
2397
+     *  - ANSWERED   - message has been answered
2398
+     *  - DELETED    - message is marked to be deleted by later EXPUNGE
2399
+     *  - DRAFT      - message is marked as a draft
2400
+     *  - FLAGGED    - message is "flagged" for urgent/special attention
2401
+     *  - SEEN       - message has been read
2402
+     *
2403
+     * This function automatically adds the '\' in front of each flag when
2404
+     * calling the server command.
2405
+     *
2406
+     * Before calling this method, a connection to the IMAP server must be
2407
+     * established and a user must be authenticated successfully.
2408
+     *
2409
+     * @throws ezcMailTransportException
2410
+     *         if user is not authenticated
2411
+     *         or if the server sent a negative response
2412
+     *         or if $mailbox does not exists
2413
+     * @param string $mailbox
2414
+     * @param string $mail
2415
+     * @param array(string) $flags
2416
+     */
2417
+    public function append( $mailbox, $mail, $flags = null )
2418
+    {
2419
+        if ( $this->state != self::STATE_AUTHENTICATED &&
2420
+             $this->state != self::STATE_SELECTED &&
2421
+             $this->state != self::STATE_SELECTED_READONLY )
2422
+        {
2423
+            throw new ezcMailTransportException( "Can't call append() if not authenticated." );
2424
+        }
2425
+
2426
+        $tag = $this->getNextTag();
2427
+        $mailSize = strlen( $mail );
2428
+        if ( !is_null( $flags ) )
2429
+        {
2430
+            for ( $i = 0; $i < count( $flags ); $i++ )
2431
+            {
2432
+                $flags[$i] = '\\' . $this->normalizeFlag( $flags[$i] );
2433
+            }
2434
+            $flagList = implode( ' ', $flags );
2435
+            $command = "{$tag} APPEND {$mailbox} ({$flagList}) {{$mailSize}}";
2436
+        }
2437
+        else
2438
+        {
2439
+            $command = "{$tag} APPEND {$mailbox} {{$mailSize}}";
2440
+        }
2441
+
2442
+        $this->connection->sendData( $command );
2443
+        $response = trim( $this->connection->getLine() );
2444
+
2445
+        if ( strpos( $response, 'TRYCREATE' ) !== false )
2446
+        {
2447
+            throw new ezcMailTransportException( "Mailbox does not exist: {$response}." );
2448
+        }
2449
+
2450
+        if ( $this->responseType( $response ) == self::RESPONSE_FEEDBACK )
2451
+        {
2452
+            $this->connection->sendData( $mail );
2453
+            $response = trim( $this->getResponse( $tag ) );
2454
+            if ( $this->responseType( $response ) != self::RESPONSE_OK )
2455
+            {
2456
+                throw new ezcMailTransportException( "The IMAP server could not append message to mailbox '{$mailbox}': {$response}." );
2457
+            }
2458
+        }
2459
+        elseif ( $this->responseType( $response ) != self::RESPONSE_OK )
2460
+        {
2461
+            throw new ezcMailTransportException( "The IMAP server could not append message to mailbox '{$mailbox}': {$response}." );
2462
+        }
2463
+    }
2464
+
2465
+    /**
2466
+     * Clears $flag of unwanted characters and makes it uppercase.
2467
+     *
2468
+     * @param string $flag
2469
+     * @return string
2470
+     */ 
2471
+    protected function normalizeFlag( $flag )
2472
+    {
2473
+        $flag = strtoupper( $flag );
2474
+        $flag = str_replace( '\\', '', $flag );
2475
+        return trim( $flag );
2476
+    }
2477
+
2478
+    /**
2479
+     * Sorts message numbers array $messages by the specified $sortCriteria.
2480
+     *
2481
+     * This method supports unique IDs instead of message numbers. See
2482
+     * {@link ezcMailImapTransportOptions} for how to enable unique IDs
2483
+     * referencing.
2484
+     *
2485
+     * $messages is an array of message numbers, for example:
2486
+     * <code>
2487
+     *   array( 1, 2, 4 );
2488
+     * </code>
2489
+     *
2490
+     * $sortCriteria is an email header like: Subject, To, From, Date, Sender.
2491
+     *
2492
+     * The sorting is done with the php function natcasesort().
2493
+     *
2494
+     * Before calling this method, a connection to the IMAP server must be
2495
+     * established and a user must be authenticated successfully, and a mailbox
2496
+     * must be selected.
2497
+     *
2498
+     * @throws ezcMailTransportException
2499
+     *         if a mailbox is not selected
2500
+     *         or if the server sent a negative response
2501
+     *         or if the array $messages is empty
2502
+     * @param array(int) $messages
2503
+     * @param string $sortCriteria
2504
+     * @param bool $reverse
2505
+     * @return array(string)
2506
+     */
2507
+    protected function sort( $messages, $sortCriteria, $reverse = false )
2508
+    {
2509
+        $uid = ( $this->options->uidReferencing ) ? self::UID : self::NO_UID;
2510
+
2511
+        if ( $this->state != self::STATE_SELECTED &&
2512
+             $this->state != self::STATE_SELECTED_READONLY )
2513
+        {
2514
+            throw new ezcMailTransportException( "Can't call sort() on the IMAP transport when a mailbox is not selected." );
2515
+        }
2516
+
2517
+        $result = array();
2518
+        $query = ucfirst( strtolower( $sortCriteria ) );
2519
+        $messageNumbers = implode( ',', $messages );
2520
+
2521
+        $tag = $this->getNextTag();
2522
+        $this->connection->sendData( "{$tag} {$uid}FETCH {$messageNumbers} (BODY.PEEK[HEADER.FIELDS ({$query})])" );
2523
+
2524
+        $response = trim( $this->connection->getLine() );
2525
+        while ( strpos( $response, $tag ) === false )
2526
+        {
2527
+            if ( strpos( $response, ' FETCH (' ) !== false )
2528
+            {
2529
+                if ( $this->options->uidReferencing )
2530
+                {
2531
+                    preg_match('/^\* [0-9]+ FETCH \(UID ([0-9]+)/', $response, $matches );
2532
+                }
2533
+                else
2534
+                {
2535
+                    preg_match('/^\* ([0-9]+) FETCH/', $response, $matches );
2536
+                }
2537
+                $messageNumber = $matches[1];
2538
+            }
2539
+
2540
+            if ( strpos( $response, $query ) !== false )
2541
+            {
2542
+                $strippedResponse = trim( trim( str_replace( "{$query}: ", '', $response ) ), '"' );
2543
+                switch ( $query )
2544
+                {
2545
+                    case 'Date':
2546
+                        $strippedResponse = strtotime( $strippedResponse );
2547
+                        break;
2548
+                    case 'Subject':
2549
+                    case 'From':
2550
+                    case 'Sender':
2551
+                    case 'To':
2552
+                        $strippedResponse = ezcMailTools::mimeDecode( $strippedResponse );
2553
+                        break;
2554
+                    default:
2555
+                        break;
2556
+                }
2557
+                $result[$messageNumber] = $strippedResponse;
2558
+            }
2559
+
2560
+            // in case the mail doesn't have the $sortCriteria header (like junk mail missing Subject header)
2561
+            if ( strpos( $response, ')' ) !== false && !isset( $result[$messageNumber] ) )
2562
+            {
2563
+                $result[$messageNumber] = '';
2564
+            }
2565
+
2566
+            $response = trim( $this->connection->getLine() );
2567
+        }
2568
+
2569
+        if ( $this->responseType( $response ) != self::RESPONSE_OK )
2570
+        {
2571
+            throw new ezcMailTransportException( "The IMAP server could not sort the messages: {$response}." );
2572
+        }
2573
+
2574
+        if ( $reverse === true )
2575
+        {
2576
+            natcasesort( $result );
2577
+            $result = array_reverse( $result, true );
2578
+        }
2579
+        else
2580
+        {
2581
+            natcasesort( $result );
2582
+        }
2583
+        return $result;
2584
+    }
2585
+
2586
+    /**
2587
+     * Parses $line to return the response code.
2588
+     *
2589
+     * Returns one of the following:
2590
+     *  - {@link RESPONSE_OK}
2591
+     *  - {@link RESPONSE_NO}
2592
+     *  - {@link RESPONSE_BAD}
2593
+     *  - {@link RESPONSE_UNTAGGED}
2594
+     *  - {@link RESPONSE_FEEDBACK}
2595
+     *
2596
+     * @throws ezcMailTransportException
2597
+     *         if the IMAP response ($line) is not recognized
2598
+     * @param string $line
2599
+     * @return int
2600
+     */
2601
+    protected function responseType( $line )
2602
+    {
2603
+        if ( strpos( $line, 'OK ' ) !== false && strpos( $line, 'OK ' ) == 6 )
2604
+        {
2605
+            return self::RESPONSE_OK;
2606
+        }
2607
+        if ( strpos( $line, 'NO ' ) !== false && strpos( $line, 'NO ' ) == 6 )
2608
+        {
2609
+            return self::RESPONSE_NO;
2610
+        }
2611
+        if ( strpos( $line, 'BAD ' ) !== false && strpos( $line, 'BAD ' ) == 6 )
2612
+        {
2613
+            return self::RESPONSE_BAD;
2614
+        }
2615
+        if ( strpos( $line, '* ' ) !== false && strpos( $line, '* ' ) == 0 )
2616
+        {
2617
+            return self::RESPONSE_UNTAGGED;
2618
+        }
2619
+        if ( strpos( $line, '+ ' ) !== false && strpos( $line, '+ ' ) == 0 )
2620
+        {
2621
+            return self::RESPONSE_FEEDBACK;
2622
+        }
2623
+        throw new ezcMailTransportException( "Unrecognized IMAP response in line: {$line}" );
2624
+    }
2625
+
2626
+    /**
2627
+     * Reads the responses from the server until encountering $tag.
2628
+     *
2629
+     * In IMAP, each command sent by the client is prepended with a
2630
+     * alphanumeric tag like 'A1234'. The server sends the response
2631
+     * to the client command as lines, and the last line in the response
2632
+     * is prepended with the same tag, and it contains the status of
2633
+     * the command completion ('OK', 'NO' or 'BAD').
2634
+     *
2635
+     * Sometimes the server sends alerts and response lines from other
2636
+     * commands before sending the tagged line, so this method just
2637
+     * reads all the responses until it encounters $tag.
2638
+     *
2639
+     * It returns the tagged line to be processed by the calling method.
2640
+     *
2641
+     * If $response is specified, then it will not read the response
2642
+     * from the server before searching for $tag in $response.
2643
+     *
2644
+     * Before calling this method, a connection to the IMAP server must be
2645
+     * established.
2646
+     *
2647
+     * @param string $tag
2648
+     * @param string $response
2649
+     * @return string
2650
+     */
2651
+    protected function getResponse( $tag, $response = null )
2652
+    {
2653
+        if ( is_null( $response ) )
2654
+        {
2655
+            $response = $this->connection->getLine();
2656
+        }
2657
+        while ( strpos( $response, $tag ) === false )
2658
+        {
2659
+            if ( strpos( $response, ' BAD ' ) !== false ||
2660
+                 strpos( $response, ' NO ' ) !== false )
2661
+            {
2662
+                break;
2663
+            }
2664
+            $response = $this->connection->getLine();
2665
+        }
2666
+        return $response;
2667
+    }
2668
+
2669
+    /**
2670
+     * Generates the next IMAP tag to prepend to client commands.
2671
+     *
2672
+     * The structure of the IMAP tag is Axxxx, where:
2673
+     *  - A is a letter (uppercase for conformity)
2674
+     *  - x is a digit from 0 to 9
2675
+     *
2676
+     * example of generated tag: T5439
2677
+     *
2678
+     * It uses the class variable $this->currentTag.
2679
+     *
2680
+     * Everytime it is called, the tag increases by 1.
2681
+     *
2682
+     * If it reaches the last tag, it wraps around to the first tag.
2683
+     *
2684
+     * By default, the first generated tag is A0001.
2685
+     *
2686
+     * @return string
2687
+     */
2688
+    protected function getNextTag()
2689
+    {
2690
+        $tagLetter = substr( $this->currentTag, 0, 1 );
2691
+        $tagNumber = intval( substr( $this->currentTag, 1 ) );
2692
+        $tagNumber++;
2693
+        if ( $tagLetter == 'Z' && $tagNumber == 10000 )
2694
+        {
2695
+            $tagLetter = 'A';
2696
+            $tagNumber = 1;
2697
+        }
2698
+        if ( $tagNumber == 10000 )
2699
+        {
2700
+            $tagLetter++;
2701
+            $tagNumber = 0;
2702
+        }
2703
+        $this->currentTag = $tagLetter . sprintf( "%04s", $tagNumber );
2704
+        return $this->currentTag;
2705
+    }
2706
+
2707
+    /**
2708
+     * Returns the size of a FETCH section in bytes.
2709
+     *
2710
+     * The section header looks like: * id FETCH (BODY[TEXT] {size}
2711
+     * where size is the size in bytes and id is the message number or ID.
2712
+     *
2713
+     * Example: for " * 2 FETCH (BODY[TEXT] {377}" this function returns 377.
2714
+     *
2715
+     * @return int
2716
+     */
2717
+    protected function getMessageSectionSize( $response )
2718
+    {
2719
+        $size = 0;
2720
+        preg_match( '/\{(.*)\}/', $response, $matches );
2721
+        if ( count( $matches ) > 0 )
2722
+        {
2723
+            $size = (int) $matches[1];
2724
+        }
2725
+        return $size;
2726
+    }
2727
+}
2728
+?>
... ...
@@ -0,0 +1,163 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailMboxSet class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * ezcMailMboxSet is an internal class that fetches a series of mail
13
+ * from an mbox file.
14
+ *
15
+ * The mbox set is constructed from a file pointer and iterates over all the
16
+ * messages in an mbox file.
17
+ *
18
+ * @package Mail
19
+ * @version 1.7.1
20
+ */
21
+class ezcMailMboxSet implements ezcMailParserSet
22
+{
23
+    /**
24
+     * Holds the filepointer to the mbox
25
+     *
26
+     * @var resource(filepointer)
27
+     */
28
+    private $fh;
29
+
30
+    /**
31
+     * This variable is true if there is more data in the mail that is being fetched.
32
+     *
33
+     * It is false if there is no mail being fetched currently or if all the data of the current mail
34
+     * has been fetched.
35
+     *
36
+     * @var bool
37
+     */
38
+    private $hasMoreMailData = false;
39
+
40
+    /**
41
+     * Records whether we initialized the mbox or not
42
+     *
43
+     * @var bool
44
+     */
45
+    private $initialized = false;
46
+
47
+    /**
48
+     * Holds the current message positions.
49
+     *
50
+     * @var array(int=>int)
51
+     */
52
+    private $messagePositions = array();
53
+
54
+    /**
55
+     * Holds the current message position in array $messagePositions.
56
+     *
57
+     * @var int
58
+     */
59
+    private $currentMesssagePosition = 0;
60
+
61
+    /**
62
+     * Constructs a new mbox parser set.
63
+     *
64
+     * @throws ezcBaseFileIoException
65
+     *         if $fh is not a filepointer resource.
66
+     * @param resource(filepointer) $fh
67
+     * @param array(int=>int) $messages
68
+     */
69
+    public function __construct( $fh, array $messages )
70
+    {
71
+        if ( !is_resource( $fh ) || get_resource_type( $fh ) != 'stream' )
72
+        {
73
+            throw new ezcBaseFileIoException( 'filepointer', ezcBaseFileException::READ, "The passed filepointer is not a stream resource." );
74
+        }
75
+        $this->fh = $fh;
76
+        $this->initialized = false;
77
+        $this->hasMoreMailData = true;
78
+        $this->messagePositions = $messages;
79
+        $this->currentMessagePosition = 0;
80
+    }
81
+
82
+    /**
83
+     * Returns true if all the data has been fetched from this set.
84
+     *
85
+     * @return bool
86
+     */
87
+    public function isFinished()
88
+    {
89
+        return feof( $this->fh ) ? true : false;
90
+    }
91
+
92
+    /**
93
+     * Returns one line of data from the current mail in the set
94
+     * including the ending linebreak.
95
+     *
96
+     * Null is returned if there is no current mail in the set or
97
+     * the end of the mail is reached.
98
+     *
99
+     * @return string
100
+     */
101
+    public function getNextLine()
102
+    {
103
+        if ( $this->currentMessagePosition === 0 )
104
+        {
105
+            $this->nextMail();
106
+        }
107
+        if ( $this->hasMoreMailData )
108
+        {
109
+            $data = fgets( $this->fh );
110
+            if ( feof( $this->fh ) || substr( $data, 0, 5 ) === "From " )
111
+            {
112
+                $this->hasMoreMailData = false;
113
+
114
+                return null;
115
+            }
116
+            return $data;
117
+        }
118
+        return null;
119
+    }
120
+
121
+    /**
122
+     * Returns whether the set contains mails.
123
+     *
124
+     * @return bool
125
+     */
126
+    public function hasData()
127
+    {
128
+        return ( $this->hasMoreMailData === true && count( $this->messagePositions ) > 0 );
129
+    }
130
+
131
+    /**
132
+     * Moves the set to the next mail and returns true upon success.
133
+     *
134
+     * False is returned if there are no more mail in the set.
135
+     *
136
+     * @return bool
137
+     */
138
+    public function nextMail()
139
+    {
140
+        // seek to next message if available
141
+        if ( $this->currentMessagePosition > count( $this->messagePositions ) - 1 )
142
+        {
143
+            $this->hasMoreMailData = false;
144
+            return false;
145
+        }
146
+        fseek( $this->fh, $this->messagePositions[$this->currentMessagePosition] );
147
+        $this->currentMessagePosition++;
148
+        $this->hasMoreMailData = true;
149
+
150
+        return true;
151
+    }
152
+
153
+    /**
154
+     * Returns message numbers for current set.
155
+     *
156
+     * @return array(int=>int)
157
+     */
158
+    public function getMessageNumbers()
159
+    {
160
+        return array_keys( $this->messagePositions );
161
+    }
162
+}
163
+?>
... ...
@@ -0,0 +1,195 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailMboxTransport class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * ezcMailMboxTransport implements mail retrieval from an mbox file.
13
+ *
14
+ * The mbox set is constructed from a file pointer and iterates over all the
15
+ * messages in an mbox file.
16
+ *
17
+ * @package Mail
18
+ * @version 1.7.1
19
+ * @mainclass
20
+ */
21
+class ezcMailMboxTransport
22
+{
23
+    /**
24
+     * Holds the filepointer to the mbox
25
+     *
26
+     * @var resource(filepointer)
27
+     */
28
+    public $fh;
29
+
30
+    /**
31
+     * Constructs the ezcMailMboxTransport object
32
+     *
33
+     * Opens the mbox $fileName.
34
+     *
35
+     * @throws ezcBaseFileNotFoundException
36
+     *         if the mbox file could not be found.
37
+     * @throws ezcBaseFilePermissionException
38
+     *         if the mbox file could be opened for reading.
39
+     * @param string $fileName
40
+     */
41
+    public function __construct( $fileName )
42
+    {
43
+        if ( !file_exists( $fileName ) )
44
+        {
45
+            throw new ezcBaseFileNotFoundException( $fileName, 'mbox' );
46
+        }
47
+        if ( !is_readable( $fileName ) )
48
+        {
49
+            throw new ezcBaseFilePermissionException( $fileName, ezcBaseFileException::READ );
50
+        }
51
+        $this->fh = fopen( $fileName, 'rt' );
52
+    }
53
+
54
+    /**
55
+     * Finds the position of the first message while skipping a possible header.
56
+     *
57
+     * Mbox files can contain a header which does not describe an email
58
+     * message. This method skips over this optional header by checking for a
59
+     * specific From MAILER-DAEMON header.
60
+     *
61
+     * @return int
62
+     */
63
+    private function findFirstMessage()
64
+    {
65
+        $data = fgets( $this->fh );
66
+        fseek( $this->fh, 0 );
67
+        if ( substr( $data, 0, 18 ) === 'From MAILER-DAEMON' )
68
+        {
69
+            return $this->findNextMessage();
70
+        }
71
+        else
72
+        {
73
+            return 0;
74
+        }
75
+    }
76
+
77
+    /**
78
+     * Reads through the Mbox file and stops at the next message.
79
+     *
80
+     * Messages in Mbox files are separated with lines starting with "From "
81
+     * and this function reads to the next "From " marker. It then returns the
82
+     * current posistion in the file. If EOF is detected during reading the
83
+     * function returns false instead.
84
+     *
85
+     * @return int
86
+     */
87
+    private function findNextMessage()
88
+    {
89
+        do
90
+        {
91
+            $data = fgets( $this->fh );
92
+        } while ( !feof( $this->fh ) && substr( $data, 0, 5 ) !== "From " );
93
+
94
+        if ( feof( $this->fh ) )
95
+        {
96
+            return false;
97
+        }
98
+        return ftell( $this->fh );
99
+    }
100
+
101
+    /**
102
+     * This function reads through the whole mbox and returns starting positions of the messages.
103
+     *
104
+     * @return array(int=>int)
105
+     */
106
+    public function listMessages()
107
+    {
108
+        $messages = array();
109
+        fseek( $this->fh, 0 );
110
+        // Skip the first mail as this is the mbox header
111
+        $position = $this->findFirstMessage();
112
+        if ( $position === false )
113
+        {
114
+            return $messages;
115
+        }
116
+        // Continue reading through the rest of the mbox
117
+        do
118
+        {
119
+            $position = $this->findNextMessage();
120
+            if ( $position !== false )
121
+            {
122
+                $messages[] = $position;
123
+            }
124
+        } while ( $position !== false );
125
+
126
+        return $messages;
127
+    }
128
+
129
+    /**
130
+     * Returns an ezcMailMboxSet containing all the messages in the mbox.
131
+     *
132
+     * @return ezcMailMboxSet
133
+     */
134
+    public function fetchAll()
135
+    {
136
+        $messages = $this->listMessages();
137
+        return new ezcMailMboxSet( $this->fh, $messages );
138
+    }
139
+
140
+    /**
141
+     * Returns an ezcMailMboxSet containing only the $number -th message in the mbox.
142
+     *
143
+     * @throws ezcMailNoSuchMessageException
144
+     *         if the message $number is out of range.
145
+     * @param int $number
146
+     * @return ezcMailMboxSet
147
+     */
148
+    public function fetchByMessageNr( $number )
149
+    {
150
+        $messages = $this->listMessages();
151
+        if ( !isset( $messages[$number] ) )
152
+        {
153
+            throw new ezcMailNoSuchMessageException( $number );
154
+        }
155
+        return new ezcMailMboxSet( $this->fh, array( 0 => $messages[$number] ) );
156
+    }
157
+
158
+    /**
159
+     * Returns an ezcMailMboxSet with $count messages starting from $offset.
160
+     *
161
+     * Fetches $count messages starting from the $offset and returns them as a
162
+     * ezcMailMboxSet. If $count is not specified or if it is 0, it fetches
163
+     * all messages starting from the $offset.
164
+     * 
165
+     * @throws ezcMailInvalidLimitException
166
+     *         if $count is negative.
167
+     * @throws ezcMailOffsetOutOfRangeException
168
+     *         if $offset is outside of the existing range of messages.
169
+     * @param int $offset
170
+     * @param int $count
171
+     * @return ezcMailMboxSet
172
+     */
173
+    public function fetchFromOffset( $offset, $count = 0 )
174
+    {
175
+        if ( $count < 0 )
176
+        {
177
+            throw new ezcMailInvalidLimitException( $offset, $count );
178
+        }
179
+        $messages = $this->listMessages();
180
+        if ( !isset( $messages[$offset] ) )
181
+        {
182
+            throw new ezcMailOffsetOutOfRangeException( $offset, $count );
183
+        }
184
+        if ( $count == 0 )
185
+        {
186
+            $range = array_slice( $messages, $offset );
187
+        }
188
+        else
189
+        {
190
+            $range = array_slice( $messages, $offset, $count );
191
+        }
192
+        return new ezcMailMboxSet( $this->fh, $range );
193
+    }
194
+}
195
+?>
... ...
@@ -0,0 +1,65 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailMtaTransport class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * Implementation of the mail transport interface using the system MTA.
13
+ *
14
+ * The system MTA translates to sendmail on most Linux distributions.
15
+ *
16
+ * Qmail insists it should only have "\n" linebreaks and will send
17
+ * garbled messages with the default "\r\n" setting.
18
+ * Use ezcMailTools::setLineBreak( "\n" ) before sending mail to fix this issue.
19
+ *
20
+ * @package Mail
21
+ * @version 1.7.1
22
+ * @mainclass
23
+ */
24
+class ezcMailMtaTransport implements ezcMailTransport
25
+{
26
+    /**
27
+     * Constructs a new ezcMailMtaTransport.
28
+     */
29
+    public function __construct(  )
30
+    {
31
+    }
32
+
33
+    /**
34
+     * Sends the mail $mail using the PHP mail method.
35
+     *
36
+     * Note that a message may not arrive at the destination even though
37
+     * it was accepted for delivery.
38
+     *
39
+     * @throws ezcMailTransportException
40
+     *         if the mail was not accepted for delivery by the MTA.
41
+     * @param ezcMail $mail
42
+     */
43
+    public function send( ezcMail $mail )
44
+    {
45
+        $mail->appendExcludeHeaders( array( 'to', 'subject' ) );
46
+        $headers = rtrim( $mail->generateHeaders() ); // rtrim removes the linebreak at the end, mail doesn't want it.
47
+
48
+        if ( ( count( $mail->to ) + count( $mail->cc ) + count( $mail->bcc ) ) < 1 )
49
+        {
50
+            throw new ezcMailTransportException( 'No recipient addresses found in message header.' );
51
+        }
52
+        $additionalParameters = "";
53
+        if ( isset( $mail->returnPath ) )
54
+        {
55
+            $additionalParameters = "-f{$mail->returnPath->email}";
56
+        }
57
+        $success = mail( ezcMailTools::composeEmailAddresses( $mail->to ),
58
+                         $mail->getHeader( 'Subject' ), $mail->generateBody(), $headers, $additionalParameters );
59
+        if ( $success === false )
60
+        {
61
+            throw new ezcMailTransportException( 'The email could not be sent by sendmail' );
62
+        }
63
+    }
64
+}
65
+?>
... ...
@@ -0,0 +1,21 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailTransportMta class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * This class is deprecated. Use ezcMailMtaTransport instead.
13
+ *
14
+ * @package Mail
15
+ * @version 1.7.1
16
+ * @ignore
17
+ */
18
+class ezcMailTransportMta extends ezcMailMtaTransport
19
+{
20
+}
21
+?>
... ...
@@ -0,0 +1,182 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailPop3Set class.
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * ezcMailPop3Set is an internal class that fetches a series of mail
13
+ * from the pop3 server.
14
+ *
15
+ * The POP3 set works on an existing connection and a list of the messages that
16
+ * the user wants to fetch. The user must accept all the data for each mail for
17
+ * correct behaviour.
18
+ *
19
+ * The set can be parsed with ezcMailParser.
20
+ *
21
+ * @package Mail
22
+ * @version 1.7.1
23
+ */
24
+class ezcMailPop3Set implements ezcMailParserSet
25
+{
26
+    /**
27
+     * Holds the list of messages that the user wants to retrieve from the server.
28
+     *
29
+     * @var array(int)
30
+     */
31
+    private $messages;
32
+
33
+    /**
34
+     * Holds the current message the user is fetching.
35
+     *
36
+     * The variable is null before the first message and false after
37
+     * the last message has been fetched.
38
+     *
39
+     * @var int
40
+     */
41
+    private $currentMessage = null;
42
+
43
+    /**
44
+     * This variable is true if there is more data in the mail that is being
45
+     * fetched.
46
+     *
47
+     * It is false if there is no mail being fetched currently or if all the
48
+     * data of the current mail has been fetched.
49
+     *
50
+     * @var bool
51
+     */
52
+    private $hasMoreMailData = false;
53
+
54
+    /**
55
+     * Holds if mail should be deleted from the server after retrieval.
56
+     *
57
+     * @var bool
58
+     */
59
+    private $deleteFromServer = false;
60
+
61
+    /**
62
+     * Constructs a new POP3 parser set that will fetch the messages $messages.
63
+     *
64
+     * $connection must hold a valid connection to a POP3 server that is ready
65
+     * to retrieve the messages.
66
+     *
67
+     * If $deleteFromServer is set to true the messages will be deleted after
68
+     * retrieval.
69
+     *
70
+     * @throws ezcMailTransportException
71
+     *         if the server sent a negative response
72
+     * @param ezcMailTransportConnection $connection
73
+     * @param array(ezcMail) $messages
74
+     * @param bool $deleteFromServer
75
+     */
76
+    public function __construct( ezcMailTransportConnection $connection, array $messages, $deleteFromServer = false )
77
+    {
78
+        $this->connection = $connection;
79
+        $this->messages = $messages;
80
+        $this->deleteFromServer = $deleteFromServer;
81
+    }
82
+
83
+    /**
84
+     * Returns true if all the data has been fetched from this set.
85
+     *
86
+     * @return bool
87
+     */
88
+    public function isFinished()
89
+    {
90
+        return $this->currentMessage === false ? true : false;
91
+    }
92
+
93
+    /**
94
+     * Returns one line of data from the current mail in the set.
95
+     *
96
+     * Null is returned if there is no current mail in the set or the end of the
97
+     * mail is reached.
98
+     *
99
+     * @return string
100
+     */
101
+    public function getNextLine()
102
+    {
103
+        if ( $this->currentMessage === null )
104
+        {
105
+            $this->nextMail();
106
+        }
107
+        if ( $this->hasMoreMailData )
108
+        {
109
+            $data = $this->connection->getLine();
110
+            if ( rtrim( $data ) === "." )
111
+            {
112
+                $this->hasMoreMailData = false;
113
+                // remove the mail if required by the user.
114
+                if ( $this->deleteFromServer == true )
115
+                {
116
+                    $this->connection->sendData( "DELE {$this->currentMessage}" );
117
+                    $response = $this->connection->getLine(); // ignore response
118
+                }
119
+                return null;
120
+            }
121
+            return $data;
122
+        }
123
+        return null;
124
+    }
125
+
126
+    /**
127
+     * Moves the set to the next mail and returns true upon success.
128
+     *
129
+     * False is returned if there are no more mail in the set.
130
+     *
131
+     * @throws ezcMailTransportException
132
+     *         if the server sent a negative response
133
+     * @return bool
134
+     */
135
+    public function nextMail()
136
+    {
137
+        if ( $this->currentMessage === null )
138
+        {
139
+            $this->currentMessage = reset( $this->messages );
140
+        }
141
+        else
142
+        {
143
+            $this->currentMessage = next( $this->messages );
144
+        }
145
+        if ( $this->currentMessage !== false )
146
+        {
147
+            $this->connection->sendData( "RETR {$this->currentMessage}" );
148
+            $response = $this->connection->getLine();
149
+            if ( strpos( $response, "+OK" ) === 0 )
150
+            {
151
+                $this->hasMoreMailData = true;
152
+                return true;
153
+            }
154
+            else
155
+            {
156
+                throw new ezcMailTransportException( "The POP3 server sent a negative reply when requesting mail." );
157
+            }
158
+        }
159
+        return false;
160
+    }
161
+
162
+    /**
163
+     * Returns whether the set has mails.
164
+     *
165
+     * @return bool
166
+     */
167
+    public function hasData()
168
+    {
169
+        return count( $this->messages );
170
+    }
171
+
172
+    /**
173
+     * Returns message numbers from the current set.
174
+     *
175
+     * @return array(int)
176
+     */
177
+    public function getMessageNumbers()
178
+    {
179
+        return $this->messages;
180
+    }
181
+}
182
+?>
... ...
@@ -0,0 +1,854 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailPop3Transport class.
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * The class ezcMailPop3Transport implements functionality for handling POP3
13
+ * mail servers.
14
+ *
15
+ * The implementation supports most of the commands specified in:
16
+ *  - {@link http://www.faqs.org/rfcs/rfc1939.html} (POP3)
17
+ *  - {@link http://www.faqs.org/rfcs/rfc1734.html} (POP3 AUTH)
18
+ *
19
+ * The POP3 server can be in different states. Most POP3 commands require
20
+ * that a connection is established and a user is authenticated.
21
+ *
22
+ * The POP3 transport class allows developers to interface with a POP3 server.
23
+ *
24
+ * Basic commands:
25
+ *  - connect to a POP3 server ({@link __construct()})
26
+ *  - authenticate a user with a username and password ({@link authenticate()})
27
+ *  - disconnect from the POP3 server ({@link disconnect()})
28
+ *
29
+ * Work with message numbers:
30
+ *  - get the message numbers and sizes of all the messages ({@link listMessages()})
31
+ *  - get the message numbers and IDs of all the messages ({@link listUniqueIdentifiers()})
32
+ *  - get the headers of a certain message ({@link top()})
33
+ *  - delete a message ({@link delete()})
34
+ *
35
+ * Work with ezcMailPop3Set sets (parseable with ezcMailParser):
36
+ *  - create a set from all messages ({@link fetchAll()})
37
+ *  - create a set from a certain message ({@link fetchByMessageNr()})
38
+ *  - create a set from a range of messages ({@link fetchFromOffset()})
39
+ *
40
+ * Miscellaneous commands:
41
+ *  - get the status of messages on the server ({@link status()})
42
+ *  - issue a NOOP command to keep the connection alive ({@link noop()})
43
+ *
44
+ * The usual operation with a POP3 server is illustrated by this example:
45
+ * <code>
46
+ * // create a new POP3 transport object by specifying the server name, optional
47
+ * // port and optional SSL mode
48
+ * $options = new ezcMailPop3TransportOptions();
49
+ * $options->ssl = true;
50
+ *
51
+ * $pop3 = new ezcMailPop3Transport( 'pop3.example.com', null, $options );
52
+ *
53
+ * // Authenticate to the POP3 server
54
+ * $pop3->authenticate( 'username', 'password' );
55
+ *
56
+ * // issue commands to the POP3 server
57
+ * // for example get the headers of the first message, which can be
58
+ * // parsed with ezcMailVariableSet and ezcMailParser
59
+ * $headers = $pop3->top( 1 );
60
+ *
61
+ * // see the above list of commands or consult the online documentation for
62
+ * // the full list of commands you can issue to an POP3 server and examples
63
+ *
64
+ * // disconnect from the POP3 server
65
+ * $pop3->disconnect();
66
+ * </code>
67
+ *
68
+ * See {@link ezcMailPop3TransportOptions} for options you can specify for POP3.
69
+ *
70
+ * @todo ignore messages of a certain size?
71
+ * @todo // support for signing?
72
+ *
73
+ * @property ezcMailPop3TransportOptions $options
74
+ *           Holds the options you can set to the POP3 transport.
75
+ *
76
+ * @package Mail
77
+ * @version 1.7.1
78
+ * @mainclass
79
+ */
80
+class ezcMailPop3Transport
81
+{
82
+    /**
83
+     * Internal state set when the POP3 transport is not connected to a server.
84
+     *
85
+     * @access private
86
+     */
87
+    const STATE_NOT_CONNECTED = 1;
88
+
89
+    /**
90
+     * Internal state set when the POP3 transport is connected to the server
91
+     * but no successful authentication has been performed.
92
+     *
93
+     * @access private
94
+     */
95
+    const STATE_AUTHORIZATION = 2;
96
+
97
+    /**
98
+     * Internal state set when the POP3 transport is connected to the server
99
+     * and authenticated.
100
+     *
101
+     * @access private
102
+     */
103
+    const STATE_TRANSACTION = 3;
104
+
105
+    /**
106
+     * Internal state set when the QUIT command has been issued to the POP3 server
107
+     * but before the disconnect has taken place.
108
+     *
109
+     * @access private
110
+     */
111
+    const STATE_UPDATE = 4;
112
+
113
+    /**
114
+     * Plain text authorization.
115
+     */
116
+    const AUTH_PLAIN_TEXT = 1;
117
+
118
+    /**
119
+     * APOP authorization.
120
+     */
121
+    const AUTH_APOP = 2;
122
+
123
+    /**
124
+     * Holds the connection state.
125
+     *
126
+     * $var int {@link STATE_NOT_CONNECTED},
127
+     *          {@link STATE_AUTHORIZATION},
128
+     *          {@link STATE_TRANSACTION} or
129
+     *          {@link STATE_UPDATE}.
130
+     */
131
+    protected $state = self::STATE_NOT_CONNECTED;
132
+
133
+    /**
134
+     * The connection to the POP3 server.
135
+     *
136
+     * @var ezcMailTransportConnection
137
+     */
138
+    protected $connection = null;
139
+
140
+    /**
141
+     * Holds the initial greeting from the POP3 server when connecting.
142
+     *
143
+     * @var string
144
+     */
145
+    protected $greeting = null;
146
+
147
+    /**
148
+     * Options for a POP3 transport connection.
149
+     *
150
+     * @var ezcMailPop3TransportOptions
151
+     */
152
+    private $options;
153
+
154
+    /**
155
+     * Creates a new POP3 transport and connects to the $server at $port.
156
+     *
157
+     * You can specify the $port if the POP3 server is not on the default
158
+     * port 995 (for SSL connections) or 110 (for plain connections). Use the
159
+     * $options parameter to specify an SSL connection.
160
+     *
161
+     * For options you can specify for POP3 see {@link ezcMailPop3TransportOptions}.
162
+     *
163
+     * Example of creating a POP3 transport:
164
+     * <code>
165
+     * // replace with your POP3 server address
166
+     * $pop3 = new ezcMailPop3Transport( 'pop3.example.com' );
167
+     *
168
+     * // if you want to use SSL:
169
+     * $options = new ezcMailPop3TransportOptions();
170
+     * $options->ssl = true;
171
+     *
172
+     * $pop3 = new ezcMailPop3Transport( 'pop3.example.com', null, $options );
173
+     * </code>
174
+     *
175
+     * @throws ezcMailTransportException
176
+     *         if it was not possible to connect to the server
177
+     * @throws ezcBaseExtensionNotFoundException
178
+     *         if trying to use SSL and the extension openssl is not installed
179
+     * @throws ezcBasePropertyNotFoundException
180
+     *         if $options contains a property not defined
181
+     * @throws ezcBaseValueException
182
+     *         if $options contains a property with a value not allowed
183
+     * @param string $server
184
+     * @param int $port
185
+     * @param ezcMailPop3TransportOptions|array(string=>mixed) $options
186
+     */
187
+    public function __construct( $server, $port = null, $options = array() )
188
+    {
189
+        if ( $options instanceof ezcMailPop3TransportOptions )
190
+        {
191
+            $this->options = $options;
192
+        }
193
+        else if ( is_array( $options ) )
194
+        {
195
+            $this->options = new ezcMailPop3TransportOptions( $options );
196
+        }
197
+        else
198
+        {
199
+            throw new ezcBaseValueException( "options", $options, "ezcMailPop3TransportOptions|array" );
200
+        }
201
+
202
+        if ( $port === null )
203
+        {
204
+            $port = ( $this->options->ssl === true ) ? 995 : 110;
205
+        }
206
+        $this->connection = new ezcMailTransportConnection( $server, $port, $this->options );
207
+        $this->greeting = $this->connection->getLine();
208
+        if ( !$this->isPositiveResponse( $this->greeting ) )
209
+        {
210
+            throw new ezcMailTransportException( "The connection to the POP3 server is ok, but a negative response from server was received: '{$this->greeting}'. Try again later." );
211
+        }
212
+        $this->state = self::STATE_AUTHORIZATION;
213
+    }
214
+
215
+    /**
216
+     * Destructs the POP3 transport object.
217
+     *
218
+     * If there is an open connection to the POP3 server it is closed.
219
+     */
220
+    public function __destruct()
221
+    {
222
+        if ( $this->state != self::STATE_NOT_CONNECTED )
223
+        {
224
+            try 
225
+            {
226
+                $this->connection->sendData( 'QUIT' );
227
+                $this->connection->getLine(); // discard
228
+                $this->connection->close();
229
+            }
230
+            catch ( ezcMailTransportException $e )
231
+            {
232
+                // Ignore occuring transport exceptions.
233
+            }
234
+        }
235
+    }
236
+
237
+    /**
238
+     * Sets the value of the property $name to $value.
239
+     *
240
+     * @throws ezcBasePropertyNotFoundException
241
+     *         if the property $name does not exist
242
+     * @throws ezcBaseValueException
243
+     *         if $value is not accepted for the property $name
244
+     * @param string $name
245
+     * @param mixed $value
246
+     * @ignore
247
+     */
248
+    public function __set( $name, $value )
249
+    {
250
+        switch ( $name )
251
+        {
252
+            case 'options':
253
+                if ( !( $value instanceof ezcMailPop3TransportOptions ) )
254
+                {
255
+                    throw new ezcBaseValueException( 'options', $value, 'instanceof ezcMailPop3TransportOptions' );
256
+                }
257
+                $this->options = $value;
258
+                break;
259
+
260
+            default:
261
+                throw new ezcBasePropertyNotFoundException( $name );
262
+        }
263
+    }
264
+
265
+    /**
266
+     * Returns the value of the property $name.
267
+     *
268
+     * @throws ezcBasePropertyNotFoundException
269
+     *         if the property $name does not exist
270
+     * @param string $name
271
+     * @return mixed
272
+     * @ignore
273
+     */
274
+    public function __get( $name )
275
+    {
276
+        switch ( $name )
277
+        {
278
+            case 'options':
279
+                return $this->options;
280
+            
281
+            default:
282
+                throw new ezcBasePropertyNotFoundException( $name );
283
+        }
284
+    }
285
+
286
+    /**
287
+     * Returns true if the property $name is set, otherwise false.
288
+     *
289
+     * @param string $name
290
+     * @return bool
291
+     * @ignore
292
+     */
293
+    public function __isset( $name )
294
+    {
295
+        switch ( $name )
296
+        {
297
+            case 'options':
298
+                return true;
299
+
300
+            default:
301
+                return false;
302
+        }
303
+    }
304
+
305
+    /**
306
+     * Disconnects the transport from the POP3 server.
307
+     */
308
+    public function disconnect()
309
+    {
310
+        if ( $this->state != self::STATE_NOT_CONNECTED )
311
+        {
312
+            $this->connection->sendData( 'QUIT' );
313
+            $this->connection->getLine(); // discard
314
+            $this->state = self::STATE_UPDATE;
315
+
316
+            $this->connection->close();
317
+            $this->connection = null;
318
+            $this->state = self::STATE_NOT_CONNECTED;
319
+        }
320
+    }
321
+
322
+    /**
323
+     * Authenticates the user to the POP3 server with $user and $password.
324
+     *
325
+     * You can choose the authentication method with the $method parameter.
326
+     * The default is to use plaintext username and password (specified in the
327
+     * ezcMailPop3TransportOptions class).
328
+     *
329
+     * This method should be called directly after the construction of this
330
+     * object.
331
+     *
332
+     * Example:
333
+     * <code>
334
+     * // replace with your POP3 server address
335
+     * $pop3 = new ezcMailPop3Transport( 'pop3.example.com' );
336
+     *
337
+     * // replace the values with your username and password for the POP3 server
338
+     * $pop3->authenticate( 'username', 'password' );
339
+     * </code>
340
+     *
341
+     * @throws ezcMailTransportException
342
+     *         if there is no connection to the server
343
+     *         or if already authenticated
344
+     *         or if the authentication method is not accepted by the server
345
+     *         or if the provided username/password combination did not work
346
+     * @param string $user
347
+     * @param string $password
348
+     * @param int $method
349
+     */
350
+    public function authenticate( $user, $password, $method = null )
351
+    {
352
+        if ( $this->state != self::STATE_AUTHORIZATION )
353
+        {
354
+            throw new ezcMailTransportException( "Tried to authenticate when there was no connection or when already authenticated." );
355
+        }
356
+
357
+        if ( is_null( $method ) )
358
+        {
359
+            $method = $this->options->authenticationMethod;
360
+        }
361
+
362
+        if ( $method == self::AUTH_PLAIN_TEXT ) // normal plain text login
363
+        {
364
+            // authenticate ourselves
365
+            $this->connection->sendData( "USER {$user}" );
366
+            $response = $this->connection->getLine();
367
+            if ( !$this->isPositiveResponse( $response ) )
368
+            {
369
+                throw new ezcMailTransportException( "The POP3 server did not accept the username: {$response}." );
370
+            }
371
+            $this->connection->sendData( "PASS {$password}" );
372
+            $response = $this->connection->getLine();
373
+            if ( !$this->isPositiveResponse( $response ) )
374
+            {
375
+                throw new ezcMailTransportException( "The POP3 server did not accept the password: {$response}." );
376
+            }
377
+        }
378
+        else if ( $method == self::AUTH_APOP ) // APOP login
379
+        {
380
+            // fetch the timestamp from the greeting
381
+            $timestamp = '';
382
+            preg_match( '/.*(<.*>).*/',
383
+                        $this->greeting,
384
+                        $timestamp );
385
+            // check if there was a greeting. If not, apop is not supported
386
+            if ( count( $timestamp ) < 2 )
387
+            {
388
+                throw new ezcMailTransportException( "The POP3 server did not accept the APOP login: No greeting." );
389
+            }
390
+
391
+            $hash = md5( $timestamp[1] . $password );
392
+            $this->connection->sendData( "APOP {$user} {$hash}" );
393
+            $response = $this->connection->getLine();
394
+            if ( !$this->isPositiveResponse( $response ) )
395
+            {
396
+                throw new ezcMailTransportException( "The POP3 server did not accept the APOP login: {$response}." );
397
+            }
398
+        }
399
+        else
400
+        {
401
+            throw new ezcMailTransportException( "Invalid authentication method provided." );
402
+        }
403
+        $this->state = self::STATE_TRANSACTION;
404
+    }
405
+
406
+    /**
407
+     * Returns an array of the message numbers on the server and the size of the
408
+     * messages in bytes.
409
+     *
410
+     * The format of the returned array is:
411
+     * <code>
412
+     *   array( message_id => message_size );
413
+     * </code>
414
+     *
415
+     * Example:
416
+     * <code>
417
+     *   array( 2 => 1700, 5 => 1450, 6 => 21043 );
418
+     * </code>
419
+     *
420
+     * Before calling this method, a connection to the POP3 server must be
421
+     * established and a user must be authenticated successfully.
422
+     *
423
+     * @throws ezcMailTransportException
424
+     *         if there was no connection to the server
425
+     *         or if not authenticated
426
+     *         or if the server sent a negative response
427
+     * @return array(int)
428
+     */
429
+    public function listMessages()
430
+    {
431
+        if ( $this->state != self::STATE_TRANSACTION )
432
+        {
433
+            throw new ezcMailTransportException( "Can't call listMessages() on the POP3 transport when not successfully logged in." );
434
+        }
435
+
436
+        // send the command
437
+        $this->connection->sendData( "LIST" );
438
+        $response = $this->connection->getLine();
439
+        if ( !$this->isPositiveResponse( $response ) )
440
+        {
441
+            throw new ezcMailTransportException( "The POP3 server sent a negative response to the LIST command: {$response}." );
442
+        }
443
+
444
+        // fetch the data from the server and prepare it to be returned.
445
+        $messages = array();
446
+        while ( ( $response = $this->connection->getLine( true ) ) !== "." )
447
+        {
448
+            list( $num, $size ) = explode( ' ', $response );
449
+            $messages[$num] = $size;
450
+        }
451
+        return $messages;
452
+    }
453
+
454
+    /**
455
+     * Returns the unique identifiers for messages on the POP3 server.
456
+     *
457
+     * You can fetch the unique identifier for a specific message by providing
458
+     * the $msgNum parameter.
459
+     *
460
+     * The unique identifier can be used to recognize mail from servers
461
+     * between requests. In contrast to the message numbers the unique numbers
462
+     * assigned to an email usually never changes.
463
+     *
464
+     * Note: POP3 servers are not required to support this command and it may fail.
465
+     *
466
+     * The format of the returned array is:
467
+     * <code>
468
+     *   array( message_num => unique_id );
469
+     * </code>
470
+     *
471
+     * Before calling this method, a connection to the POP3 server must be
472
+     * established and a user must be authenticated successfully.
473
+     *
474
+     * Example:
475
+     * <code>
476
+     *   array( 1 => '000001fc4420e93a', 2 => '000001fd4420e93a' );
477
+     * </code>
478
+     *
479
+     * @throws ezcMailTransportException
480
+     *         if there was no connection to the server
481
+     *         or if not authenticated
482
+     *         or if the server sent a negative response
483
+     * @param int $msgNum
484
+     * @return array(string)
485
+     */
486
+    public function listUniqueIdentifiers( $msgNum = null )
487
+    {
488
+        if ( $this->state != self::STATE_TRANSACTION )
489
+        {
490
+            throw new ezcMailTransportException( "Can't call ListUniqueIdentifiers() on the POP3 transport when not successfully logged in." );
491
+        }
492
+
493
+        // send the command
494
+        $result = array();
495
+        if ( $msgNum !== null )
496
+        {
497
+            $this->connection->sendData( "UIDL {$msgNum}" );
498
+            $response = $this->connection->getLine( true );
499
+            if ( $this->isPositiveResponse( $response ) )
500
+            {
501
+                // get the single response line from the server
502
+                list( $dummy, $num, $id ) = explode( ' ', $response );
503
+                $result[(int)$num] = $id;
504
+            }
505
+            else
506
+            {
507
+                throw new ezcMailTransportException( "The POP3 server sent a negative response to the UIDL command: {$response}." );
508
+            }
509
+        }
510
+        else
511
+        {
512
+            $this->connection->sendData( "UIDL" );
513
+            $response = $this->connection->getLine();
514
+            if ( $this->isPositiveResponse( $response ) )
515
+            {
516
+                // fetch each of the result lines and add it to the result
517
+                while ( ( $response = $this->connection->getLine( true ) ) !== "." )
518
+                {
519
+                    list( $num, $id ) = explode( ' ', $response );
520
+                    $result[(int)$num] = $id;
521
+                }
522
+            }
523
+            else
524
+            {
525
+                throw new ezcMailTransportException( "The POP3 server sent a negative response to the UIDL command: {$response}." );
526
+            }
527
+        }
528
+        return $result;
529
+    }
530
+
531
+    /**
532
+     * Returns information about the messages on the server.
533
+     *
534
+     * The information returned through the parameters is:
535
+     *  - $numMessages = number of messages
536
+     *  - $sizeMessages = sum of the messages sizes
537
+     *
538
+     * Before calling this method, a connection to the POP3 server must be
539
+     * established and a user must be authenticated successfully.
540
+     *
541
+     * Example of returning the status of messages on the server:
542
+     * <code>
543
+     * $pop3 = new ezcMailPop3Transport( 'pop3.example.com' );
544
+     * $pop3->authenticate( 'username', 'password' );
545
+     *
546
+     * $pop3->status( $numMessages, $sizeMessages );
547
+     * </code>
548
+     *
549
+     * After running the above code, $numMessages and $sizeMessages will be
550
+     * populated with values.
551
+     *
552
+     * @throws ezcMailTransportException
553
+     *         if there was no connection to the server
554
+     *         or if not authenticated
555
+     *         or if the server sent a negative response
556
+     * @param int &$numMessages
557
+     * @param int &$sizeMessages
558
+     */
559
+    public function status( &$numMessages, &$sizeMessages )
560
+    {
561
+        if ( $this->state != self::STATE_TRANSACTION )
562
+        {
563
+            throw new ezcMailTransportException( "Can't call status() on the POP3 transport when not successfully logged in." );
564
+        }
565
+
566
+        $this->connection->sendData( "STAT" );
567
+        $response = $this->connection->getLine();
568
+        if ( $this->isPositiveResponse( $response ) )
569
+        {
570
+            // get the single response line from the server
571
+            list( $dummy, $numMessages, $sizeMessages ) = explode( ' ', $response );
572
+            $numMessages = (int)$numMessages;
573
+            $sizeMessages = (int)$sizeMessages;
574
+        }
575
+        else
576
+        {
577
+            throw new ezcMailTransportException( "The POP3 server did not respond with a status message: {$response}." );
578
+        }
579
+    }
580
+
581
+    /**
582
+     * Deletes the message with the message number $msgNum from the server.
583
+     *
584
+     * The message number must be a valid identifier fetched with (example)
585
+     * {@link listMessages()}.
586
+     *
587
+     * Any future reference to the message-number associated with the message
588
+     * in a command generates an error.
589
+     *
590
+     * Before calling this method, a connection to the POP3 server must be
591
+     * established and a user must be authenticated successfully.
592
+     *
593
+     * @throws ezcMailTransportException
594
+     *         if there was no connection to the server
595
+     *         or if not authenticated
596
+     *         or if the server sent a negative response
597
+     * @param int $msgNum
598
+     */
599
+    public function delete( $msgNum )
600
+    {
601
+        if ( $this->state != self::STATE_TRANSACTION )
602
+        {
603
+            throw new ezcMailTransportException( "Can't call delete() on the POP3 transport when not successfully logged in." );
604
+        }
605
+
606
+        $this->connection->sendData( "DELE {$msgNum}" );
607
+        $response = $this->connection->getLine();
608
+
609
+        if ( !$this->isPositiveResponse( $response ) )
610
+        {
611
+            throw new ezcMailTransportException( "The POP3 server could not delete the message: {$response}." );
612
+        }
613
+    }
614
+
615
+    /**
616
+     * Returns the headers and the $numLines first lines of the body of the mail with
617
+     * the message number $msgNum.
618
+     *
619
+     * If the command failed or if it was not supported by the server an empty string is
620
+     * returned.
621
+     *
622
+     * Note: POP3 servers are not required to support this command and it may fail.
623
+     *
624
+     * Before calling this method, a connection to the POP3 server must be
625
+     * established and a user must be authenticated successfully.
626
+     *
627
+     * Example of listing the mail headers of all the messages from the server:
628
+     * <code>
629
+     * $pop3 = new ezcMailPop3Transport( 'pop3.example.com' );
630
+     * $pop3->authenticate( 'username', 'password' );
631
+     *
632
+     * $parser = new ezcMailParser();
633
+     * $messages = $pop3->listMessages();
634
+     * foreach ( $messages as $messageNr => $size )
635
+     * {
636
+     *     $set = new ezcMailVariableSet( $pop3->top( $messageNr ) );
637
+     *     $mail = $parser->parseMail( $set );
638
+     *     $mail = $mail[0];
639
+     *     echo "From: {$mail->from}, Subject: {$mail->subject}, Size: {$size}\n";
640
+     * }
641
+     * </code>
642
+     *
643
+     * @throws ezcMailTransportException
644
+     *         if there was no connection to the server
645
+     *         or if not authenticated
646
+     *         or if the server sent a negative response
647
+     * @param int $msgNum
648
+     * @param int $numLines
649
+     * @return string
650
+     */
651
+    public function top( $msgNum, $numLines = 0 )
652
+    {
653
+        if ( $this->state != self::STATE_TRANSACTION )
654
+        {
655
+            throw new ezcMailTransportException( "Can't call top() on the POP3 transport when not successfully logged in." );
656
+        }
657
+
658
+        // send the command
659
+        $this->connection->sendData( "TOP {$msgNum} {$numLines}" );
660
+        $response = $this->connection->getLine();
661
+        if ( !$this->isPositiveResponse( $response ) )
662
+        {
663
+            throw new ezcMailTransportException( "The POP3 server sent a negative response to the TOP command: {$response}." );
664
+        }
665
+
666
+        // fetch the data from the server and prepare it to be returned.
667
+        $message = "";
668
+        while ( ( $response = $this->connection->getLine( true ) ) !== "." )
669
+        {
670
+            $message .= $response . "\n";
671
+        }
672
+        return $message;
673
+    }
674
+
675
+    /**
676
+     * Returns an ezcMailPop3Set with all the messages on the server.
677
+     *
678
+     * If $deleteFromServer is set to true the mail will be removed from the
679
+     * server after retrieval. If not it will be left.
680
+     *
681
+     * Before calling this method, a connection to the POP3 server must be
682
+     * established and a user must be authenticated successfully.
683
+     *
684
+     * Example:
685
+     * <code>
686
+     * $pop3 = new ezcMailPop3Transport( 'pop3.example.com' );
687
+     * $pop3->authenticate( 'username', 'password' );
688
+     *
689
+     * $set = $pop3->fetchAll();
690
+     *
691
+     * // parse $set with ezcMailParser
692
+     * $parser = new ezcMailParser();
693
+     * $mails = $parser->parseMail( $set );
694
+     * foreach ( $mails as $mail )
695
+     * {
696
+     *     // process $mail which is an ezcMail object
697
+     * }
698
+     * </code>
699
+     *
700
+     * @throws ezcMailTransportException
701
+     *         if there was no connection to the server
702
+     *         or if not authenticated
703
+     *         or if the server sent a negative response
704
+     * @param bool $deleteFromServer
705
+     * @return ezcMailParserSet
706
+     */
707
+    public function fetchAll( $deleteFromServer = false )
708
+    {
709
+        $messages = $this->listMessages();
710
+        return new ezcMailPop3Set( $this->connection, array_keys( $messages ), $deleteFromServer );
711
+    }
712
+
713
+    /**
714
+     * Returns an ezcMailPop3Set containing only the $number -th message from
715
+     * the server.
716
+     *
717
+     * If $deleteFromServer is set to true the mail will be removed from the
718
+     * server after retrieval. If not it will be left.
719
+     *
720
+     * Note: for POP3 the first message is 1 (so for $number = 0 the exception
721
+     * will be thrown).
722
+     *
723
+     * Before calling this method, a connection to the POP3 server must be
724
+     * established and a user must be authenticated successfully.
725
+     *
726
+     * Example:
727
+     * <code>
728
+     * $pop3 = new ezcMailPop3Transport( 'pop3.example.com' );
729
+     * $pop3->authenticate( 'username', 'password' );
730
+     *
731
+     * $set = $pop3->fetchByMessageNr( 1 );
732
+     *
733
+     * // $set can be parsed with ezcMailParser
734
+     * </code>
735
+     *
736
+     * @throws ezcMailTransportException
737
+     *         if there was no connection to the server
738
+     *         or if not authenticated
739
+     *         or if the server sent a negative response
740
+     * @throws ezcMailNoSuchMessageException
741
+     *         if the message $number is out of range
742
+     * @param int $number
743
+     * @param bool $deleteFromServer
744
+     * @return ezcMailPop3Set
745
+     */
746
+    public function fetchByMessageNr( $number, $deleteFromServer = false )
747
+    {
748
+        $messages = $this->listMessages();
749
+        if ( !isset( $messages[$number] ) )
750
+        {
751
+            throw new ezcMailNoSuchMessageException( $number );
752
+        }
753
+        return new ezcMailPop3Set( $this->connection, array( $number ), $deleteFromServer );
754
+    }
755
+
756
+    /**
757
+     * Returns an ezcMailPop3Set with $count messages starting from $offset from
758
+     * the server.
759
+     *
760
+     * Fetches $count messages starting from the $offset and returns them as a
761
+     * ezcMailPop3Set. If $count is not specified or if it is 0, it fetches
762
+     * all messages starting from the $offset.
763
+     *
764
+     * Before calling this method, a connection to the POP3 server must be
765
+     * established and a user must be authenticated successfully.
766
+     *
767
+     * Example:
768
+     * <code>
769
+     * $pop3 = new ezcMailPop3Transport( 'pop3.example.com' );
770
+     * $pop3->authenticate( 'username', 'password' );
771
+     *
772
+     * $set = $pop3->fetchFromOffset( 1, 10 );
773
+     *
774
+     * // $set can be parsed with ezcMailParser
775
+     * </code>
776
+     *
777
+     * @throws ezcMailTransportException
778
+     *         if there was no connection to the server
779
+     *         or if not authenticated
780
+     *         or if the server sent a negative response
781
+     * @throws ezcMailInvalidLimitException
782
+     *         if $count is negative
783
+     * @throws ezcMailOffsetOutOfRangeException
784
+     *         if $offset is outside of the existing range of messages
785
+     * @param int $offset
786
+     * @param int $count
787
+     * @param bool $deleteFromServer
788
+     * @return ezcMailPop3Set
789
+     */
790
+    public function fetchFromOffset( $offset, $count = 0, $deleteFromServer = false )
791
+    {
792
+        if ( $count < 0 )
793
+        {
794
+            throw new ezcMailInvalidLimitException( $offset, $count );
795
+        }
796
+        $messages = array_keys( $this->listMessages() );
797
+        if ( $count == 0 )
798
+        {
799
+            $range = array_slice( $messages, $offset - 1, count( $messages ), true );
800
+        }
801
+        else
802
+        {
803
+            $range = array_slice( $messages, $offset - 1, $count, true );
804
+        }
805
+        if ( !isset( $range[$offset - 1] ) )
806
+        {
807
+            throw new ezcMailOffsetOutOfRangeException( $offset, $count );
808
+        }
809
+        return new ezcMailPop3Set( $this->connection, $range, $deleteFromServer );
810
+    }
811
+
812
+    /**
813
+     * Sends a NOOP command to the server, use it to keep the connection alive.
814
+     *
815
+     * Before calling this method, a connection to the POP3 server must be
816
+     * established and a user must be authenticated successfully.
817
+     *
818
+     * @throws ezcMailTransportException
819
+     *         if there was no connection to the server
820
+     *         or if not authenticated
821
+     *         or if the server sent a negative response
822
+     */
823
+    public function noop()
824
+    {
825
+        if ( $this->state != self::STATE_TRANSACTION )
826
+        {
827
+            throw new ezcMailTransportException( "Can't call noop() on the POP3 transport when not successfully logged in." );
828
+        }
829
+
830
+        // send the command
831
+        $this->connection->sendData( "NOOP" );
832
+        $response = $this->connection->getLine();
833
+        if ( !$this->isPositiveResponse( $response ) )
834
+        {
835
+            throw new ezcMailTransportException( "The POP3 server sent a negative response to the NOOP command: {$response}." );
836
+        }
837
+    }
838
+
839
+    /**
840
+     * Returns true if the response from the server is a positive one.
841
+     *
842
+     * @param string $line
843
+     * @return bool
844
+     */
845
+    protected function isPositiveResponse( $line )
846
+    {
847
+        if ( strpos( $line, "+OK" ) === 0 )
848
+        {
849
+            return true;
850
+        }
851
+        return false;
852
+    }
853
+}
854
+?>
... ...
@@ -0,0 +1,1279 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailSmtpTransport class.
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * This class implements the Simple Mail Transfer Protocol (SMTP)
13
+ * with authentication support.
14
+ *
15
+ * The implementation supports most of the commands specified in:
16
+ *  - {@link http://www.faqs.org/rfcs/rfc821.html RFC821 - SMTP}
17
+ *  - {@link http://www.faqs.org/rfcs/rfc2554.html RFC2554 - SMTP Authentication}
18
+ *  - {@link http://www.faqs.org/rfcs/rfc2831.html RFC2831 - DIGEST-MD5 Authentication}
19
+ *  - {@link http://www.faqs.org/rfcs/rfc2195.html RFC2195 - CRAM-MD5 Authentication}
20
+ *  - {@link http://davenport.sourceforge.net/ntlm.html NTLM Authentication}
21
+ *
22
+ * By default, the SMTP transport tries to login anonymously to the SMTP server
23
+ * (if an empty username and password have been provided), or to authenticate
24
+ * with the strongest method supported by the server (if username and password
25
+ * have been provided). The default behaviour can be changed with the option
26
+ * preferredAuthMethod (see {@link ezcMailSmtpTransportOptions}).
27
+ *
28
+ * If the preferred method is specified via options, only that authentication
29
+ * method will be attempted on the SMTP server. If it fails, an exception will
30
+ * be thrown.
31
+ *
32
+ * Supported authentication methods (from strongest to weakest):
33
+ *  - DIGEST-MD5
34
+ *  - CRAM-MD5
35
+ *  - NTLM (requires the PHP mcrypt extension)
36
+ *  - LOGIN
37
+ *  - PLAIN
38
+ *
39
+ * Not all SMTP servers support these methods, and some SMTP servers don't
40
+ * support authentication at all.
41
+ *
42
+ * Example send mail:
43
+ * <code>
44
+ * $mail = new ezcMailComposer();
45
+ *
46
+ * $mail->from = new ezcMailAddress( '[email protected]', 'Adrian Ripburger' );
47
+ * $mail->addTo( new ezcMailAddress( '[email protected]', 'Maureen Corley' ) );
48
+ * $mail->subject = "This is the subject of the example mail";
49
+ * $mail->plainText = "This is the body of the example mail.";
50
+ * $mail->build();
51
+ *
52
+ * // Create a new SMTP transport object with an SSLv3 connection.
53
+ * // The port will be 465 by default, use the 4th argument to change it.
54
+ * // Username and password (2nd and 3rd arguments) are left blank, which means
55
+ * // the mail host does not need authentication.
56
+ * // The 5th parameter is the optional $options object.
57
+ * $options = new ezcMailSmtpTransportOptions();
58
+ * $options->connectionType = ezcMailSmtpTransport::CONNECTION_SSLV3;
59
+ *
60
+ * $transport = new ezcMailSmtpTransport( 'mailhost.example.com', '', '', null, $options );
61
+ *
62
+ * // Use the SMTP transport to send the created mail object
63
+ * $transport->send( $mail );
64
+ * </code>
65
+ *
66
+ * Example require NTLM authentication:
67
+ * <code>
68
+ * // Create an SMTP transport and demand NTLM authentication.
69
+ * // Username and password must be specified, otherwise no authentication
70
+ * // will be attempted.
71
+ * // If NTLM authentication fails, an exception will be thrown.
72
+ * $options = new ezcMailSmtpTransportOptions();
73
+ * $options->preferredAuthMethod = ezcMailSmtpTransport::AUTH_NTLM;
74
+ *
75
+ * $transport = new ezcMailSmtpTransport( 'mailhost.example.com', 'username', 'password', null, $options );
76
+ *
77
+ * // The option can also be specified via the option property:
78
+ * $transport->options->preferredAuthMethod = ezcMailSmtpTransport::AUTH_NTLM;
79
+ * </code>
80
+ *
81
+ * See {@link ezcMailSmtpTransportOptions} for options you can specify for SMTP.
82
+ *
83
+ * @property string $serverHost
84
+ *           The SMTP server host to connect to.
85
+ * @property int $serverPort
86
+ *           The port of the SMTP server. Defaults to 25.
87
+ * @property string $username
88
+ *           The username used for authentication. The default is blank which
89
+ *           means no authentication.
90
+ * @property string $password
91
+ *           The password used for authentication.
92
+ * @property int $timeout
93
+ *           The timeout value of the connection in seconds. The default is
94
+ *           5 seconds. When setting/getting this option, the timeout option
95
+ *           from $this->options {@link ezcMailTransportOptions} will be set instead.
96
+ * @property string $senderHost
97
+ *           The hostname of the computer that sends the mail. The default is
98
+ *           'localhost'.
99
+ * @property ezcMailSmtpTransportOptions $options
100
+ *           Holds the options you can set to the SMTP transport.
101
+ *
102
+ * @package Mail
103
+ * @version 1.7.1
104
+ * @mainclass
105
+ */
106
+class ezcMailSmtpTransport implements ezcMailTransport
107
+{
108
+    /**
109
+     * Plain connection.
110
+     */
111
+    const CONNECTION_PLAIN = 'tcp';
112
+
113
+    /**
114
+     * SSL connection.
115
+     */
116
+    const CONNECTION_SSL = 'ssl';
117
+
118
+    /**
119
+     * SSLv2 connection.
120
+     */
121
+    const CONNECTION_SSLV2 = 'sslv2';
122
+
123
+    /**
124
+     * SSLv3 connection.
125
+     */
126
+    const CONNECTION_SSLV3 = 'sslv3';
127
+
128
+    /**
129
+     * TLS connection.
130
+     */
131
+    const CONNECTION_TLS = 'tls';
132
+
133
+    /**
134
+     * Authenticate with 'AUTH PLAIN'.
135
+     */
136
+    const AUTH_PLAIN = 'PLAIN';
137
+
138
+    /**
139
+     * Authenticate with 'AUTH LOGIN'.
140
+     */
141
+    const AUTH_LOGIN = 'LOGIN';
142
+
143
+    /**
144
+     * Authenticate with 'AUTH CRAM-MD5'.
145
+     */
146
+    const AUTH_CRAM_MD5 = 'CRAM-MD5';
147
+
148
+    /**
149
+     * Authenticate with 'AUTH DIGEST-MD5'.
150
+     */
151
+    const AUTH_DIGEST_MD5 = 'DIGEST-MD5';
152
+
153
+    /**
154
+     * Authenticate with 'AUTH NTLM'.
155
+     */
156
+    const AUTH_NTLM = 'NTLM';
157
+
158
+    /**
159
+     * No authentication method. Specifies that the transport should try to
160
+     * authenticate using the methods supported by the SMTP server in their
161
+     * decreasing strength order. If one method fails an exception will be
162
+     * thrown.
163
+     */
164
+    const AUTH_AUTO = null;
165
+
166
+    /**
167
+     * The line-break characters to use.
168
+     *
169
+     * @access private
170
+     */
171
+    const CRLF = "\r\n";
172
+
173
+    /**
174
+     * We are not connected to a server.
175
+     *
176
+     * @access private
177
+     */
178
+    const STATUS_NOT_CONNECTED = 1;
179
+
180
+    /**
181
+     * We are connected to the server, but not authenticated.
182
+     *
183
+     * @access private
184
+     */
185
+    const STATUS_CONNECTED = 2;
186
+
187
+    /**
188
+     * We are connected to the server and authenticated.
189
+     *
190
+     * @access private
191
+     */
192
+    const STATUS_AUTHENTICATED = 3;
193
+
194
+    /**
195
+     * The connection to the SMTP server.
196
+     *
197
+     * @var resource
198
+     */
199
+    protected $connection;
200
+
201
+    /**
202
+     * Holds the connection status.
203
+     *
204
+     * $var int {@link STATUS_NOT_CONNECTED},
205
+     *          {@link STATUS_CONNECTED} or
206
+     *          {@link STATUS_AUTHENTICATED}.
207
+     */
208
+    protected $status;
209
+
210
+    /**
211
+     * True if authentication should be performed; otherwise false.
212
+     *
213
+     * This variable is set to true if a username is provided for login.
214
+     *
215
+     * @var bool
216
+     */
217
+    protected $doAuthenticate;
218
+
219
+    /**
220
+     * Holds if the connection should be kept open after sending a mail.
221
+     *
222
+     * @var bool
223
+     */
224
+    protected $keepConnection = false;
225
+
226
+    /**
227
+     * Holds the properties of this class.
228
+     *
229
+     * @var array(string=>mixed)
230
+     */
231
+    protected $properties = array();
232
+
233
+    /**
234
+     * Holds the options of this class.
235
+     *
236
+     * @var ezcMailSmtpTransportOptions
237
+     */
238
+    protected $options;
239
+
240
+    /**
241
+     * Constructs a new ezcMailSmtpTransport.
242
+     *
243
+     * The constructor expects, at least, the hostname $host of the SMTP server.
244
+     *
245
+     * The username $user will be used for authentication if provided.
246
+     * If it is left blank no authentication will be performed.
247
+     *
248
+     * The password $password will be used for authentication
249
+     * if provided. Use this parameter always in combination with the $user
250
+     * parameter.
251
+     *
252
+     * The value $port specifies on which port to connect to $host. By default
253
+     * it is 25 for plain connections and 465 for TLS/SSL/SSLv2/SSLv3.
254
+     *
255
+     * Note: The ssl option from {@link ezcMailTransportOptions} doesn't apply to SMTP.
256
+     * If you want to connect to SMTP using TLS/SSL/SSLv2/SSLv3 use the connectionType
257
+     * option in {@link ezcMailSmtpTransportOptions}.
258
+     *
259
+     * For options you can specify for SMTP see {@link ezcMailSmtpTransportOptions}.
260
+     *
261
+     * @throws ezcBasePropertyNotFoundException
262
+     *         if $options contains a property not defined
263
+     * @throws ezcBaseValueException
264
+     *         if $options contains a property with a value not allowed
265
+     * @param string $host
266
+     * @param string $user
267
+     * @param string $password
268
+     * @param int $port
269
+     * @param ezcMailSmtpTransportOptions|array(string=>mixed) $options
270
+     */
271
+    public function __construct( $host, $user = '', $password = '', $port = null, $options = array() )
272
+    {
273
+        if ( $options instanceof ezcMailSmtpTransportOptions )
274
+        {
275
+            $this->options = $options;
276
+        }
277
+        else if ( is_array( $options ) )
278
+        {
279
+            $this->options = new ezcMailSmtpTransportOptions( $options );
280
+        }
281
+        else
282
+        {
283
+            throw new ezcBaseValueException( "options", $options, "ezcMailSmtpTransportOptions|array" );
284
+        }
285
+
286
+        $this->serverHost = $host;
287
+        if ( $port === null )
288
+        {
289
+            $port = ( $this->options->connectionType === self::CONNECTION_PLAIN ) ? 25 : 465;
290
+        }
291
+        $this->serverPort = $port;
292
+        $this->user = $user;
293
+        $this->password = $password;
294
+        $this->doAuthenticate = $user != '' ? true : false;
295
+
296
+        $this->status = self::STATUS_NOT_CONNECTED;
297
+        $this->senderHost = 'localhost';
298
+    }
299
+
300
+    /**
301
+     * Destructs this object.
302
+     *
303
+     * Closes the connection if it is still open.
304
+     */
305
+    public function __destruct()
306
+    {
307
+        if ( $this->status != self::STATUS_NOT_CONNECTED )
308
+        {
309
+            $this->sendData( 'QUIT' );
310
+            fclose( $this->connection );
311
+        }
312
+    }
313
+
314
+    /**
315
+     * Sets the property $name to $value.
316
+     *
317
+     * @throws ezcBasePropertyNotFoundException
318
+     *         if the property $name does not exist
319
+     * @throws ezcBaseValueException
320
+     *         if $value is not accepted for the property $name
321
+     * @param string $name
322
+     * @param mixed $value
323
+     * @ignore
324
+     */
325
+    public function __set( $name, $value )
326
+    {
327
+        switch ( $name )
328
+        {
329
+            case 'user':
330
+            case 'password':
331
+            case 'senderHost':
332
+            case 'serverHost':
333
+            case 'serverPort':
334
+                $this->properties[$name] = $value;
335
+                break;
336
+
337
+            case 'timeout':
338
+                // the timeout option from $this->options is used instead of
339
+                // the timeout option of this class
340
+                $this->options->timeout = $value;
341
+                break;
342
+
343
+            case 'options':
344
+                if ( !( $value instanceof ezcMailSmtpTransportOptions ) )
345
+                {
346
+                    throw new ezcBaseValueException( 'options', $value, 'instanceof ezcMailSmtpTransportOptions' );
347
+                }
348
+                $this->options = $value;
349
+                break;
350
+
351
+            default:
352
+                throw new ezcBasePropertyNotFoundException( $name );
353
+        }
354
+    }
355
+
356
+    /**
357
+     * Returns the value of the property $name.
358
+     *
359
+     * @throws ezcBasePropertyNotFoundException
360
+     *         if the property $name does not exist
361
+     * @param string $name
362
+     * @return mixed
363
+     * @ignore
364
+     */
365
+    public function __get( $name )
366
+    {
367
+        switch ( $name )
368
+        {
369
+            case 'user':
370
+            case 'password':
371
+            case 'senderHost':
372
+            case 'serverHost':
373
+            case 'serverPort':
374
+                return $this->properties[$name];
375
+
376
+            case 'timeout':
377
+                return $this->options->timeout;
378
+
379
+            case 'options':
380
+                return $this->options;
381
+
382
+            default:
383
+                throw new ezcBasePropertyNotFoundException( $name );
384
+        }
385
+    }
386
+
387
+    /**
388
+     * Returns true if the property $name is set, otherwise false.
389
+     *
390
+     * @param string $name
391
+     * @return bool
392
+     * @ignore
393
+     */
394
+    public function __isset( $name )
395
+    {
396
+        switch ( $name )
397
+        {
398
+            case 'user':
399
+            case 'password':
400
+            case 'senderHost':
401
+            case 'serverHost':
402
+            case 'serverPort':
403
+                return isset( $this->properties[$name] );
404
+
405
+            case 'timeout':
406
+            case 'options':
407
+                return true;
408
+
409
+            default:
410
+                return false;
411
+        }
412
+    }
413
+
414
+    /**
415
+     * Sets if the connection should be kept open after sending an email.
416
+     *
417
+     * This method should be called prior to the first call to send().
418
+     *
419
+     * Keeping the connection open is useful if you are sending a lot of mail.
420
+     * It removes the overhead of opening the connection after each mail is
421
+     * sent.
422
+     *
423
+     * Use disconnect() to close the connection if you have requested to keep
424
+     * it open.
425
+     */
426
+    public function keepConnection()
427
+    {
428
+        $this->keepConnection = true;
429
+    }
430
+
431
+    /**
432
+     * Sends the ezcMail $mail using the SMTP protocol.
433
+     *
434
+     * If you want to send several emails use keepConnection() to leave the
435
+     * connection to the server open between each mail.
436
+     *
437
+     * @throws ezcMailTransportException
438
+     *         if the mail could not be sent
439
+     * @throws ezcBaseFeatureNotFoundException
440
+     *         if trying to use SSL and the openssl extension is not installed
441
+     * @param ezcMail $mail
442
+     */
443
+    public function send( ezcMail $mail )
444
+    {
445
+        // sanity check the e-mail
446
+        // need at least one recepient
447
+        if ( ( count( $mail->to ) + count( $mail->cc ) + count( $mail->bcc ) ) < 1 )
448
+        {
449
+            throw new ezcMailTransportException( "Can not send e-mail with no 'to' recipients." );
450
+        }
451
+
452
+        try
453
+        {
454
+            // open connection unless we are connected already.
455
+            if ( $this->status != self::STATUS_AUTHENTICATED )
456
+            {
457
+                $this->connect();
458
+            }
459
+
460
+            if ( isset( $mail->returnPath ) )
461
+            {
462
+                $this->cmdMail( $mail->returnPath->email );
463
+            }
464
+            else
465
+            {
466
+                $this->cmdMail( $mail->from->email );
467
+            }
468
+
469
+            // each recepient must be listed here.
470
+            // this controls where the mail is actually sent as SMTP does not
471
+            // read the headers itself
472
+            foreach ( $mail->to as $address )
473
+            {
474
+                $this->cmdRcpt( $address->email );
475
+            }
476
+            foreach ( $mail->cc as $address )
477
+            {
478
+                $this->cmdRcpt( $address->email );
479
+            }
480
+            foreach ( $mail->bcc as $address )
481
+            {
482
+                $this->cmdRcpt( $address->email );
483
+            }
484
+            // done with the from and recipients, lets send the mail itself
485
+            $this->cmdData();
486
+
487
+            // A '.' on a line ends the mail. Make sure this does not happen in
488
+            // the data we want to send.  also called transparancy in the RFC,
489
+            // section 4.5.2
490
+            $data = $mail->generate();
491
+            $data = str_replace( self::CRLF . '.', self::CRLF . '..', $data );
492
+            if ( $data[0] == '.' )
493
+            {
494
+                $data = '.' . $data;
495
+            }
496
+
497
+            $this->sendData( $data );
498
+            $this->sendData( '.' );
499
+
500
+            if ( $this->getReplyCode( $error ) !== '250' )
501
+            {
502
+                throw new ezcMailTransportSmtpException( "Error: {$error}" );
503
+            }
504
+        }
505
+        catch ( ezcMailTransportSmtpException $e )
506
+        {
507
+            throw new ezcMailTransportException( $e->getMessage() );
508
+            // TODO: reset connection here.pin
509
+        }
510
+
511
+        // close connection unless we should keep it
512
+        if ( $this->keepConnection === false )
513
+        {
514
+            try
515
+            {
516
+                $this->disconnect();
517
+            }
518
+            catch ( Exception $e )
519
+            {
520
+                // Eat! We don't care anyway since we are aborting the connection
521
+            }
522
+        }
523
+    }
524
+
525
+    /**
526
+     * Creates a connection to the SMTP server and initiates the login
527
+     * procedure.
528
+     *
529
+     * @todo The @ should be removed when PHP doesn't throw warnings for connect problems
530
+     *
531
+     * @throws ezcMailTransportSmtpException
532
+     *         if no connection could be made
533
+     *         or if the login failed
534
+     * @throws ezcBaseExtensionNotFoundException
535
+     *         if trying to use SSL and the openssl extension is not installed
536
+     */
537
+    protected function connect()
538
+    {
539
+        $errno = null;
540
+        $errstr = null;
541
+        if ( $this->options->connectionType !== self::CONNECTION_PLAIN &&
542
+             !ezcBaseFeatures::hasExtensionSupport( 'openssl' ) )
543
+        {
544
+            throw new ezcBaseExtensionNotFoundException( 'openssl', null, "PHP not configured --with-openssl." );
545
+        }
546
+        if ( count( $this->options->connectionOptions ) > 0 )
547
+        {
548
+            $context = stream_context_create( $this->options->connectionOptions );
549
+            $this->connection = @stream_socket_client( "{$this->options->connectionType}://{$this->serverHost}:{$this->serverPort}",
550
+                                                       $errno, $errstr, $this->options->timeout, STREAM_CLIENT_CONNECT, $context );
551
+        }
552
+        else
553
+        {
554
+            $this->connection = @stream_socket_client( "{$this->options->connectionType}://{$this->serverHost}:{$this->serverPort}",
555
+                                                       $errno, $errstr, $this->options->timeout );
556
+        }
557
+
558
+        if ( is_resource( $this->connection ) )
559
+        {
560
+            stream_set_timeout( $this->connection, $this->options->timeout );
561
+            $this->status = self::STATUS_CONNECTED;
562
+            $greeting = $this->getData();
563
+            $this->login();
564
+        }
565
+        else
566
+        {
567
+            throw new ezcMailTransportSmtpException( "Failed to connect to the smtp server: {$this->serverHost}:{$this->serverPort}." );
568
+        }
569
+    }
570
+
571
+    /**
572
+     * Performs the initial handshake with the SMTP server and
573
+     * authenticates the user, if login data is provided to the
574
+     * constructor.
575
+     *
576
+     * @throws ezcMailTransportSmtpException
577
+     *         if the HELO/EHLO command or authentication fails
578
+     */
579
+    protected function login()
580
+    {
581
+        if ( $this->doAuthenticate )
582
+        {
583
+            $this->sendData( 'EHLO ' . $this->senderHost );
584
+        }
585
+        else
586
+        {
587
+            $this->sendData( 'HELO ' . $this->senderHost );
588
+        }
589
+
590
+        if ( $this->getReplyCode( $response ) !== '250' )
591
+        {
592
+            throw new ezcMailTransportSmtpException( "HELO/EHLO failed with error: {$response}." );
593
+        }
594
+
595
+        // do authentication
596
+        if ( $this->doAuthenticate )
597
+        {
598
+            if ( $this->options->preferredAuthMethod !== self::AUTH_AUTO )
599
+            {
600
+                $this->auth( $this->options->preferredAuthMethod );
601
+            }
602
+            else
603
+            {
604
+                preg_match( "/250-AUTH[= ](.*)/", $response, $matches );
605
+                if ( count( $matches ) > 0 )
606
+                {
607
+                    $methods = explode( ' ', trim( $matches[1] ) );
608
+                }
609
+                if ( count( $matches ) === 0 || count( $methods ) === 0 )
610
+                {
611
+                    throw new ezcMailTransportSmtpException( 'SMTP server does not accept the AUTH command.' );
612
+                }
613
+
614
+                $authenticated = false;
615
+                $methods = $this->sortAuthMethods( $methods );
616
+                foreach ( $methods as $method )
617
+                {
618
+                    if ( $this->auth( $method ) === true )
619
+                    {
620
+                        $authenticated = true;
621
+                        break;
622
+                    }
623
+                }
624
+
625
+                if ( $authenticated === false )
626
+                {
627
+                    throw new ezcMailTransportSmtpException( 'SMTP server did not respond correctly to any of the authentication methods ' . implode( ', ', $methods ) . '.' );
628
+                }
629
+            }
630
+        }
631
+        $this->status = self::STATUS_AUTHENTICATED;
632
+    }
633
+
634
+    /**
635
+     * Returns an array with the authentication methods supported by the
636
+     * SMTP transport class (not by the SMTP server!).
637
+     *
638
+     * The returned array has the methods sorted by their relative strengths,
639
+     * so stronger methods are first in the array.
640
+     *
641
+     * @return array(string)
642
+     */
643
+    public static function getSupportedAuthMethods()
644
+    {
645
+        return array(
646
+            ezcMailSmtpTransport::AUTH_DIGEST_MD5,
647
+            ezcMailSmtpTransport::AUTH_CRAM_MD5,
648
+            ezcMailSmtpTransport::AUTH_NTLM,
649
+            ezcMailSmtpTransport::AUTH_LOGIN,
650
+            ezcMailSmtpTransport::AUTH_PLAIN,
651
+            );
652
+    }
653
+
654
+    /**
655
+     * Sorts the specified array of AUTH methods $methods by strength, so higher
656
+     * strength methods will be used first.
657
+     *
658
+     * For example, if the server supports:
659
+     * <code>
660
+     *   $methods = array( 'PLAIN', 'LOGIN', 'CRAM-MD5' );
661
+     * </code>
662
+     *
663
+     * then this method will return:
664
+     * <code>
665
+     *   $methods = array( 'CRAM-MD5', 'LOGIN', 'PLAIN' );
666
+     * </code>
667
+     *
668
+     * @param array(string) $methods
669
+     * @return array(string)
670
+     */
671
+    protected function sortAuthMethods( array $methods )
672
+    {
673
+        $result = array();
674
+        $unsupported = array();
675
+        $supportedAuthMethods = self::getSupportedAuthMethods();
676
+        foreach ( $supportedAuthMethods as $method )
677
+        {
678
+            if ( in_array( $method, $methods ) )
679
+            {
680
+                $result[] = $method;
681
+            }
682
+        }
683
+        return $result;
684
+    }
685
+
686
+    /**
687
+     * Calls the appropiate authentication method based on $method.
688
+     *
689
+     * @throws ezcMailTransportSmtpException
690
+     *         if $method is not supported by the transport class
691
+     * @return bool
692
+     */
693
+    protected function auth( $method )
694
+    {
695
+        switch ( $method )
696
+        {
697
+            case self::AUTH_DIGEST_MD5:
698
+                $authenticated = $this->authDigestMd5();
699
+                break;
700
+
701
+            case self::AUTH_CRAM_MD5:
702
+                $authenticated = $this->authCramMd5();
703
+                break;
704
+
705
+            case self::AUTH_NTLM:
706
+                $authenticated = $this->authNtlm();
707
+                break;
708
+
709
+            case self::AUTH_LOGIN:
710
+                $authenticated = $this->authLogin();
711
+                break;
712
+
713
+            case self::AUTH_PLAIN:
714
+                $authenticated = $this->authPlain();
715
+                break;
716
+
717
+            default:
718
+                throw new ezcMailTransportSmtpException( "Unsupported AUTH method '{$method}'." );
719
+        }
720
+
721
+        return $authenticated;
722
+    }
723
+
724
+    /**
725
+     * Tries to login to the SMTP server with 'AUTH DIGEST-MD5' and returns true if
726
+     * successful.
727
+     *
728
+     * @todo implement auth-int and auth-conf quality of protection (qop) modes
729
+     * @todo support other algorithms than md5-sess?
730
+     *
731
+     * @throws ezcMailTransportSmtpException
732
+     *         if the SMTP server returned an error
733
+     * @return bool
734
+     */
735
+    protected function authDigestMd5()
736
+    {
737
+        $this->sendData( 'AUTH DIGEST-MD5' );
738
+        if ( $this->getReplyCode( $serverResponse ) !== '334' )
739
+        {
740
+            throw new ezcMailTransportSmtpException( 'SMTP server does not accept AUTH DIGEST-MD5.' );
741
+        }
742
+
743
+        $serverDigest = base64_decode( trim( substr( $serverResponse, 4 ) ) );
744
+        $parts = explode( ',', $serverDigest );
745
+        foreach ( $parts as $part )
746
+        {
747
+            $args = explode( '=', $part, 2 );
748
+            $params[trim( $args[0] )] = trim( $args[1] );
749
+        }
750
+
751
+        if ( !isset( $params['nonce'] ) ||
752
+             !isset( $params['algorithm'] ) )
753
+        {
754
+            throw new ezcMailTransportSmtpException( 'SMTP server did not send a correct DIGEST-MD5 challenge.' );
755
+        }
756
+
757
+        $nonce = trim( $params['nonce'], '"' );
758
+        $algorithm = trim( $params['algorithm'], '"' );
759
+
760
+        $qop = 'auth';
761
+        $realm = isset( $params['realm'] ) ? trim( $params['realm'], '"' ) : $this->serverHost;
762
+        $cnonce = $this->generateNonce( 32 );
763
+        $digestUri = "smtp/{$this->serverHost}";
764
+        $nc = '00000001';
765
+        $charset = isset( $params['charset'] ) ? trim( $params['charset'], '"' ) : 'utf-8';
766
+        $maxbuf = isset( $params['maxbuf'] ) ? trim( $params['maxbuf'], '"' ) : 65536;
767
+
768
+        $response = '';
769
+        $A2 = "AUTHENTICATE:{$digestUri}";
770
+        $A1 = pack( 'H32', md5( "{$this->user}:{$realm}:{$this->password}" ) ) . ":{$nonce}:{$cnonce}";
771
+        $response = md5( md5( $A1 ) . ":{$nonce}:{$nc}:{$cnonce}:{$qop}:" . md5( $A2 ) );
772
+
773
+        $loginParams = array(
774
+            'username' => "\"{$this->user}\"",
775
+            'cnonce' => "\"{$cnonce}\"",
776
+            'nonce' => "\"{$nonce}\"",
777
+            'nc' => $nc,
778
+            'qop' => $qop,
779
+            'digest-uri' => "\"{$digestUri}\"",
780
+            'charset' => $charset,
781
+            'realm' => "\"{$realm}\"",
782
+            'response' => $response,
783
+            'maxbuf' => $maxbuf
784
+            );
785
+
786
+        $parts = array();
787
+        foreach ( $loginParams as $key => $value )
788
+        {
789
+            $parts[] = "{$key}={$value}";
790
+        }
791
+        $login = base64_encode( implode( ',', $parts ) );
792
+
793
+        $this->sendData( $login );
794
+        if ( $this->getReplyCode( $serverResponse ) !== '334' )
795
+        {
796
+            throw new ezcMailTransportSmtpException( 'SMTP server did not accept the provided username and password.' );
797
+        }
798
+
799
+        $serverResponse = base64_decode( trim( substr( $serverResponse, 4 ) ) );
800
+        $parts = explode( '=', $serverResponse );
801
+        $rspauthServer = trim( $parts[1] );
802
+
803
+        $A2 = ":{$digestUri}";
804
+        $rspauthClient = md5( md5( $A1 ) . ":{$nonce}:{$nc}:{$cnonce}:{$qop}:" . md5( $A2 ) );
805
+
806
+        if ( $rspauthServer !== $rspauthClient )
807
+        {
808
+            throw new ezcMailTransportSmtpException( 'SMTP server did not responded correctly to the DIGEST-MD5 authentication.' );
809
+        }
810
+
811
+        $this->sendData( '' );
812
+        if ( $this->getReplyCode( $serverResponse ) !== '235' )
813
+        {
814
+            throw new ezcMailTransportSmtpException( 'SMTP server did not allow DIGEST-MD5 authentication.' );
815
+        }
816
+
817
+        return true;
818
+    }
819
+
820
+    /**
821
+     * Tries to login to the SMTP server with 'AUTH CRAM-MD5' and returns true if
822
+     * successful.
823
+     *
824
+     * @throws ezcMailTransportSmtpException
825
+     *         if the SMTP server returned an error
826
+     * @return bool
827
+     */
828
+    protected function authCramMd5()
829
+    {
830
+        $this->sendData( 'AUTH CRAM-MD5' );
831
+        if ( $this->getReplyCode( $response ) !== '334' )
832
+        {
833
+            throw new ezcMailTransportSmtpException( 'SMTP server does not accept AUTH CRAM-MD5.' );
834
+        }
835
+
836
+        $serverDigest = trim( substr( $response, 4 ) );
837
+        $clientDigest = hash_hmac( 'md5', base64_decode( $serverDigest ), $this->password );
838
+        $login = base64_encode( "{$this->user} {$clientDigest}" );
839
+
840
+        $this->sendData( $login );
841
+        if ( $this->getReplyCode( $error ) !== '235' )
842
+        {
843
+            throw new ezcMailTransportSmtpException( 'SMTP server did not accept the provided username and password.' );
844
+        }
845
+
846
+        return true;
847
+    }
848
+
849
+    /**
850
+     * Tries to login to the SMTP server with 'AUTH NTLM' and returns true if
851
+     * successful.
852
+     *
853
+     * @throws ezcMailTransportSmtpException
854
+     *         if the SMTP server returned an error
855
+     * @return bool
856
+     */
857
+    protected function authNtlm()
858
+    {
859
+        if ( !ezcBaseFeatures::hasExtensionSupport( 'mcrypt' ) )
860
+        {
861
+            throw new ezcBaseExtensionNotFoundException( 'mcrypt', null, "PHP not compiled with --with-mcrypt." );
862
+        }
863
+
864
+        // Send NTLM type 1 message
865
+        $msg1 = base64_encode( $this->authNtlmMessageType1( $this->senderHost, $this->serverHost ) );
866
+
867
+        $this->sendData( "AUTH NTLM {$msg1}" );
868
+        if ( $this->getReplyCode( $serverResponse ) !== '334' )
869
+        {
870
+            throw new ezcMailTransportSmtpException( 'SMTP server does not accept AUTH NTLM.' );
871
+        }
872
+
873
+        // Parse NTLM type 2 message
874
+        $msg2 = base64_decode( trim( substr( $serverResponse, 4 ) ) );
875
+        $parts = array(
876
+                        substr( $msg2, 0, 8 ),  // Signature ("NTLMSSP\0")
877
+                        substr( $msg2, 8, 4 ),  // Message type
878
+                        substr( $msg2, 12, 8 ), // Target name (security buffer)
879
+                        substr( $msg2, 20, 4 ), // Flags
880
+                        substr( $msg2, 24, 8 ), // Challenge
881
+                        substr( $msg2, 32 )     // The rest of information
882
+                      );
883
+
884
+        $challenge = $parts[4];
885
+
886
+        // Send NTLM type 3 message
887
+        $msg3 = base64_encode( $this->authNtlmMessageType3( $challenge, $this->user, $this->password, $this->senderHost, $this->serverHost ) );
888
+
889
+        $this->sendData( $msg3 );
890
+        if ( $this->getReplyCode( $serverResponse ) !== '235' )
891
+        {
892
+            throw new ezcMailTransportSmtpException( 'SMTP server did not allow NTLM authentication.' );
893
+        }
894
+    }
895
+
896
+    /**
897
+     * Tries to login to the SMTP server with 'AUTH LOGIN' and returns true if
898
+     * successful.
899
+     *
900
+     * @throws ezcMailTransportSmtpException
901
+     *         if the SMTP server returned an error
902
+     * @return bool
903
+     */
904
+    protected function authLogin()
905
+    {
906
+        $this->sendData( 'AUTH LOGIN' );
907
+        if ( $this->getReplyCode( $error ) !== '334' )
908
+        {
909
+            throw new ezcMailTransportSmtpException( 'SMTP server does not accept AUTH LOGIN.' );
910
+        }
911
+
912
+        $this->sendData( base64_encode( $this->user ) );
913
+        if ( $this->getReplyCode( $error ) !== '334' )
914
+        {
915
+            throw new ezcMailTransportSmtpException( "SMTP server did not accept login: {$this->user}." );
916
+        }
917
+
918
+        $this->sendData( base64_encode( $this->password ) );
919
+        if ( $this->getReplyCode( $error ) !== '235' )
920
+        {
921
+            throw new ezcMailTransportSmtpException( 'SMTP server did not accept the provided username and password.' );
922
+        }
923
+
924
+        return true;
925
+    }
926
+
927
+    /**
928
+     * Tries to login to the SMTP server with 'AUTH PLAIN' and returns true if
929
+     * successful.
930
+     *
931
+     * @throws ezcMailTransportSmtpException
932
+     *         if the SMTP server returned an error
933
+     * @return bool
934
+     */
935
+    protected function authPlain()
936
+    {
937
+        $digest = base64_encode( "\0{$this->user}\0{$this->password}" );
938
+        $this->sendData( "AUTH PLAIN {$digest}" );
939
+        if ( $this->getReplyCode( $error ) !== '235' )
940
+        {
941
+            throw new ezcMailTransportSmtpException( 'SMTP server did not accept the provided username and password.' );
942
+        }
943
+
944
+        return true;
945
+    }
946
+
947
+    /**
948
+     * Sends the QUIT command to the server and breaks the connection.
949
+     *
950
+     * @throws ezcMailTransportSmtpException
951
+     *         if the QUIT command failed
952
+     */
953
+    public function disconnect()
954
+    {
955
+        if ( $this->status != self::STATUS_NOT_CONNECTED )
956
+        {
957
+            $this->sendData( 'QUIT' );
958
+            $replyCode = $this->getReplyCode( $error ) !== '221';
959
+            fclose( $this->connection );
960
+            $this->status = self::STATUS_NOT_CONNECTED;
961
+            if ( $replyCode )
962
+            {
963
+                throw new ezcMailTransportSmtpException( "QUIT failed with error: $error." );
964
+            }
965
+        }
966
+    }
967
+
968
+    /**
969
+     * Returns the $email enclosed within '< >'.
970
+     *
971
+     * If $email is already enclosed within '< >' it is returned unmodified.
972
+     *
973
+     * @param string $email
974
+     * $return string
975
+     */
976
+    protected function composeSmtpMailAddress( $email )
977
+    {
978
+        if ( !preg_match( "/<.+>/", $email ) )
979
+        {
980
+            $email = "<{$email}>";
981
+        }
982
+        return $email;
983
+    }
984
+
985
+    /**
986
+     * Sends the MAIL FROM command, with the sender's mail address $from.
987
+     *
988
+     * This method must be called once to tell the server the sender address.
989
+     *
990
+     * The sender's mail address $from may be enclosed in angle brackets.
991
+     *
992
+     * @throws ezcMailTransportSmtpException
993
+     *         if there is no valid connection
994
+     *         or if the MAIL FROM command failed
995
+     * @param string $from
996
+     */
997
+    protected function cmdMail( $from )
998
+    {
999
+        if ( $this->status === self::STATUS_AUTHENTICATED )
1000
+        {
1001
+            $this->sendData( 'MAIL FROM:' . $this->composeSmtpMailAddress( $from ) . '' );
1002
+            if ( $this->getReplyCode( $error ) !== '250' )
1003
+            {
1004
+                throw new ezcMailTransportSmtpException( "MAIL FROM failed with error: $error." );
1005
+            }
1006
+        }
1007
+    }
1008
+
1009
+    /**
1010
+     * Sends the 'RCTP TO' to the server with the address $email.
1011
+     *
1012
+     * This method must be called once for each recipient of the mail
1013
+     * including cc and bcc recipients. The RCPT TO commands control
1014
+     * where the mail is actually sent. It does not affect the headers
1015
+     * of the email.
1016
+     *
1017
+     * The recipient mail address $email may be enclosed in angle brackets.
1018
+     *
1019
+     * @throws ezcMailTransportSmtpException
1020
+     *         if there is no valid connection
1021
+     *         or if the RCPT TO command failed
1022
+     * @param string $email
1023
+     */
1024
+    protected function cmdRcpt( $email )
1025
+    {
1026
+        if ( $this->status === self::STATUS_AUTHENTICATED )
1027
+        {
1028
+            $this->sendData( 'RCPT TO:' . $this->composeSmtpMailAddress( $email ) );
1029
+            if ( $this->getReplyCode( $error ) !== '250' )
1030
+            {
1031
+                throw new ezcMailTransportSmtpException( "RCPT TO failed with error: $error." );
1032
+            }
1033
+        }
1034
+    }
1035
+
1036
+    /**
1037
+     * Sends the DATA command to the SMTP server.
1038
+     *
1039
+     * @throws ezcMailTransportSmtpException
1040
+     *         if there is no valid connection
1041
+     *         or if the DATA command failed
1042
+     */
1043
+    protected function cmdData()
1044
+    {
1045
+        if ( $this->status === self::STATUS_AUTHENTICATED )
1046
+        {
1047
+            $this->sendData( 'DATA' );
1048
+            if ( $this->getReplyCode( $error ) !== '354' )
1049
+            {
1050
+                throw new ezcMailTransportSmtpException( "DATA failed with error: $error." );
1051
+            }
1052
+        }
1053
+    }
1054
+
1055
+    /**
1056
+     * Sends $data to the SMTP server through the connection.
1057
+     *
1058
+     * This method appends one line-break at the end of $data.
1059
+     *
1060
+     * @throws ezcMailTransportSmtpException
1061
+     *         if there is no valid connection
1062
+     * @param string $data
1063
+     */
1064
+    protected function sendData( $data )
1065
+    {
1066
+        if ( is_resource( $this->connection ) )
1067
+        {
1068
+            if ( fwrite( $this->connection, $data . self::CRLF,
1069
+                        strlen( $data ) + strlen( self::CRLF  ) ) === false )
1070
+            {
1071
+                throw new ezcMailTransportSmtpException( 'Could not write to SMTP stream. It was probably terminated by the host.' );
1072
+            }
1073
+        }
1074
+    }
1075
+
1076
+    /**
1077
+     * Returns data received from the connection stream.
1078
+     *
1079
+     * @throws ezcMailTransportSmtpException
1080
+     *         if there is no valid connection
1081
+     * @return string
1082
+     */
1083
+    protected function getData()
1084
+    {
1085
+        $data = '';
1086
+        $line   = '';
1087
+        $loops  = 0;
1088
+
1089
+        if ( is_resource( $this->connection ) )
1090
+        {
1091
+            while ( ( strpos( $data, self::CRLF ) === false || (string) substr( $line, 3, 1 ) !== ' ' ) && $loops < 100 )
1092
+            {
1093
+                $line = fgets( $this->connection, 512 );
1094
+                $data .= $line;
1095
+                $loops++;
1096
+            }
1097
+            return $data;
1098
+        }
1099
+        throw new ezcMailTransportSmtpException( 'Could not read from SMTP stream. It was probably terminated by the host.' );
1100
+    }
1101
+
1102
+    /**
1103
+     * Returns the reply code of the last message from the server.
1104
+     *
1105
+     * $line contains the complete data retrieved from the stream. This can be used to retrieve
1106
+     * the error message in case of an error.
1107
+     *
1108
+     * @throws ezcMailTransportSmtpException
1109
+     *         if it could not fetch data from the stream
1110
+     * @param string &$line
1111
+     * @return string
1112
+     */
1113
+    protected function getReplyCode( &$line )
1114
+    {
1115
+        return substr( trim( $line = $this->getData() ), 0, 3 );
1116
+    }
1117
+
1118
+    /**
1119
+     * Generates an alpha-numeric random string with the specified $length.
1120
+     *
1121
+     * Used in the DIGEST-MD5 authentication method.
1122
+     *
1123
+     * @param int $length
1124
+     * @return string
1125
+     */
1126
+    protected function generateNonce( $length = 32 )
1127
+    {
1128
+        $chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
1129
+        $result = '';
1130
+        for ( $i = 0; $i < $length; $i++ )
1131
+        {
1132
+            $result .= $chars[mt_rand( 0, strlen( $chars ) - 1 )];
1133
+        }
1134
+
1135
+        return $result;
1136
+    }
1137
+
1138
+    /**
1139
+     * Generates an NTLM type 1 message.
1140
+     *
1141
+     * @param string $workstation
1142
+     * @param string $domain
1143
+     * @return string
1144
+     */
1145
+    protected function authNtlmMessageType1( $workstation, $domain )
1146
+    {
1147
+        $parts = array(
1148
+                        "NTLMSSP\x00",
1149
+                        "\x01\x00\x00\x00",
1150
+                        "\x07\x32\x00\x00",
1151
+                        $this->authNtlmSecurityBuffer( $domain, 32 + strlen( $workstation ) ),
1152
+                        $this->authNtlmSecurityBuffer( $workstation, 32 ),
1153
+                        $workstation,
1154
+                        $domain
1155
+                      );
1156
+
1157
+        return implode( "", $parts );
1158
+    }
1159
+
1160
+    /**
1161
+     * Generates an NTLM type 3 message from the $challenge sent by the SMTP
1162
+     * server in an NTLM type 2 message.
1163
+     *
1164
+     * @param string $challenge
1165
+     * @param string $user
1166
+     * @param string $password
1167
+     * @param string $workstation
1168
+     * @param string $domain
1169
+     * @return string
1170
+     */
1171
+    protected function authNtlmMessageType3( $challenge, $user, $password, $workstation, $domain )
1172
+    {
1173
+        $domain = chunk_split( $domain, 1, "\x00" );
1174
+        $user = chunk_split( $user, 1, "\x00" );
1175
+        $workstation = chunk_split( $workstation, 1, "\x00" );
1176
+        $lm = '';
1177
+        $ntlm = $this->authNtlmResponse( $challenge, $password );
1178
+        $session = '';
1179
+
1180
+        $domainOffset = 64;
1181
+        $userOffset = $domainOffset + strlen( $domain );
1182
+        $workstationOffset = $userOffset + strlen( $user );
1183
+        $lmOffset = $workstationOffset + strlen( $workstation );
1184
+        $ntlmOffset = $lmOffset + strlen( $lm );
1185
+        $sessionOffset = $ntlmOffset + strlen( $ntlm );
1186
+
1187
+        $parts = array(
1188
+                        "NTLMSSP\x00",
1189
+                        "\x03\x00\x00\x00",
1190
+                        $this->authNtlmSecurityBuffer( $lm, $lmOffset ),
1191
+                        $this->authNtlmSecurityBuffer( $ntlm, $ntlmOffset ),
1192
+                        $this->authNtlmSecurityBuffer( $domain, $domainOffset ),
1193
+                        $this->authNtlmSecurityBuffer( $user, $userOffset ),
1194
+                        $this->authNtlmSecurityBuffer( $workstation, $workstationOffset ),
1195
+                        $this->authNtlmSecurityBuffer( $session, $sessionOffset ),
1196
+                        "\x01\x02\x00\x00",
1197
+                        $domain,
1198
+                        $user,
1199
+                        $workstation,
1200
+                        $lm,
1201
+                        $ntlm
1202
+                      );
1203
+
1204
+        return implode( '', $parts );
1205
+    }
1206
+
1207
+    /**
1208
+     * Calculates an NTLM response to be used in the creation of the NTLM type 3
1209
+     * message.
1210
+     *
1211
+     * @param string $challenge
1212
+     * @param string $password
1213
+     * @return string
1214
+     */
1215
+    protected function authNtlmResponse( $challenge, $password )
1216
+    {
1217
+        $password = chunk_split( $password, 1, "\x00" );
1218
+        $password = hash( 'md4', $password, true );
1219
+        $password .= str_repeat( "\x00", 21 - strlen( $password ) );
1220
+
1221
+        $td = mcrypt_module_open( 'des', '', 'ecb', '' );
1222
+        $iv = mcrypt_create_iv( mcrypt_enc_get_iv_size( $td ), MCRYPT_RAND );
1223
+
1224
+        $response = '';        
1225
+        for ( $i = 0; $i < 21; $i += 7 )
1226
+        {
1227
+            $packed = '';
1228
+            for ( $p = $i; $p < $i + 7; $p++ )
1229
+            {
1230
+                $packed .= str_pad( decbin( ord( substr( $password, $p, 1 ) ) ), 8, '0', STR_PAD_LEFT );
1231
+            }
1232
+
1233
+            $key = '';
1234
+            for ( $p = 0; $p < strlen( $packed ); $p += 7 )
1235
+            {
1236
+                $s = substr( $packed, $p, 7 );
1237
+                $b = $s . ( ( substr_count( $s, '1' ) % 2 ) ? '0' : '1' );
1238
+                $key .= chr( bindec( $b ) );
1239
+            }
1240
+
1241
+            mcrypt_generic_init( $td, $key, $iv );
1242
+            $response .= mcrypt_generic( $td, $challenge );
1243
+            mcrypt_generic_deinit( $td );
1244
+        }
1245
+        mcrypt_module_close( $td );
1246
+
1247
+        return $response;
1248
+    }
1249
+
1250
+    /**
1251
+     * Creates an NTLM security buffer information string.
1252
+     *
1253
+     * The structure of the security buffer is:
1254
+     *  - a short containing the length of the buffer content in bytes (may be
1255
+     *    zero).
1256
+     *  - a short containing the allocated space for the buffer in bytes (greater
1257
+     *    than or equal to the length; typically the same as the length).
1258
+     *  - a long containing the offset to the start of the buffer in bytes (from
1259
+     *    the beginning of the NTLM message).
1260
+     *
1261
+     * Example:
1262
+     *  - buffer content length: 1234 bytes (0xd204 in hexa)
1263
+     *  - allocated space: 1234 bytes( 0xd204 in hexa)
1264
+     *  - offset: 4321 bytes (0xe1100000 in hexa)
1265
+     *
1266
+     * then the security buffer would be 0xd204d204e1100000 (in hexa).
1267
+     *
1268
+     * @param string $text
1269
+     * @param int $offset
1270
+     * @return string
1271
+     */
1272
+    protected function authNtlmSecurityBuffer( $text, $offset )
1273
+    {
1274
+        return pack( 'v', strlen( $text ) ) .
1275
+               pack( 'v', strlen( $text ) ) .
1276
+               pack( 'V', $offset );
1277
+    }
1278
+}
1279
+?>
... ...
@@ -0,0 +1,21 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailTransportSmtp class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * This class is deprecated. Use ezcMailSmtpTransport instead.
13
+ *
14
+ * @package Mail
15
+ * @version 1.7.1
16
+ * @ignore
17
+ */
18
+class ezcMailTransportSmtp extends ezcMailSmtpTransport
19
+{
20
+}
21
+?>
... ...
@@ -0,0 +1,208 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailStorageSet class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ */
10
+
11
+/**
12
+ * ezcMailStorageSet is a wrapper around other mail sets and provides saving of
13
+ * mail sources to files.
14
+ *
15
+ * Example:
16
+ *
17
+ * <code>
18
+ * // create a new POP3 transport object and a mail parser object
19
+ * $transport = new ezcMailPop3Transport( "server" );
20
+ * $transport->authenticate( "username", "password" );
21
+ * $parser = new ezcMailParser();
22
+ *
23
+ * // wrap around the set returned by fetchAll()
24
+ * // and specify that the sources are to be saved in the folder /tmp/cache
25
+ * $set = new ezcMailStorageSet( $transport->fetchAll(), '/tmp/cache' );
26
+ *
27
+ * // parse the storage set
28
+ * $mail = $parser->parseMail( $set );
29
+ *
30
+ * // get the filenames of the saved mails in the set.
31
+ * // The file names are composed of process ID + current time + a counter
32
+ * // This array must be saved to be used on a subsequent request
33
+ * $files = $set->getSourceFiles();
34
+ *
35
+ * // get the source of the 4th saved mail.
36
+ * // This can be on a subsequent request if the $files array was saved from
37
+ * // a previous request
38
+ * $source = file_get_contents( $files[3] );
39
+ * </code>
40
+ *
41
+ * @package Mail
42
+ * @version 1.7.1
43
+ */
44
+class ezcMailStorageSet implements ezcMailParserSet
45
+{
46
+    /**
47
+     * Holds the pointer to the current file which holds the mail source.
48
+     *
49
+     * @var filepointer
50
+     */
51
+    private $writer = null;
52
+
53
+    /**
54
+     * Holds the temporary file name where contents are being initially written
55
+     * (until set is parsed and Message-ID is extracted).
56
+     *
57
+     * @var string
58
+     */
59
+    private $file = null;
60
+
61
+    /**
62
+     * Holds the path where the files are written (specified in the constructor).
63
+     *
64
+     * @var string
65
+     */
66
+    private $path = null;
67
+
68
+    /**
69
+     * This variable is true if there is more data in the mail that is being fetched.
70
+     *
71
+     * @var bool
72
+     */
73
+    private $hasMoreMailData = false;
74
+
75
+    /**
76
+     * Holds the location where to store the message sources.
77
+     *
78
+     * @var string
79
+     */
80
+    private $location;
81
+
82
+    /**
83
+     * Holds the filenames holding the sources of the mails in this set.
84
+     *
85
+     * @var array(string)
86
+     */
87
+    private $files = null;
88
+
89
+    /**
90
+     * Holds the current email number being parsed.
91
+     *
92
+     * @var int
93
+     */
94
+    private $counter;
95
+
96
+    /**
97
+     * Constructs a new storage set around the provided set.
98
+     *
99
+     * $location specifies where to save the message sources. This directory MUST
100
+     * exist and must be writable.
101
+     *
102
+     * @param ezcMailParserSet $set
103
+     * @param string $location
104
+     */
105
+    public function __construct( ezcMailParserSet $set, $location )
106
+    {
107
+        $this->set = $set;
108
+        $this->location = $location;
109
+        $this->path = rtrim( $this->location, DIRECTORY_SEPARATOR ) . DIRECTORY_SEPARATOR;
110
+        $this->hasMoreMailData = false;
111
+        $this->counter = 0;
112
+    }
113
+
114
+    /**
115
+     * Destructs the set.
116
+     *
117
+     * Closes any open files.
118
+     */
119
+    public function __destruct()
120
+    {
121
+        if ( is_resource( $this->writer ) )
122
+        {
123
+            fclose( $this->writer );
124
+            $this->writer = null;
125
+        }
126
+    }
127
+
128
+    /**
129
+     * Returns one line of data from the current mail in the set.
130
+     *
131
+     * Null is returned if there is no current mail in the set or
132
+     * the end of the mail is reached,
133
+     *
134
+     * It also writes the line of data to the current file. If the line contains
135
+     * a Message-ID header then the value in the header will be used to rename the
136
+     * file.
137
+     *
138
+     * @return string
139
+     */
140
+    public function getNextLine()
141
+    {
142
+        if ( $this->hasMoreMailData === false )
143
+        {
144
+            $this->nextMail();
145
+            $this->hasMoreMailData = true;
146
+        }
147
+
148
+        $line = $this->set->getNextLine();
149
+        fputs( $this->writer, $line );
150
+        return $line;
151
+    }
152
+
153
+    /**
154
+     * Moves the set to the next mail and returns true upon success.
155
+     *
156
+     * False is returned if there are no more mail in the set.
157
+     *
158
+     * @return bool
159
+     */
160
+    public function nextMail()
161
+    {
162
+        if ( $this->writer !== null )
163
+        {
164
+            fclose( $this->writer );
165
+            $this->files[] = $this->path . $this->file;
166
+            $this->writer = null;
167
+        }
168
+        $mail = $this->set->nextMail();
169
+        if ( $mail === true || $this->hasMoreMailData === false )
170
+        {
171
+            $this->counter++;
172
+
173
+            // Temporary file name for the mail source
174
+            $this->file = getmypid() . '-' . time() . '-' . $this->counter;
175
+            $writer = fopen( $this->path . $this->file, 'w' );
176
+            if ( $writer !== false )
177
+            {
178
+                $this->writer = $writer;
179
+            }
180
+            return $mail;
181
+        }
182
+        return false;
183
+    }
184
+
185
+    /**
186
+     * Returns whether the set has mails.
187
+     *
188
+     * @return bool
189
+     */
190
+    public function hasData()
191
+    {
192
+        return $this->set->hasData();
193
+    }
194
+
195
+    /**
196
+     * Returns an array of the filenames holding the sources of the mails in this set.
197
+     *
198
+     * The format of the returned array is:
199
+     * array( 0 => 'location/filename1', 1 => 'location/filename2',...)
200
+     *
201
+     * @return array(string)
202
+     */
203
+    public function getSourceFiles()
204
+    {
205
+        return $this->files;
206
+    }
207
+}
208
+?>
... ...
@@ -0,0 +1,257 @@
1
+<?php
2
+/**
3
+ * File containing the ezcMailTransportConnection class
4
+ *
5
+ * @package Mail
6
+ * @version 1.7.1
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ * @access private
10
+ */
11
+
12
+/**
13
+ * ezcMailTransportConnection is an internal class used to connect to
14
+ * a server and have line based communication with.
15
+ *
16
+ * @property ezcMailTransportOptions $options
17
+ *           Holds the options you can set to the transport connection.
18
+ *
19
+ * @package Mail
20
+ * @version 1.7.1
21
+ * @access private
22
+ */
23
+class ezcMailTransportConnection
24
+{
25
+    /**
26
+     * The line-break characters to send to the server.
27
+     */
28
+    const CRLF = "\r\n";
29
+
30
+    /**
31
+     * The connection to the server or null if there is none.
32
+     *
33
+     * @var resource
34
+     */
35
+    private $connection = null;
36
+
37
+    /**
38
+     * Options for a transport connection.
39
+     *
40
+     * @var ezcMailTransportOptions
41
+     */
42
+    private $options;
43
+
44
+    /**
45
+     * Constructs a new connection to the $server using the port $port.
46
+     *
47
+     * {@link ezcMailTransportOptions} for options you can specify for a
48
+     * transport connection.
49
+     *
50
+     * @todo The @ should be removed when PHP doesn't throw warnings for connect problems.
51
+     *
52
+     * @throws ezcMailTransportException
53
+     *         if a connection to the server could not be made
54
+     * @throws ezcBaseExtensionNotFoundException
55
+     *         if trying to use SSL and the extension openssl is not installed
56
+     * @throws ezcBasePropertyNotFoundException
57
+     *         if $options contains a property not defined
58
+     * @throws ezcBaseValueException
59
+     *         if $options contains a property with a value not allowed
60
+     * @param string $server
61
+     * @param int $port
62
+     * @param ezcMailTransportOptions $options
63
+     */
64
+    public function __construct( $server, $port, ezcMailTransportOptions $options = null )
65
+    {
66
+        $errno = null;
67
+        $errstr = null;
68
+        if ( $options === null )
69
+        {
70
+            $this->options = new ezcMailTransportOptions();
71
+        }
72
+        else
73
+        {
74
+            $this->options = $options;
75
+        }
76
+        if ( $this->options->ssl )
77
+        {
78
+            if ( ezcBaseFeatures::hasExtensionSupport( 'openssl' ) !== true )
79
+            {
80
+                throw new ezcBaseExtensionNotFoundException( 'openssl', null, "PHP not configured --with-openssl." );
81
+            }
82
+            $this->connection = @stream_socket_client( "ssl://{$server}:{$port}",
83
+                                                       $errno, $errstr, $this->options->timeout );
84
+        }
85
+        else
86
+        {
87
+            $this->connection = @stream_socket_client( "tcp://{$server}:{$port}",
88
+                                                       $errno, $errstr, $this->options->timeout );
89
+        }
90
+
91
+        if ( is_resource( $this->connection ) )
92
+        {
93
+            stream_set_timeout( $this->connection, $this->options->timeout );
94
+        }
95
+        else
96
+        {
97
+            throw new ezcMailTransportException( "Failed to connect to the server: {$server}:{$port}." );
98
+        }
99
+    }
100
+
101
+    /**
102
+     * Sets the property $name to $value.
103
+     *
104
+     * @throws ezcBasePropertyNotFoundException
105
+     *         if the property $name does not exist
106
+     * @throws ezcBaseValueException
107
+     *         if $value is not accepted for the property $name
108
+     * @param string $name
109
+     * @param mixed $value
110
+     * @ignore
111
+     */
112
+    public function __set( $name, $value )
113
+    {
114
+        switch ( $name )
115
+        {
116
+            case 'options':
117
+                if ( !( $value instanceof ezcMailTransportOptions ) )
118
+                {
119
+                    throw new ezcBaseValueException( 'options', $value, 'instanceof ezcMailTransportOptions' );
120
+                }
121
+                $this->options = $value;
122
+                break;
123
+
124
+            default:
125
+                throw new ezcBasePropertyNotFoundException( $name );
126
+        }
127
+    }
128
+
129
+    /**
130
+     * Returns the value of the property $name.
131
+     *
132
+     * @throws ezcBasePropertyNotFoundException
133
+     *         if the property $name does not exist
134
+     * @param string $name
135
+     * @ignore
136
+     */
137
+    public function __get( $name )
138
+    {
139
+        switch ( $name )
140
+        {
141
+            case 'options':
142
+                return $this->options;
143
+
144
+            default:
145
+                throw new ezcBasePropertyNotFoundException( $name );
146
+        }
147
+    }
148
+
149
+    /**
150
+     * Returns true if the property $name is set, otherwise false.
151
+     *
152
+     * @param string $name
153
+     * @return bool
154
+     * @ignore
155
+     */
156
+    public function __isset( $name )
157
+    {
158
+        switch ( $name )
159
+        {
160
+            case 'options':
161
+                return true;
162
+
163
+            default:
164
+                return false;
165
+        }
166
+    }
167
+
168
+    /**
169
+     * Send $data to the server through the connection.
170
+     *
171
+     * This method appends one line-break at the end of $data.
172
+     *
173
+     * @throws ezcMailTransportException
174
+     *         if there is no valid connection.
175
+     * @param string $data
176
+     */
177
+    public function sendData( $data )
178
+    {
179
+        if ( is_resource( $this->connection ) )
180
+        {
181
+            if ( fwrite( $this->connection, $data . self::CRLF,
182
+                        strlen( $data ) + strlen( self::CRLF  ) ) === false )
183
+            {
184
+                throw new ezcMailTransportException( 'Could not write to the stream. It was probably terminated by the host.' );
185
+            }
186
+        }
187
+    }
188
+
189
+    /**
190
+     * Returns one line of data from the stream.
191
+     *
192
+     * The returned line will have linebreaks removed if the $trim option is set.
193
+     *
194
+     * @throws ezcMailTransportConnection
195
+     *         if there is no valid connection
196
+     * @param bool $trim
197
+     * @return string
198
+     */
199
+    public function getLine( $trim = false )
200
+    {
201
+        $data = '';
202
+        $line = '';
203
+
204
+        if ( is_resource( $this->connection ) )
205
+        {
206
+            // in case there is a problem with the connection fgets() returns false
207
+            while ( strpos( $data, self::CRLF ) === false )
208
+            {
209
+                $line = fgets( $this->connection, 512 );
210
+
211
+                /* If the mail server aborts the connection, fgets() will
212
+                 * return false. We need to throw an exception here to prevent
213
+                 * the calling code from looping indefinitely. */
214
+                if ( $line === false )
215
+                {
216
+                    $this->connection = null;
217
+                    throw new ezcMailTransportException( 'Could not read from the stream. It was probably terminated by the host.' );
218
+                }
219
+
220
+                $data .= $line;
221
+            }
222
+
223
+            if ( $trim == false )
224
+            {
225
+                return $data;
226
+            }
227
+            else
228
+            {
229
+                return rtrim( $data, "\r\n" );
230
+            }
231
+        }
232
+        throw new ezcMailTransportException( 'Could not read from the stream. It was probably terminated by the host.' );
233
+    }
234
+
235
+    /**
236
+     * Returns if the connection is open.
237
+     *
238
+     * @return bool
239
+     */
240
+    public function isConnected()
241
+    {
242
+        return is_resource( $this->connection );
243
+    }
244
+
245
+    /**
246
+     * Closes the connection to the server if it is open.
247
+     */
248
+    public function close()
249
+    {
250
+        if ( is_resource( $this->connection ) )
251
+        {
252
+            fclose( $this->connection );
253
+            $this->connection = null;
254
+        }
255
+    }
256
+}
257
+?>
... ...
@@ -0,0 +1,94 @@
1
+<?php
2
+declare(encoding="latin1");
3
+
4
+/**
5
+ * File containing the ezcMailVariableSet class
6
+ *
7
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
8
+ * @license http://ez.no/licenses/new_bsd New BSD License
9
+ * @version 1.7.1
10
+ * @package Mail
11
+ */
12
+
13
+/**
14
+ * ezcMailVariableSet is an internal class that can be used to parse mail directly from
15
+ * a string variable in your script.
16
+ *
17
+ * The variable should contain the complete mail message in RFC822 format.
18
+ *
19
+ * Example:
20
+ *
21
+ * <code>
22
+ * $mail = "To: [email protected]\r\nSubject: Test mail    .....";
23
+ * $set = new ezcMailVariableSet( $mail ) );
24
+ * $parser = new ezcMailParser();
25
+ * $mail = $parser->parseMail( $set );
26
+ * </code>
27
+ *
28
+ * @package Mail
29
+ * @version 1.7.1
30
+ */
31
+class ezcMailVariableSet implements ezcMailParserSet
32
+{
33
+    /**
34
+     * Holds the mail split by linebreaks.
35
+     *
36
+     * @var array(string)
37
+     */
38
+    private $mail = array();
39
+
40
+    /**
41
+     * Constructs a new set that contains one mail from $mail.
42
+     *
43
+     * @param string $mail
44
+     */
45
+    public function __construct( $mail )
46
+    {
47
+        $this->mail = preg_split( "/\r\n|\n/", $mail );
48
+        reset( $this->mail );
49
+    }
50
+
51
+    /**
52
+     * Returns one line of data from the current mail in the set.
53
+     *
54
+     * Null is returned if there is no current mail in the set or
55
+     * the end of the mail is reached.
56
+     *
57
+     * @return string
58
+     */
59
+    public function getNextLine()
60
+    {
61
+        $line = current( $this->mail );
62
+        next( $this->mail );
63
+
64
+        if ( $line === false )
65
+        {
66
+            return null;
67
+        }
68
+
69
+        return $line . "\n";
70
+    }
71
+
72
+    /**
73
+     * Moves the set to the next mail and returns true upon success.
74
+     *
75
+     * False is returned if there are no more mail in the set (always).
76
+     *
77
+     * @return bool
78
+     */
79
+    public function nextMail()
80
+    {
81
+        return false;
82
+    }
83
+
84
+    /**
85
+     * Returns whether the variable set contains mails.
86
+     *
87
+     * @return bool
88
+     */
89
+    public function hasData()
90
+    {
91
+        return ( count( $this->mail ) > 1 );
92
+    }
93
+}
94
+?>
... ...
@@ -0,0 +1,46 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the Archive component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.4.1
8
+ * @filesource
9
+ * @package Archive
10
+ */
11
+
12
+return array(
13
+    'ezcArchiveException'                 => 'Archive/exceptions/exception.php',
14
+    'ezcArchiveBlockSizeException'        => 'Archive/exceptions/block_size.php',
15
+    'ezcArchiveChecksumException'         => 'Archive/exceptions/checksum.php',
16
+    'ezcArchiveEmptyException'            => 'Archive/exceptions/empty.php',
17
+    'ezcArchiveEntryPrefixException'      => 'Archive/exceptions/entry_prefix.php',
18
+    'ezcArchiveInternalException'         => 'Archive/exceptions/internal_exception.php',
19
+    'ezcArchiveIoException'               => 'Archive/exceptions/io.php',
20
+    'ezcArchiveUnknownTypeException'      => 'Archive/exceptions/unknown_type.php',
21
+    'ezcArchiveValueException'            => 'Archive/exceptions/value.php',
22
+    'ezcArchive'                          => 'Archive/archive.php',
23
+    'ezcArchiveV7Header'                  => 'Archive/tar/headers/v7.php',
24
+    'ezcArchiveV7Tar'                     => 'Archive/tar/v7.php',
25
+    'ezcArchiveFile'                      => 'Archive/file/file.php',
26
+    'ezcArchiveLocalFileHeader'           => 'Archive/zip/headers/local_file.php',
27
+    'ezcArchiveUstarHeader'               => 'Archive/tar/headers/ustar.php',
28
+    'ezcArchiveUstarTar'                  => 'Archive/tar/ustar.php',
29
+    'ezcArchiveBlockFile'                 => 'Archive/file/block_file.php',
30
+    'ezcArchiveCallback'                  => 'Archive/interfaces/callback.php',
31
+    'ezcArchiveCentralDirectoryEndHeader' => 'Archive/zip/headers/central_directory_end.php',
32
+    'ezcArchiveCentralDirectoryHeader'    => 'Archive/zip/headers/central_directory.php',
33
+    'ezcArchiveCharacterFile'             => 'Archive/file/character_file.php',
34
+    'ezcArchiveChecksums'                 => 'Archive/utils/checksums.php',
35
+    'ezcArchiveEntry'                     => 'Archive/entry.php',
36
+    'ezcArchiveFileStructure'             => 'Archive/structs/file.php',
37
+    'ezcArchiveFileType'                  => 'Archive/utils/file_type.php',
38
+    'ezcArchiveGnuHeader'                 => 'Archive/tar/headers/gnu.php',
39
+    'ezcArchiveGnuTar'                    => 'Archive/tar/gnu.php',
40
+    'ezcArchiveOptions'                   => 'Archive/options/archive.php',
41
+    'ezcArchivePaxHeader'                 => 'Archive/tar/headers/pax.php',
42
+    'ezcArchivePaxTar'                    => 'Archive/tar/pax.php',
43
+    'ezcArchiveStatMode'                  => 'Archive/utils/stat_mode.php',
44
+    'ezcArchiveZip'                       => 'Archive/zip/zip.php',
45
+);
46
+?>
... ...
@@ -0,0 +1,58 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the Authentication component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2009 eZ systems as. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.3.1
8
+ * @filesource
9
+ * @package Authentication
10
+ */
11
+
12
+return array(
13
+    'ezcAuthenticationException'                         => 'Authentication/exceptions/authentication_exception.php',
14
+    'ezcAuthenticationOpenidException'                   => 'Authentication/exceptions/openid_exception.php',
15
+    'ezcAuthenticationTypekeyException'                  => 'Authentication/exceptions/typekey_exception.php',
16
+    'ezcAuthenticationGroupException'                    => 'Authentication/exceptions/group_exception.php',
17
+    'ezcAuthenticationLdapException'                     => 'Authentication/exceptions/ldap_exception.php',
18
+    'ezcAuthenticationOpenidConnectionException'         => 'Authentication/exceptions/openid_connection_exception.php',
19
+    'ezcAuthenticationOpenidModeNotSupportedException'   => 'Authentication/exceptions/openid_mode_exception.php',
20
+    'ezcAuthenticationOpenidRedirectException'           => 'Authentication/exceptions/openid_redirect_exception.php',
21
+    'ezcAuthenticationTypekeyPublicKeysInvalidException' => 'Authentication/exceptions/typekey_invalid_exception.php',
22
+    'ezcAuthenticationTypekeyPublicKeysMissingException' => 'Authentication/exceptions/typekey_missing_exception.php',
23
+    'ezcAuthenticationBignumLibrary'                     => 'Authentication/math/bignum_library.php',
24
+    'ezcAuthenticationCredentials'                       => 'Authentication/credentials/credentials.php',
25
+    'ezcAuthenticationDataFetch'                         => 'Authentication/interfaces/data_fetch.php',
26
+    'ezcAuthenticationFilter'                            => 'Authentication/interfaces/authentication_filter.php',
27
+    'ezcAuthenticationFilterOptions'                     => 'Authentication/options/filter_options.php',
28
+    'ezcAuthenticationOpenidStore'                       => 'Authentication/filters/openid/openid_store.php',
29
+    'ezcAuthenticationOpenidStoreOptions'                => 'Authentication/options/openid_store_options.php',
30
+    'ezcAuthentication'                                  => 'Authentication/authentication.php',
31
+    'ezcAuthenticationBcmathLibrary'                     => 'Authentication/math/bcmath_library.php',
32
+    'ezcAuthenticationGmpLibrary'                        => 'Authentication/math/gmp_library.php',
33
+    'ezcAuthenticationGroupFilter'                       => 'Authentication/filters/group/group_filter.php',
34
+    'ezcAuthenticationGroupOptions'                      => 'Authentication/options/group_options.php',
35
+    'ezcAuthenticationHtpasswdFilter'                    => 'Authentication/filters/htpasswd/htpasswd_filter.php',
36
+    'ezcAuthenticationHtpasswdOptions'                   => 'Authentication/options/htpasswd_options.php',
37
+    'ezcAuthenticationIdCredentials'                     => 'Authentication/credentials/id_credentials.php',
38
+    'ezcAuthenticationLdapFilter'                        => 'Authentication/filters/ldap/ldap_filter.php',
39
+    'ezcAuthenticationLdapInfo'                          => 'Authentication/filters/ldap/ldap_info.php',
40
+    'ezcAuthenticationLdapOptions'                       => 'Authentication/options/ldap_options.php',
41
+    'ezcAuthenticationMath'                              => 'Authentication/math/math.php',
42
+    'ezcAuthenticationOpenidAssociation'                 => 'Authentication/filters/openid/openid_association.php',
43
+    'ezcAuthenticationOpenidFileStore'                   => 'Authentication/filters/openid/openid_file_store.php',
44
+    'ezcAuthenticationOpenidFileStoreOptions'            => 'Authentication/options/openid_file_store_options.php',
45
+    'ezcAuthenticationOpenidFilter'                      => 'Authentication/filters/openid/openid_filter.php',
46
+    'ezcAuthenticationOpenidOptions'                     => 'Authentication/options/openid_options.php',
47
+    'ezcAuthenticationOptions'                           => 'Authentication/options/authentication_options.php',
48
+    'ezcAuthenticationPasswordCredentials'               => 'Authentication/credentials/password_credentials.php',
49
+    'ezcAuthenticationSession'                           => 'Authentication/session/authentication_session.php',
50
+    'ezcAuthenticationSessionOptions'                    => 'Authentication/options/session_options.php',
51
+    'ezcAuthenticationStatus'                            => 'Authentication/status/authentication_status.php',
52
+    'ezcAuthenticationTokenFilter'                       => 'Authentication/filters/token/token_filter.php',
53
+    'ezcAuthenticationTokenOptions'                      => 'Authentication/options/token_options.php',
54
+    'ezcAuthenticationTypekeyFilter'                     => 'Authentication/filters/typekey/typekey_filter.php',
55
+    'ezcAuthenticationTypekeyOptions'                    => 'Authentication/options/typekey_options.php',
56
+    'ezcAuthenticationUrl'                               => 'Authentication/url/url.php',
57
+);
58
+?>
... ...
@@ -0,0 +1,17 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the AuthenticationDatabaseTiein component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2007 eZ systems as. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.1
8
+ * @filesource
9
+ * @package AuthenticationDatabaseTiein
10
+ */
11
+
12
+return array(
13
+    'ezcAuthenticationDatabaseFilter'  => 'AuthenticationDatabaseTiein/filters/database/database_filter.php',
14
+    'ezcAuthenticationDatabaseInfo'    => 'AuthenticationDatabaseTiein/filters/database/database_info.php',
15
+    'ezcAuthenticationDatabaseOptions' => 'AuthenticationDatabaseTiein/options/database_options.php',
16
+);
17
+?>
... ...
@@ -0,0 +1,16 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the AuthenticationDatabaseTiein component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2007 eZ systems as. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.1
8
+ * @filesource
9
+ * @package AuthenticationDatabaseTiein
10
+ */
11
+
12
+return array(
13
+    'ezcAuthenticationOpenidDbStore'   => 'AuthenticationDatabaseTiein/filters/openid/openid_db_store.php',
14
+    'ezcAuthenticationOpenidDbStoreOptions' => 'AuthenticationDatabaseTiein/options/openid_db_store_options.php',
15
+);
16
+?>
... ...
@@ -0,0 +1,47 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the Base component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.8
8
+ * @filesource
9
+ * @package Base
10
+ */
11
+
12
+return array(
13
+    'ezcBaseException'                            => 'Base/exceptions/exception.php',
14
+    'ezcBaseFileException'                        => 'Base/exceptions/file_exception.php',
15
+    'ezcBaseAutoloadException'                    => 'Base/exceptions/autoload.php',
16
+    'ezcBaseDoubleClassRepositoryPrefixException' => 'Base/exceptions/double_class_repository_prefix.php',
17
+    'ezcBaseExtensionNotFoundException'           => 'Base/exceptions/extension_not_found.php',
18
+    'ezcBaseFileIoException'                      => 'Base/exceptions/file_io.php',
19
+    'ezcBaseFileNotFoundException'                => 'Base/exceptions/file_not_found.php',
20
+    'ezcBaseFilePermissionException'              => 'Base/exceptions/file_permission.php',
21
+    'ezcBaseFunctionalityNotSupportedException'   => 'Base/exceptions/functionality_not_supported.php',
22
+    'ezcBaseInitCallbackConfiguredException'      => 'Base/exceptions/init_callback_configured.php',
23
+    'ezcBaseInitInvalidCallbackClassException'    => 'Base/exceptions/invalid_callback_class.php',
24
+    'ezcBaseInvalidParentClassException'          => 'Base/exceptions/invalid_parent_class.php',
25
+    'ezcBasePropertyNotFoundException'            => 'Base/exceptions/property_not_found.php',
26
+    'ezcBasePropertyPermissionException'          => 'Base/exceptions/property_permission.php',
27
+    'ezcBaseSettingNotFoundException'             => 'Base/exceptions/setting_not_found.php',
28
+    'ezcBaseSettingValueException'                => 'Base/exceptions/setting_value.php',
29
+    'ezcBaseValueException'                       => 'Base/exceptions/value.php',
30
+    'ezcBaseWhateverException'                    => 'Base/exceptions/whatever.php',
31
+    'ezcBaseOptions'                              => 'Base/options.php',
32
+    'ezcBaseStruct'                               => 'Base/struct.php',
33
+    'ezcBase'                                     => 'Base/base.php',
34
+    'ezcBaseAutoloadOptions'                      => 'Base/options/autoload.php',
35
+    'ezcBaseConfigurationInitializer'             => 'Base/interfaces/configuration_initializer.php',
36
+    'ezcBaseExportable'                           => 'Base/interfaces/exportable.php',
37
+    'ezcBaseFeatures'                             => 'Base/features.php',
38
+    'ezcBaseFile'                                 => 'Base/file.php',
39
+    'ezcBaseFileFindContext'                      => 'Base/structs/file_find_context.php',
40
+    'ezcBaseInit'                                 => 'Base/init.php',
41
+    'ezcBaseMetaData'                             => 'Base/metadata.php',
42
+    'ezcBaseMetaDataPearReader'                   => 'Base/metadata/pear.php',
43
+    'ezcBaseMetaDataTarballReader'                => 'Base/metadata/tarball.php',
44
+    'ezcBasePersistable'                          => 'Base/interfaces/persistable.php',
45
+    'ezcBaseRepositoryDirectory'                  => 'Base/structs/repository_directory.php',
46
+);
47
+?>
... ...
@@ -0,0 +1,65 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the Cache component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.5
8
+ * @filesource
9
+ * @package Cache
10
+ */
11
+
12
+return array(
13
+    'ezcCacheException'                      => 'Cache/exceptions/exception.php',
14
+    'ezcCacheApcException'                   => 'Cache/exceptions/apc_exception.php',
15
+    'ezcCacheInvalidDataException'           => 'Cache/exceptions/invalid_data.php',
16
+    'ezcCacheInvalidIdException'             => 'Cache/exceptions/invalid_id.php',
17
+    'ezcCacheInvalidKeyException'            => 'Cache/exceptions/invalid_key.php',
18
+    'ezcCacheInvalidMetaDataException'       => 'Cache/exceptions/invalid_meta_data.php',
19
+    'ezcCacheInvalidStorageClassException'   => 'Cache/exceptions/invalid_storage_class.php',
20
+    'ezcCacheMemcacheException'              => 'Cache/exceptions/memcache_exception.php',
21
+    'ezcCacheStackIdAlreadyUsedException'    => 'Cache/exceptions/stack_id_already_used.php',
22
+    'ezcCacheStackStorageUsedTwiceException' => 'Cache/exceptions/stack_storage_used_twice.php',
23
+    'ezcCacheStackUnderflowException'        => 'Cache/exceptions/stack_underflow.php',
24
+    'ezcCacheUsedLocationException'          => 'Cache/exceptions/used_location.php',
25
+    'ezcCacheStackMetaDataStorage'           => 'Cache/interfaces/meta_data_storage.php',
26
+    'ezcCacheStackableStorage'               => 'Cache/interfaces/stackable_storage.php',
27
+    'ezcCacheStorage'                        => 'Cache/storage.php',
28
+    'ezcCacheStackMetaData'                  => 'Cache/interfaces/meta_data.php',
29
+    'ezcCacheStackReplacementStrategy'       => 'Cache/interfaces/replacement_strategy.php',
30
+    'ezcCacheStorageMemory'                  => 'Cache/storage/memory.php',
31
+    'ezcCacheMemoryBackend'                  => 'Cache/backends/memory_backend.php',
32
+    'ezcCacheStackBaseMetaData'              => 'Cache/interfaces/base_meta_data.php',
33
+    'ezcCacheStackBaseReplacementStrategy'   => 'Cache/interfaces/base_replacement_strategy.php',
34
+    'ezcCacheStorageApc'                     => 'Cache/storage/apc.php',
35
+    'ezcCacheStorageApcOptions'              => 'Cache/options/storage_apc.php',
36
+    'ezcCacheStorageFile'                    => 'Cache/storage/file.php',
37
+    'ezcCacheStorageMemcache'                => 'Cache/storage/memcache.php',
38
+    'ezcCacheApcBackend'                     => 'Cache/backends/apc/apc_backend.php',
39
+    'ezcCacheManager'                        => 'Cache/manager.php',
40
+    'ezcCacheMemcacheBackend'                => 'Cache/backends/memcache/memcache_backend.php',
41
+    'ezcCacheMemoryVarStruct'                => 'Cache/structs/memory_var.php',
42
+    'ezcCacheStack'                          => 'Cache/stack.php',
43
+    'ezcCacheStackConfigurator'              => 'Cache/interfaces/stack_configurator.php',
44
+    'ezcCacheStackLfuMetaData'               => 'Cache/stack/lfu_meta_data.php',
45
+    'ezcCacheStackLfuReplacementStrategy'    => 'Cache/replacement_strategies/lfu.php',
46
+    'ezcCacheStackLruMetaData'               => 'Cache/stack/lru_meta_data.php',
47
+    'ezcCacheStackLruReplacementStrategy'    => 'Cache/replacement_strategies/lru.php',
48
+    'ezcCacheStackOptions'                   => 'Cache/options/stack.php',
49
+    'ezcCacheStackStorageConfiguration'      => 'Cache/stack/storage_configuration.php',
50
+    'ezcCacheStorageApcPlain'                => 'Cache/storage/apc/plain.php',
51
+    'ezcCacheStorageFileApcArray'            => 'Cache/storage/apc/apc_array.php',
52
+    'ezcCacheStorageFileApcArrayDataStruct'  => 'Cache/structs/file_apc_array_data.php',
53
+    'ezcCacheStorageFileApcArrayOptions'     => 'Cache/options/storage_apc_array.php',
54
+    'ezcCacheStorageFileArray'               => 'Cache/storage/file/array.php',
55
+    'ezcCacheStorageFileEvalArray'           => 'Cache/storage/file/eval_array.php',
56
+    'ezcCacheStorageFileObject'              => 'Cache/storage/file/object.php',
57
+    'ezcCacheStorageFileOptions'             => 'Cache/options/storage_file.php',
58
+    'ezcCacheStorageFilePlain'               => 'Cache/storage/file/plain.php',
59
+    'ezcCacheStorageMemcacheOptions'         => 'Cache/options/storage_memcache.php',
60
+    'ezcCacheStorageMemcachePlain'           => 'Cache/storage/memcache/plain.php',
61
+    'ezcCacheStorageMemoryDataStruct'        => 'Cache/structs/memory_data.php',
62
+    'ezcCacheStorageMemoryRegisterStruct'    => 'Cache/structs/memory_register.php',
63
+    'ezcCacheStorageOptions'                 => 'Cache/options/storage.php',
64
+);
65
+?>
... ...
@@ -0,0 +1,43 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the Configuration component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.3.5
8
+ * @filesource
9
+ * @package Configuration
10
+ */
11
+
12
+return array(
13
+    'ezcConfigurationException'                      => 'Configuration/exceptions/exception.php',
14
+    'ezcConfigurationGroupExistsAlreadyException'    => 'Configuration/exceptions/group_exists_already.php',
15
+    'ezcConfigurationInvalidReaderClassException'    => 'Configuration/exceptions/invalid_reader_class.php',
16
+    'ezcConfigurationInvalidSuffixException'         => 'Configuration/exceptions/invalid_suffix.php',
17
+    'ezcConfigurationManagerNotInitializedException' => 'Configuration/exceptions/manager_no_init.php',
18
+    'ezcConfigurationNoConfigException'              => 'Configuration/exceptions/no_config.php',
19
+    'ezcConfigurationNoConfigObjectException'        => 'Configuration/exceptions/no_config_object.php',
20
+    'ezcConfigurationParseErrorException'            => 'Configuration/exceptions/parse_error.php',
21
+    'ezcConfigurationReadFailedException'            => 'Configuration/exceptions/read_failed.php',
22
+    'ezcConfigurationSettingWrongTypeException'      => 'Configuration/exceptions/setting_wrong_type.php',
23
+    'ezcConfigurationSettingnameNotStringException'  => 'Configuration/exceptions/settingname_not_string.php',
24
+    'ezcConfigurationUnknownConfigException'         => 'Configuration/exceptions/unknown_config.php',
25
+    'ezcConfigurationUnknownGroupException'          => 'Configuration/exceptions/unknown_group.php',
26
+    'ezcConfigurationUnknownSettingException'        => 'Configuration/exceptions/unknown_setting.php',
27
+    'ezcConfigurationWriteFailedException'           => 'Configuration/exceptions/write_failed.php',
28
+    'ezcConfigurationReader'                         => 'Configuration/interfaces/reader.php',
29
+    'ezcConfigurationWriter'                         => 'Configuration/interfaces/writer.php',
30
+    'ezcConfigurationFileReader'                     => 'Configuration/file_reader.php',
31
+    'ezcConfigurationFileWriter'                     => 'Configuration/file_writer.php',
32
+    'ezcConfiguration'                               => 'Configuration/configuration.php',
33
+    'ezcConfigurationArrayReader'                    => 'Configuration/array/array_reader.php',
34
+    'ezcConfigurationArrayWriter'                    => 'Configuration/array/array_writer.php',
35
+    'ezcConfigurationIniItem'                        => 'Configuration/structs/ini_item.php',
36
+    'ezcConfigurationIniParser'                      => 'Configuration/ini/ini_parser.php',
37
+    'ezcConfigurationIniReader'                      => 'Configuration/ini/ini_reader.php',
38
+    'ezcConfigurationIniWriter'                      => 'Configuration/ini/ini_writer.php',
39
+    'ezcConfigurationManager'                        => 'Configuration/configuration_manager.php',
40
+    'ezcConfigurationValidationItem'                 => 'Configuration/structs/validation_item.php',
41
+    'ezcConfigurationValidationResult'               => 'Configuration/validation_result.php',
42
+);
43
+?>
... ...
@@ -0,0 +1,76 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the ConsoleTools component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.6.1
8
+ * @filesource
9
+ * @package ConsoleTools
10
+ */
11
+
12
+return array(
13
+    'ezcConsoleException'                           => 'ConsoleTools/exceptions/exception.php',
14
+    'ezcConsoleArgumentException'                   => 'ConsoleTools/exceptions/argument.php',
15
+    'ezcConsoleOptionException'                     => 'ConsoleTools/exceptions/option.php',
16
+    'ezcConsoleArgumentAlreadyRegisteredException'  => 'ConsoleTools/exceptions/argument_already_registered.php',
17
+    'ezcConsoleArgumentMandatoryViolationException' => 'ConsoleTools/exceptions/argument_mandatory_violation.php',
18
+    'ezcConsoleArgumentTypeViolationException'      => 'ConsoleTools/exceptions/argument_type_violation.php',
19
+    'ezcConsoleDialogAbortException'                => 'ConsoleTools/exceptions/dialog_abort.php',
20
+    'ezcConsoleInvalidOptionNameException'          => 'ConsoleTools/exceptions/invalid_option_name.php',
21
+    'ezcConsoleInvalidOutputTargetException'        => 'ConsoleTools/exceptions/invalid_output_target.php',
22
+    'ezcConsoleNoPositionStoredException'           => 'ConsoleTools/exceptions/no_position_stored.php',
23
+    'ezcConsoleNoValidDialogResultException'        => 'ConsoleTools/exceptions/no_valid_dialog_result.php',
24
+    'ezcConsoleOptionAlreadyRegisteredException'    => 'ConsoleTools/exceptions/option_already_registered.php',
25
+    'ezcConsoleOptionArgumentsViolationException'   => 'ConsoleTools/exceptions/option_arguments_violation.php',
26
+    'ezcConsoleOptionDependencyViolationException'  => 'ConsoleTools/exceptions/option_dependency_violation.php',
27
+    'ezcConsoleOptionExclusionViolationException'   => 'ConsoleTools/exceptions/option_exclusion_violation.php',
28
+    'ezcConsoleOptionMandatoryViolationException'   => 'ConsoleTools/exceptions/option_mandatory_violation.php',
29
+    'ezcConsoleOptionMissingValueException'         => 'ConsoleTools/exceptions/option_missing_value.php',
30
+    'ezcConsoleOptionNoAliasException'              => 'ConsoleTools/exceptions/option_no_alias.php',
31
+    'ezcConsoleOptionNotExistsException'            => 'ConsoleTools/exceptions/option_not_exists.php',
32
+    'ezcConsoleOptionStringNotWellformedException'  => 'ConsoleTools/exceptions/option_string_not_wellformed.php',
33
+    'ezcConsoleOptionTooManyValuesException'        => 'ConsoleTools/exceptions/option_too_many_values.php',
34
+    'ezcConsoleOptionTypeViolationException'        => 'ConsoleTools/exceptions/option_type_violation.php',
35
+    'ezcConsoleTooManyArgumentsException'           => 'ConsoleTools/exceptions/argument_too_many.php',
36
+    'ezcConsoleDialogValidator'                     => 'ConsoleTools/interfaces/dialog_validator.php',
37
+    'ezcConsoleQuestionDialogValidator'             => 'ConsoleTools/interfaces/question_dialog_validator.php',
38
+    'ezcConsoleDialog'                              => 'ConsoleTools/interfaces/dialog.php',
39
+    'ezcConsoleDialogOptions'                       => 'ConsoleTools/options/dialog.php',
40
+    'ezcConsoleInputHelpGenerator'                  => 'ConsoleTools/interfaces/input_help_generator.php',
41
+    'ezcConsoleInputValidator'                      => 'ConsoleTools/interfaces/input_validator.php',
42
+    'ezcConsoleMenuDialogValidator'                 => 'ConsoleTools/interfaces/menu_dialog_validator.php',
43
+    'ezcConsoleQuestionDialogCollectionValidator'   => 'ConsoleTools/dialog/validators/question_dialog_collection.php',
44
+    'ezcConsoleArgument'                            => 'ConsoleTools/input/argument.php',
45
+    'ezcConsoleArguments'                           => 'ConsoleTools/input/arguments.php',
46
+    'ezcConsoleDialogViewer'                        => 'ConsoleTools/dialog_viewer.php',
47
+    'ezcConsoleInput'                               => 'ConsoleTools/input.php',
48
+    'ezcConsoleInputStandardHelpGenerator'          => 'ConsoleTools/input/help_generators/standard.php',
49
+    'ezcConsoleMenuDialog'                          => 'ConsoleTools/dialog/menu_dialog.php',
50
+    'ezcConsoleMenuDialogDefaultValidator'          => 'ConsoleTools/dialog/validators/menu_dialog_default.php',
51
+    'ezcConsoleMenuDialogOptions'                   => 'ConsoleTools/options/menu_dialog.php',
52
+    'ezcConsoleOption'                              => 'ConsoleTools/input/option.php',
53
+    'ezcConsoleOptionRule'                          => 'ConsoleTools/structs/option_rule.php',
54
+    'ezcConsoleOutput'                              => 'ConsoleTools/output.php',
55
+    'ezcConsoleOutputFormat'                        => 'ConsoleTools/structs/output_format.php',
56
+    'ezcConsoleOutputFormats'                       => 'ConsoleTools/structs/output_formats.php',
57
+    'ezcConsoleOutputOptions'                       => 'ConsoleTools/options/output.php',
58
+    'ezcConsoleProgressMonitor'                     => 'ConsoleTools/progressmonitor.php',
59
+    'ezcConsoleProgressMonitorOptions'              => 'ConsoleTools/options/progressmonitor.php',
60
+    'ezcConsoleProgressbar'                         => 'ConsoleTools/progressbar.php',
61
+    'ezcConsoleProgressbarOptions'                  => 'ConsoleTools/options/progressbar.php',
62
+    'ezcConsoleQuestionDialog'                      => 'ConsoleTools/dialog/question_dialog.php',
63
+    'ezcConsoleQuestionDialogMappingValidator'      => 'ConsoleTools/dialog/validators/question_dialog_mapping.php',
64
+    'ezcConsoleQuestionDialogOptions'               => 'ConsoleTools/options/question_dialog.php',
65
+    'ezcConsoleQuestionDialogRegexValidator'        => 'ConsoleTools/dialog/validators/question_dialog_regex.php',
66
+    'ezcConsoleQuestionDialogTypeValidator'         => 'ConsoleTools/dialog/validators/question_dialog_type.php',
67
+    'ezcConsoleStandardInputValidator'              => 'ConsoleTools/input/validators/standard.php',
68
+    'ezcConsoleStatusbar'                           => 'ConsoleTools/statusbar.php',
69
+    'ezcConsoleStatusbarOptions'                    => 'ConsoleTools/options/statusbar.php',
70
+    'ezcConsoleStringTool'                          => 'ConsoleTools/tools/string.php',
71
+    'ezcConsoleTable'                               => 'ConsoleTools/table.php',
72
+    'ezcConsoleTableCell'                           => 'ConsoleTools/table/cell.php',
73
+    'ezcConsoleTableOptions'                        => 'ConsoleTools/options/table.php',
74
+    'ezcConsoleTableRow'                            => 'ConsoleTools/table/row.php',
75
+);
76
+?>
... ...
@@ -0,0 +1,32 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the Database component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.4.7
8
+ * @filesource
9
+ * @package Database
10
+ */
11
+
12
+return array(
13
+    'ezcDbException'                 => 'Database/exceptions/exception.php',
14
+    'ezcDbHandlerNotFoundException'  => 'Database/exceptions/handler_not_found.php',
15
+    'ezcDbMissingParameterException' => 'Database/exceptions/missing_parameter.php',
16
+    'ezcDbTransactionException'      => 'Database/exceptions/transaction.php',
17
+    'ezcDbHandler'                   => 'Database/handler.php',
18
+    'ezcDbUtilities'                 => 'Database/sqlabstraction/utilities.php',
19
+    'ezcDbFactory'                   => 'Database/factory.php',
20
+    'ezcDbHandlerMssql'              => 'Database/handlers/mssql.php',
21
+    'ezcDbHandlerMysql'              => 'Database/handlers/mysql.php',
22
+    'ezcDbHandlerOracle'             => 'Database/handlers/oracle.php',
23
+    'ezcDbHandlerPgsql'              => 'Database/handlers/pgsql.php',
24
+    'ezcDbHandlerSqlite'             => 'Database/handlers/sqlite.php',
25
+    'ezcDbInstance'                  => 'Database/instance.php',
26
+    'ezcDbMssqlOptions'              => 'Database/options/identifiers.php',
27
+    'ezcDbUtilitiesMysql'            => 'Database/sqlabstraction/implementations/utilities_mysql.php',
28
+    'ezcDbUtilitiesOracle'           => 'Database/sqlabstraction/implementations/utilities_oracle.php',
29
+    'ezcDbUtilitiesPgsql'            => 'Database/sqlabstraction/implementations/utilities_pgsql.php',
30
+    'ezcDbUtilitiesSqlite'           => 'Database/sqlabstraction/implementations/utilities_sqlite.php',
31
+);
32
+?>
... ...
@@ -0,0 +1,69 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the DatabaseSchema component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.4.4
8
+ * @filesource
9
+ * @package DatabaseSchema
10
+ */
11
+
12
+return array(
13
+    'ezcDbSchemaException'                       => 'DatabaseSchema/exceptions/exception.php',
14
+    'ezcDbSchemaDropAllColumnsException'         => 'DatabaseSchema/exceptions/drop_all_columns_exception.php',
15
+    'ezcDbSchemaInvalidDiffReaderClassException' => 'DatabaseSchema/exceptions/invalid_diff_reader_class.php',
16
+    'ezcDbSchemaInvalidDiffWriterClassException' => 'DatabaseSchema/exceptions/invalid_diff_writer_class.php',
17
+    'ezcDbSchemaInvalidReaderClassException'     => 'DatabaseSchema/exceptions/invalid_reader_class.php',
18
+    'ezcDbSchemaInvalidSchemaException'          => 'DatabaseSchema/exceptions/invalid_schema.php',
19
+    'ezcDbSchemaInvalidWriterClassException'     => 'DatabaseSchema/exceptions/invalid_writer_class.php',
20
+    'ezcDbSchemaSqliteDropFieldException'        => 'DatabaseSchema/exceptions/sqlite_drop_field_exception.php',
21
+    'ezcDbSchemaUnknownFormatException'          => 'DatabaseSchema/exceptions/unknown_format.php',
22
+    'ezcDbSchemaUnsupportedTypeException'        => 'DatabaseSchema/exceptions/unsupported_type.php',
23
+    'ezcDbSchemaDiffWriter'                      => 'DatabaseSchema/interfaces/schema_diff_writer.php',
24
+    'ezcDbSchemaReader'                          => 'DatabaseSchema/interfaces/schema_reader.php',
25
+    'ezcDbSchemaWriter'                          => 'DatabaseSchema/interfaces/schema_writer.php',
26
+    'ezcDbSchemaDbReader'                        => 'DatabaseSchema/interfaces/db_reader.php',
27
+    'ezcDbSchemaDbWriter'                        => 'DatabaseSchema/interfaces/db_writer.php',
28
+    'ezcDbSchemaDiffDbWriter'                    => 'DatabaseSchema/interfaces/db_diff_writer.php',
29
+    'ezcDbSchemaDiffReader'                      => 'DatabaseSchema/interfaces/schema_diff_reader.php',
30
+    'ezcDbSchemaCommonSqlReader'                 => 'DatabaseSchema/handlers/common_sql_reader.php',
31
+    'ezcDbSchemaCommonSqlWriter'                 => 'DatabaseSchema/handlers/common_sql_writer.php',
32
+    'ezcDbSchemaDiffFileReader'                  => 'DatabaseSchema/interfaces/file_diff_reader.php',
33
+    'ezcDbSchemaDiffFileWriter'                  => 'DatabaseSchema/interfaces/file_diff_writer.php',
34
+    'ezcDbSchemaFileReader'                      => 'DatabaseSchema/interfaces/file_reader.php',
35
+    'ezcDbSchemaFileWriter'                      => 'DatabaseSchema/interfaces/file_writer.php',
36
+    'XMLWriter'                                  => 'DatabaseSchema/handlers/xml/xmlwritersubstitute.php',
37
+    'ezcDbSchema'                                => 'DatabaseSchema/schema.php',
38
+    'ezcDbSchemaAutoIncrementIndexValidator'     => 'DatabaseSchema/validators/auto_increment_index.php',
39
+    'ezcDbSchemaComparator'                      => 'DatabaseSchema/comparator.php',
40
+    'ezcDbSchemaDiff'                            => 'DatabaseSchema/schema_diff.php',
41
+    'ezcDbSchemaField'                           => 'DatabaseSchema/structs/field.php',
42
+    'ezcDbSchemaHandlerDataTransfer'             => 'DatabaseSchema/handlers/data_transfer.php',
43
+    'ezcDbSchemaHandlerManager'                  => 'DatabaseSchema/handler_manager.php',
44
+    'ezcDbSchemaIndex'                           => 'DatabaseSchema/structs/index.php',
45
+    'ezcDbSchemaIndexField'                      => 'DatabaseSchema/structs/index_field.php',
46
+    'ezcDbSchemaIndexFieldsValidator'            => 'DatabaseSchema/validators/index_fields.php',
47
+    'ezcDbSchemaMysqlReader'                     => 'DatabaseSchema/handlers/mysql/reader.php',
48
+    'ezcDbSchemaMysqlWriter'                     => 'DatabaseSchema/handlers/mysql/writer.php',
49
+    'ezcDbSchemaOptions'                         => 'DatabaseSchema/options/schema.php',
50
+    'ezcDbSchemaOracleHelper'                    => 'DatabaseSchema/handlers/oracle/helper.php',
51
+    'ezcDbSchemaOracleReader'                    => 'DatabaseSchema/handlers/oracle/reader.php',
52
+    'ezcDbSchemaOracleWriter'                    => 'DatabaseSchema/handlers/oracle/writer.php',
53
+    'ezcDbSchemaPersistentClassWriter'           => 'DatabaseSchema/handlers/persistent/class_writer.php',
54
+    'ezcDbSchemaPersistentWriter'                => 'DatabaseSchema/handlers/persistent/writer.php',
55
+    'ezcDbSchemaPgsqlReader'                     => 'DatabaseSchema/handlers/pgsql/reader.php',
56
+    'ezcDbSchemaPgsqlWriter'                     => 'DatabaseSchema/handlers/pgsql/writer.php',
57
+    'ezcDbSchemaPhpArrayReader'                  => 'DatabaseSchema/handlers/php_array/reader.php',
58
+    'ezcDbSchemaPhpArrayWriter'                  => 'DatabaseSchema/handlers/php_array/writer.php',
59
+    'ezcDbSchemaSqliteReader'                    => 'DatabaseSchema/handlers/sqlite/reader.php',
60
+    'ezcDbSchemaSqliteWriter'                    => 'DatabaseSchema/handlers/sqlite/writer.php',
61
+    'ezcDbSchemaTable'                           => 'DatabaseSchema/structs/table.php',
62
+    'ezcDbSchemaTableDiff'                       => 'DatabaseSchema/structs/table_diff.php',
63
+    'ezcDbSchemaTypesValidator'                  => 'DatabaseSchema/validators/types.php',
64
+    'ezcDbSchemaUniqueIndexNameValidator'        => 'DatabaseSchema/validators/unique_index_name.php',
65
+    'ezcDbSchemaValidator'                       => 'DatabaseSchema/validator.php',
66
+    'ezcDbSchemaXmlReader'                       => 'DatabaseSchema/handlers/xml/reader.php',
67
+    'ezcDbSchemaXmlWriter'                       => 'DatabaseSchema/handlers/xml/writer.php',
68
+);
69
+?>
... ...
@@ -0,0 +1,29 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the Debug component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.2.1
8
+ * @filesource
9
+ * @package Debug
10
+ */
11
+
12
+return array(
13
+    'ezcDebugException'                      => 'Debug/exceptions/exception.php',
14
+    'ezcDebugOperationNotPermittedException' => 'Debug/exceptions/operation_not_permitted.php',
15
+    'ezcDebugOutputFormatter'                => 'Debug/interfaces/formatter.php',
16
+    'ezcDebugStacktraceIterator'             => 'Debug/interfaces/stacktrace_iterator.php',
17
+    'ezcDebug'                               => 'Debug/debug.php',
18
+    'ezcDebugHtmlFormatter'                  => 'Debug/formatters/html_formatter.php',
19
+    'ezcDebugMemoryWriter'                   => 'Debug/writers/memory_writer.php',
20
+    'ezcDebugOptions'                        => 'Debug/options.php',
21
+    'ezcDebugPhpStacktraceIterator'          => 'Debug/stacktrace/php_iterator.php',
22
+    'ezcDebugStructure'                      => 'Debug/structs/debug_structure.php',
23
+    'ezcDebugSwitchTimerStruct'              => 'Debug/structs/switch_timer.php',
24
+    'ezcDebugTimer'                          => 'Debug/debug_timer.php',
25
+    'ezcDebugTimerStruct'                    => 'Debug/structs/timer.php',
26
+    'ezcDebugVariableDumpTool'               => 'Debug/tools/dump.php',
27
+    'ezcDebugXdebugStacktraceIterator'       => 'Debug/stacktrace/xdebug_iterator.php',
28
+);
29
+?>
... ...
@@ -0,0 +1,541 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the Document component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.3.1
8
+ * @filesource
9
+ * @package Document
10
+ */
11
+
12
+return array(
13
+    'ezcDocumentException'                               => 'Document/exceptions/exception.php',
14
+    'ezcDocumentConversionException'                     => 'Document/exceptions/conversion.php',
15
+    'ezcDocumentErroneousXmlException'                   => 'Document/exceptions/erroneous_xml.php',
16
+    'ezcDocumentInvalidDocbookException'                 => 'Document/exceptions/invalid_docbook.php',
17
+    'ezcDocumentInvalidFontException'                    => 'Document/exceptions/unknown_font.php',
18
+    'ezcDocumentInvalidOdtException'                     => 'Document/exceptions/invalid_odt.php',
19
+    'ezcDocumentMissingVisitorException'                 => 'Document/exceptions/missing_visitor.php',
20
+    'ezcDocumentOdtFormattingPropertiesExistException'   => 'Document/exceptions/odt/formatting_properties_exist.php',
21
+    'ezcDocumentParserException'                         => 'Document/exceptions/parser.php',
22
+    'ezcDocumentRstMissingDirectiveHandlerException'     => 'Document/exceptions/missing_directive_handler.php',
23
+    'ezcDocumentRstMissingTextRoleHandlerException'      => 'Document/exceptions/missing_text_role_handler.php',
24
+    'ezcDocumentRstTokenizerException'                   => 'Document/exceptions/rst_tokenizer.php',
25
+    'ezcDocumentVisitException'                          => 'Document/exceptions/visitor.php',
26
+    'ezcDocumentWikiMissingPluginHandlerException'       => 'Document/exceptions/missing_plugin_handler.php',
27
+    'ezcDocumentWikiTokenizerException'                  => 'Document/exceptions/wiki_tokenizer.php',
28
+    'ezcDocumentPdfRenderer'                             => 'Document/document/pdf/renderer.php',
29
+    'ezcDocumentBBCodeNode'                              => 'Document/document/bbcode/node.php',
30
+    'ezcDocumentElementVisitorHandler'                   => 'Document/converters/element_visitor_handler.php',
31
+    'ezcDocumentErrorReporting'                          => 'Document/interfaces/error_reporting.php',
32
+    'ezcDocumentPdfBlockRenderer'                        => 'Document/document/pdf/renderer/block.php',
33
+    'ezcDocumentWikiNode'                                => 'Document/document/wiki/node.php',
34
+    'ezcDocumentWikiToken'                               => 'Document/document/wiki/token.php',
35
+    'ezcDocument'                                        => 'Document/interfaces/document.php',
36
+    'ezcDocumentBBCodeBlockLevelNode'                    => 'Document/document/bbcode/nodes/block.php',
37
+    'ezcDocumentConverter'                               => 'Document/interfaces/converter.php',
38
+    'ezcDocumentConverterOptions'                        => 'Document/options/converter.php',
39
+    'ezcDocumentDocbookToRstBaseHandler'                 => 'Document/converters/element_visitor/docbook/rst/handler.php',
40
+    'ezcDocumentDocbookToWikiBaseHandler'                => 'Document/converters/element_visitor/docbook/wiki/handler.php',
41
+    'ezcDocumentListItemGenerator'                       => 'Document/document/pdf/item_generator.php',
42
+    'ezcDocumentOptions'                                 => 'Document/options/document.php',
43
+    'ezcDocumentPcssStyleValue'                          => 'Document/pcss/style/value.php',
44
+    'ezcDocumentPdfPart'                                 => 'Document/document/pdf/part.php',
45
+    'ezcDocumentPdfTextBoxRenderer'                      => 'Document/document/pdf/renderer/text_box.php',
46
+    'ezcDocumentRstDirective'                            => 'Document/document/rst/directive.php',
47
+    'ezcDocumentRstNode'                                 => 'Document/document/rst/node.php',
48
+    'ezcDocumentRstVisitor'                              => 'Document/document/rst/visitor.php',
49
+    'ezcDocumentRstXhtmlDirective'                       => 'Document/interfaces/rst_xhtml_directive.php',
50
+    'ezcDocumentValidation'                              => 'Document/interfaces/validation.php',
51
+    'ezcDocumentWikiBlockLevelNode'                      => 'Document/document/wiki/nodes/block.php',
52
+    'ezcDocumentWikiBlockMarkupToken'                    => 'Document/document/wiki/token/block_markup.php',
53
+    'ezcDocumentWikiInlineMarkupToken'                   => 'Document/document/wiki/token/inline_markup.php',
54
+    'ezcDocumentWikiInlineNode'                          => 'Document/document/wiki/nodes/inline.php',
55
+    'ezcDocumentAlnumListItemGenerator'                  => 'Document/document/pdf/item_generator/alnum.php',
56
+    'ezcDocumentBBCodeListNode'                          => 'Document/document/bbcode/nodes/list.php',
57
+    'ezcDocumentBBCodePlugin'                            => 'Document/document/bbcode/plugin.php',
58
+    'ezcDocumentBBCodeToken'                             => 'Document/document/bbcode/token.php',
59
+    'ezcDocumentBBCodeVisitor'                           => 'Document/document/bbcode/visitor.php',
60
+    'ezcDocumentDocbookToHtmlBaseHandler'                => 'Document/converters/element_visitor/docbook/xhtml/handler.php',
61
+    'ezcDocumentDocbookToOdtBaseHandler'                 => 'Document/converters/element_visitor/docbook/odt/element_handlers/handler.php',
62
+    'ezcDocumentDocbookToRstMediaObjectHandler'          => 'Document/converters/element_visitor/docbook/rst/mediaobject.php',
63
+    'ezcDocumentDocbookToWikiMediaObjectHandler'         => 'Document/converters/element_visitor/docbook/wiki/mediaobject.php',
64
+    'ezcDocumentElementVisitorConverter'                 => 'Document/converters/element_visitor.php',
65
+    'ezcDocumentEzXmlLinkConverter'                      => 'Document/interfaces/ezxml_link_converter.php',
66
+    'ezcDocumentEzXmlLinkProvider'                       => 'Document/interfaces/ezxml_link_provider.php',
67
+    'ezcDocumentHtmlConverterOptions'                    => 'Document/options/html_rendering.php',
68
+    'ezcDocumentLocateable'                              => 'Document/interfaces/locateable.php',
69
+    'ezcDocumentOdtBaseFilter'                           => 'Document/document/xml/odt/filter/base.php',
70
+    'ezcDocumentOdtElementBaseFilter'                    => 'Document/document/xml/odt/filter/element/base.php',
71
+    'ezcDocumentOdtListLevelStyle'                       => 'Document/document/xml/odt/list_level_style.php',
72
+    'ezcDocumentOdtPcssConverter'                        => 'Document/converters/element_visitor/docbook/odt/styler/pcss/converter.php',
73
+    'ezcDocumentOdtStyleFilterRule'                      => 'Document/document/xml/odt/filter/style/rule.php',
74
+    'ezcDocumentOdtStyleGenerator'                       => 'Document/converters/element_visitor/docbook/odt/styler/pcss/generator.php',
75
+    'ezcDocumentOdtStylePropertyGenerator'               => 'Document/converters/element_visitor/docbook/odt/styler/pcss/property_generator.php',
76
+    'ezcDocumentOdtStyler'                               => 'Document/converters/element_visitor/docbook/odt/styler.php',
77
+    'ezcDocumentParser'                                  => 'Document/interfaces/parser.php',
78
+    'ezcDocumentPcssDirective'                           => 'Document/pcss/directive.php',
79
+    'ezcDocumentPcssStyleBoxValue'                       => 'Document/pcss/style/box_value.php',
80
+    'ezcDocumentPdfDriver'                               => 'Document/document/pdf/driver.php',
81
+    'ezcDocumentPdfFooterPdfPart'                        => 'Document/document/pdf/part/footer.php',
82
+    'ezcDocumentPdfHyphenator'                           => 'Document/document/pdf/hyphenator.php',
83
+    'ezcDocumentPdfImageHandler'                         => 'Document/document/pdf/image/handler.php',
84
+    'ezcDocumentPdfMainRenderer'                         => 'Document/document/pdf/renderer/main.php',
85
+    'ezcDocumentPdfTableColumnWidthCalculator'           => 'Document/document/pdf/table_column_width_calculator.php',
86
+    'ezcDocumentPdfTokenizer'                            => 'Document/document/pdf/tokenizer.php',
87
+    'ezcDocumentPdfWrappingTextBoxRenderer'              => 'Document/document/pdf/renderer/paragraph.php',
88
+    'ezcDocumentRstBlockNode'                            => 'Document/document/rst/nodes/block.php',
89
+    'ezcDocumentRstImageDirective'                       => 'Document/document/rst/directive/image.php',
90
+    'ezcDocumentRstLinkNode'                             => 'Document/document/rst/nodes/link.php',
91
+    'ezcDocumentRstMarkupNode'                           => 'Document/document/rst/nodes/markup.php',
92
+    'ezcDocumentRstTextRole'                             => 'Document/document/rst/role.php',
93
+    'ezcDocumentRstXhtmlTextRole'                        => 'Document/interfaces/rst_xhtml_role.php',
94
+    'ezcDocumentRstXhtmlVisitor'                         => 'Document/document/rst/visitor/xhtml.php',
95
+    'ezcDocumentWiki'                                    => 'Document/document/wiki.php',
96
+    'ezcDocumentWikiLineLevelNode'                       => 'Document/document/wiki/nodes/line.php',
97
+    'ezcDocumentWikiLineMarkupToken'                     => 'Document/document/wiki/token/line_markup.php',
98
+    'ezcDocumentWikiLinkStartToken'                      => 'Document/document/wiki/token/link_start.php',
99
+    'ezcDocumentWikiListNode'                            => 'Document/document/wiki/nodes/list.php',
100
+    'ezcDocumentWikiMatchingInlineNode'                  => 'Document/document/wiki/nodes/matching_inline.php',
101
+    'ezcDocumentWikiPlugin'                              => 'Document/document/wiki/plugin.php',
102
+    'ezcDocumentWikiSectionNode'                         => 'Document/document/wiki/nodes/section.php',
103
+    'ezcDocumentWikiSeparatorNode'                       => 'Document/document/wiki/nodes/separator.php',
104
+    'ezcDocumentWikiTokenizer'                           => 'Document/document/wiki/tokenizer.php',
105
+    'ezcDocumentWikiVisitor'                             => 'Document/document/wiki/visitor.php',
106
+    'ezcDocumentXhtmlBaseFilter'                         => 'Document/document/xml/xhtml/filter/base.php',
107
+    'ezcDocumentXhtmlConversion'                         => 'Document/interfaces/conversions/xhtml.php',
108
+    'ezcDocumentXhtmlElementBaseFilter'                  => 'Document/document/xml/xhtml/filter/element/base.php',
109
+    'ezcDocumentXmlBase'                                 => 'Document/document/xml_base.php',
110
+    'ezcDocumentXmlOptions'                              => 'Document/options/document_xml.php',
111
+    'ezcDocumentXsltConverter'                           => 'Document/converters/xslt.php',
112
+    'ezcDocumentXsltConverterOptions'                    => 'Document/options/converter_xslt.php',
113
+    'ezcDocumentAlphaListItemGenerator'                  => 'Document/document/pdf/item_generator/alpha.php',
114
+    'ezcDocumentBBCode'                                  => 'Document/document/bbcode.php',
115
+    'ezcDocumentBBCodeBulletListNode'                    => 'Document/document/bbcode/nodes/bullet_list.php',
116
+    'ezcDocumentBBCodeClosingTagNode'                    => 'Document/document/bbcode/nodes/tag_close.php',
117
+    'ezcDocumentBBCodeDocbookVisitor'                    => 'Document/document/bbcode/visitor/docbook.php',
118
+    'ezcDocumentBBCodeDocumentNode'                      => 'Document/document/bbcode/nodes/document.php',
119
+    'ezcDocumentBBCodeEmailPlugin'                       => 'Document/document/bbcode/plugins/email.php',
120
+    'ezcDocumentBBCodeEmphasisPlugin'                    => 'Document/document/bbcode/plugins/emphasis.php',
121
+    'ezcDocumentBBCodeEndOfFileToken'                    => 'Document/document/bbcode/token/end_of_file.php',
122
+    'ezcDocumentBBCodeEnumeratedListNode'                => 'Document/document/bbcode/nodes/enumerated_list.php',
123
+    'ezcDocumentBBCodeImagePlugin'                       => 'Document/document/bbcode/plugins/image.php',
124
+    'ezcDocumentBBCodeInlineLiteralNode'                 => 'Document/document/bbcode/nodes/inline_literal.php',
125
+    'ezcDocumentBBCodeLineBreakToken'                    => 'Document/document/bbcode/token/line_break.php',
126
+    'ezcDocumentBBCodeListEndNode'                       => 'Document/document/bbcode/nodes/list_end.php',
127
+    'ezcDocumentBBCodeListItemNode'                      => 'Document/document/bbcode/nodes/list_item.php',
128
+    'ezcDocumentBBCodeListItemToken'                     => 'Document/document/bbcode/token/list_item.php',
129
+    'ezcDocumentBBCodeLiteralBlockNode'                  => 'Document/document/bbcode/nodes/literal_block.php',
130
+    'ezcDocumentBBCodeLiteralBlockToken'                 => 'Document/document/bbcode/token/literal_block.php',
131
+    'ezcDocumentBBCodeNewLineToken'                      => 'Document/document/bbcode/token/new_line.php',
132
+    'ezcDocumentBBCodeNoMarkupPlugin'                    => 'Document/document/bbcode/plugins/no.php',
133
+    'ezcDocumentBBCodeOptions'                           => 'Document/options/document_bbcode.php',
134
+    'ezcDocumentBBCodeParagraphNode'                     => 'Document/document/bbcode/nodes/paragraph.php',
135
+    'ezcDocumentBBCodeParser'                            => 'Document/document/bbcode/parser.php',
136
+    'ezcDocumentBBCodeQuotePlugin'                       => 'Document/document/bbcode/plugins/quote.php',
137
+    'ezcDocumentBBCodeSpecialCharsToken'                 => 'Document/document/bbcode/token/special_chars.php',
138
+    'ezcDocumentBBCodeTagCloseToken'                     => 'Document/document/bbcode/token/tag_clsoe.php',
139
+    'ezcDocumentBBCodeTagNode'                           => 'Document/document/bbcode/nodes/tag.php',
140
+    'ezcDocumentBBCodeTagOpenToken'                      => 'Document/document/bbcode/token/tag_open.php',
141
+    'ezcDocumentBBCodeTextLineToken'                     => 'Document/document/bbcode/token/text_line.php',
142
+    'ezcDocumentBBCodeTextNode'                          => 'Document/document/bbcode/nodes/text.php',
143
+    'ezcDocumentBBCodeTokenizer'                         => 'Document/document/bbcode/tokenizer.php',
144
+    'ezcDocumentBBCodeUrlPlugin'                         => 'Document/document/bbcode/plugins/url.php',
145
+    'ezcDocumentBBCodeWhitespaceToken'                   => 'Document/document/bbcode/token/whitespace.php',
146
+    'ezcDocumentBulletListItemGenerator'                 => 'Document/document/pdf/item_generator/bullet.php',
147
+    'ezcDocumentConfluenceWiki'                          => 'Document/document/wiki/confluence.php',
148
+    'ezcDocumentCreoleWiki'                              => 'Document/document/wiki/creole.php',
149
+    'ezcDocumentDocbook'                                 => 'Document/document/xml/docbook.php',
150
+    'ezcDocumentDocbookOptions'                          => 'Document/options/document_docbook.php',
151
+    'ezcDocumentDocbookToEzXmlAnchorHandler'             => 'Document/converters/element_visitor/docbook/ezxml/anchor.php',
152
+    'ezcDocumentDocbookToEzXmlCommentHandler'            => 'Document/converters/element_visitor/docbook/ezxml/comment.php',
153
+    'ezcDocumentDocbookToEzXmlConverter'                 => 'Document/converters/element_visitor/docbook_ezxml.php',
154
+    'ezcDocumentDocbookToEzXmlConverterOptions'          => 'Document/options/converter_docbook_ezxml.php',
155
+    'ezcDocumentDocbookToEzXmlEmphasisHandler'           => 'Document/converters/element_visitor/docbook/ezxml/emphasis.php',
156
+    'ezcDocumentDocbookToEzXmlExternalLinkHandler'       => 'Document/converters/element_visitor/docbook/ezxml/external_link.php',
157
+    'ezcDocumentDocbookToEzXmlFootnoteHandler'           => 'Document/converters/element_visitor/docbook/ezxml/footnote.php',
158
+    'ezcDocumentDocbookToEzXmlIgnoreHandler'             => 'Document/converters/element_visitor/docbook/ezxml/ignore.php',
159
+    'ezcDocumentDocbookToEzXmlInternalLinkHandler'       => 'Document/converters/element_visitor/docbook/ezxml/internal_link.php',
160
+    'ezcDocumentDocbookToEzXmlItemizedListHandler'       => 'Document/converters/element_visitor/docbook/ezxml/itemized_list.php',
161
+    'ezcDocumentDocbookToEzXmlLiteralLayoutHandler'      => 'Document/converters/element_visitor/docbook/ezxml/literal_layout.php',
162
+    'ezcDocumentDocbookToEzXmlMappingHandler'            => 'Document/converters/element_visitor/docbook/ezxml/mapper.php',
163
+    'ezcDocumentDocbookToEzXmlOrderedListHandler'        => 'Document/converters/element_visitor/docbook/ezxml/ordered_list.php',
164
+    'ezcDocumentDocbookToEzXmlParagraphHandler'          => 'Document/converters/element_visitor/docbook/ezxml/paragraph.php',
165
+    'ezcDocumentDocbookToEzXmlRecurseHandler'            => 'Document/converters/element_visitor/docbook/ezxml/recurse.php',
166
+    'ezcDocumentDocbookToEzXmlSectionHandler'            => 'Document/converters/element_visitor/docbook/ezxml/section.php',
167
+    'ezcDocumentDocbookToEzXmlTableCellHandler'          => 'Document/converters/element_visitor/docbook/ezxml/table_cell.php',
168
+    'ezcDocumentDocbookToEzXmlTableHandler'              => 'Document/converters/element_visitor/docbook/ezxml/table.php',
169
+    'ezcDocumentDocbookToEzXmlTitleHandler'              => 'Document/converters/element_visitor/docbook/ezxml/title.php',
170
+    'ezcDocumentDocbookToHtmlAnchorHandler'              => 'Document/converters/element_visitor/docbook/xhtml/anchor.php',
171
+    'ezcDocumentDocbookToHtmlBlockquoteHandler'          => 'Document/converters/element_visitor/docbook/xhtml/blockquote.php',
172
+    'ezcDocumentDocbookToHtmlCommentHandler'             => 'Document/converters/element_visitor/docbook/xhtml/comment.php',
173
+    'ezcDocumentDocbookToHtmlConverter'                  => 'Document/converters/element_visitor/docbook_html.php',
174
+    'ezcDocumentDocbookToHtmlConverterOptions'           => 'Document/options/converter_docbook_html.php',
175
+    'ezcDocumentDocbookToHtmlDefinitionListEntryHandler' => 'Document/converters/element_visitor/docbook/xhtml/definition_list_entry.php',
176
+    'ezcDocumentDocbookToHtmlEmphasisHandler'            => 'Document/converters/element_visitor/docbook/xhtml/emphasis.php',
177
+    'ezcDocumentDocbookToHtmlExternalLinkHandler'        => 'Document/converters/element_visitor/docbook/xhtml/external_link.php',
178
+    'ezcDocumentDocbookToHtmlFootnoteHandler'            => 'Document/converters/element_visitor/docbook/xhtml/footnote.php',
179
+    'ezcDocumentDocbookToHtmlHeadHandler'                => 'Document/converters/element_visitor/docbook/xhtml/head.php',
180
+    'ezcDocumentDocbookToHtmlIgnoreHandler'              => 'Document/converters/element_visitor/docbook/xhtml/ignore.php',
181
+    'ezcDocumentDocbookToHtmlInternalLinkHandler'        => 'Document/converters/element_visitor/docbook/xhtml/internal_link.php',
182
+    'ezcDocumentDocbookToHtmlLiteralLayoutHandler'       => 'Document/converters/element_visitor/docbook/xhtml/literal_layout.php',
183
+    'ezcDocumentDocbookToHtmlMappingHandler'             => 'Document/converters/element_visitor/docbook/xhtml/mapper.php',
184
+    'ezcDocumentDocbookToHtmlMediaObjectHandler'         => 'Document/converters/element_visitor/docbook/xhtml/mediaobject.php',
185
+    'ezcDocumentDocbookToHtmlParagraphHandler'           => 'Document/converters/element_visitor/docbook/xhtml/paragraph.php',
186
+    'ezcDocumentDocbookToHtmlSectionHandler'             => 'Document/converters/element_visitor/docbook/xhtml/section.php',
187
+    'ezcDocumentDocbookToHtmlSpecialParagraphHandler'    => 'Document/converters/element_visitor/docbook/xhtml/special_paragraph.php',
188
+    'ezcDocumentDocbookToHtmlTableCellHandler'           => 'Document/converters/element_visitor/docbook/xhtml/table_cell.php',
189
+    'ezcDocumentDocbookToHtmlXsltConverter'              => 'Document/converters/xslt/docbook_html.php',
190
+    'ezcDocumentDocbookToHtmlXsltConverterOptions'       => 'Document/options/converter_docbook_html_xslt.php',
191
+    'ezcDocumentDocbookToOdtAnchorHandler'               => 'Document/converters/element_visitor/docbook/odt/element_handlers/anchor.php',
192
+    'ezcDocumentDocbookToOdtCommentHandler'              => 'Document/converters/element_visitor/docbook/odt/element_handlers/comment.php',
193
+    'ezcDocumentDocbookToOdtConverter'                   => 'Document/converters/element_visitor/docbook_odt.php',
194
+    'ezcDocumentDocbookToOdtConverterOptions'            => 'Document/options/converter_docbook_odt.php',
195
+    'ezcDocumentDocbookToOdtFootnoteHandler'             => 'Document/converters/element_visitor/docbook/odt/element_handlers/footnote.php',
196
+    'ezcDocumentDocbookToOdtIgnoreHandler'               => 'Document/converters/element_visitor/docbook/odt/element_handlers/ignore.php',
197
+    'ezcDocumentDocbookToOdtInlineHandler'               => 'Document/converters/element_visitor/docbook/odt/element_handlers/inline.php',
198
+    'ezcDocumentDocbookToOdtLinkHandler'                 => 'Document/converters/element_visitor/docbook/odt/element_handlers/link.php',
199
+    'ezcDocumentDocbookToOdtListHandler'                 => 'Document/converters/element_visitor/docbook/odt/element_handlers/list.php',
200
+    'ezcDocumentDocbookToOdtLiteralLayoutHandler'        => 'Document/converters/element_visitor/docbook/odt/element_handlers/literal_layout.php',
201
+    'ezcDocumentDocbookToOdtMappingHandler'              => 'Document/converters/element_visitor/docbook/odt/element_handlers/mapper.php',
202
+    'ezcDocumentDocbookToOdtMediaObjectHandler'          => 'Document/converters/element_visitor/docbook/odt/element_handlers/media_object.php',
203
+    'ezcDocumentDocbookToOdtPageBreakHandler'            => 'Document/converters/element_visitor/docbook/odt/element_handlers/page_break.php',
204
+    'ezcDocumentDocbookToOdtParagraphHandler'            => 'Document/converters/element_visitor/docbook/odt/element_handlers/paragraph.php',
205
+    'ezcDocumentDocbookToOdtSectionHandler'              => 'Document/converters/element_visitor/docbook/odt/element_handlers/section.php',
206
+    'ezcDocumentDocbookToOdtTableHandler'                => 'Document/converters/element_visitor/docbook/odt/element_handlers/table.php',
207
+    'ezcDocumentDocbookToOdtUlinkHandler'                => 'Document/converters/element_visitor/docbook/odt/element_handlers/ulink.php',
208
+    'ezcDocumentDocbookToRstBeginPageHandler'            => 'Document/converters/element_visitor/docbook/rst/begin_page.php',
209
+    'ezcDocumentDocbookToRstBlockquoteHandler'           => 'Document/converters/element_visitor/docbook/rst/blockquote.php',
210
+    'ezcDocumentDocbookToRstCitationHandler'             => 'Document/converters/element_visitor/docbook/rst/citation.php',
211
+    'ezcDocumentDocbookToRstCommentHandler'              => 'Document/converters/element_visitor/docbook/rst/comment.php',
212
+    'ezcDocumentDocbookToRstConverter'                   => 'Document/converters/element_visitor/docbook_rst.php',
213
+    'ezcDocumentDocbookToRstConverterOptions'            => 'Document/options/converter_docbook_rst.php',
214
+    'ezcDocumentDocbookToRstEmphasisHandler'             => 'Document/converters/element_visitor/docbook/rst/emphasis.php',
215
+    'ezcDocumentDocbookToRstExternalLinkHandler'         => 'Document/converters/element_visitor/docbook/rst/external_link.php',
216
+    'ezcDocumentDocbookToRstFootnoteHandler'             => 'Document/converters/element_visitor/docbook/rst/footnote.php',
217
+    'ezcDocumentDocbookToRstHeadHandler'                 => 'Document/converters/element_visitor/docbook/rst/head.php',
218
+    'ezcDocumentDocbookToRstIgnoreHandler'               => 'Document/converters/element_visitor/docbook/rst/ignore.php',
219
+    'ezcDocumentDocbookToRstInlineMediaObjectHandler'    => 'Document/converters/element_visitor/docbook/rst/inlinemediaobject.php',
220
+    'ezcDocumentDocbookToRstInternalLinkHandler'         => 'Document/converters/element_visitor/docbook/rst/internal_link.php',
221
+    'ezcDocumentDocbookToRstItemizedListHandler'         => 'Document/converters/element_visitor/docbook/rst/itemized_list.php',
222
+    'ezcDocumentDocbookToRstLiteralHandler'              => 'Document/converters/element_visitor/docbook/rst/literal.php',
223
+    'ezcDocumentDocbookToRstLiteralLayoutHandler'        => 'Document/converters/element_visitor/docbook/rst/literal_layout.php',
224
+    'ezcDocumentDocbookToRstOrderedListHandler'          => 'Document/converters/element_visitor/docbook/rst/ordered_list.php',
225
+    'ezcDocumentDocbookToRstParagraphHandler'            => 'Document/converters/element_visitor/docbook/rst/paragraph.php',
226
+    'ezcDocumentDocbookToRstRecurseHandler'              => 'Document/converters/element_visitor/docbook/rst/recurse.php',
227
+    'ezcDocumentDocbookToRstSectionHandler'              => 'Document/converters/element_visitor/docbook/rst/section.php',
228
+    'ezcDocumentDocbookToRstSpecialParagraphHandler'     => 'Document/converters/element_visitor/docbook/rst/special_paragraph.php',
229
+    'ezcDocumentDocbookToRstTableHandler'                => 'Document/converters/element_visitor/docbook/rst/table.php',
230
+    'ezcDocumentDocbookToRstVariableListHandler'         => 'Document/converters/element_visitor/docbook/rst/variable_list.php',
231
+    'ezcDocumentDocbookToWikiBeginPageHandler'           => 'Document/converters/element_visitor/docbook/wiki/begin_page.php',
232
+    'ezcDocumentDocbookToWikiConverter'                  => 'Document/converters/element_visitor/docbook_wiki.php',
233
+    'ezcDocumentDocbookToWikiConverterOptions'           => 'Document/options/converter_docbook_wiki.php',
234
+    'ezcDocumentDocbookToWikiEmphasisHandler'            => 'Document/converters/element_visitor/docbook/wiki/emphasis.php',
235
+    'ezcDocumentDocbookToWikiExternalLinkHandler'        => 'Document/converters/element_visitor/docbook/wiki/external_link.php',
236
+    'ezcDocumentDocbookToWikiIgnoreHandler'              => 'Document/converters/element_visitor/docbook/wiki/ignore.php',
237
+    'ezcDocumentDocbookToWikiInlineMediaObjectHandler'   => 'Document/converters/element_visitor/docbook/wiki/inlinemediaobject.php',
238
+    'ezcDocumentDocbookToWikiInternalLinkHandler'        => 'Document/converters/element_visitor/docbook/wiki/internal_link.php',
239
+    'ezcDocumentDocbookToWikiItemizedListHandler'        => 'Document/converters/element_visitor/docbook/wiki/itemized_list.php',
240
+    'ezcDocumentDocbookToWikiLiteralHandler'             => 'Document/converters/element_visitor/docbook/wiki/literal.php',
241
+    'ezcDocumentDocbookToWikiLiteralLayoutHandler'       => 'Document/converters/element_visitor/docbook/wiki/literal_layout.php',
242
+    'ezcDocumentDocbookToWikiOrderedListHandler'         => 'Document/converters/element_visitor/docbook/wiki/ordered_list.php',
243
+    'ezcDocumentDocbookToWikiParagraphHandler'           => 'Document/converters/element_visitor/docbook/wiki/paragraph.php',
244
+    'ezcDocumentDocbookToWikiRecurseHandler'             => 'Document/converters/element_visitor/docbook/wiki/recurse.php',
245
+    'ezcDocumentDocbookToWikiSectionHandler'             => 'Document/converters/element_visitor/docbook/wiki/section.php',
246
+    'ezcDocumentDocbookToWikiTableHandler'               => 'Document/converters/element_visitor/docbook/wiki/table.php',
247
+    'ezcDocumentDokuwikiWiki'                            => 'Document/document/wiki/dokuwiki.php',
248
+    'ezcDocumentEzXml'                                   => 'Document/document/xml/ezxml.php',
249
+    'ezcDocumentEzXmlDummyLinkConverter'                 => 'Document/document/xml/ezxml/dummy_link_converter.php',
250
+    'ezcDocumentEzXmlDummyLinkProvider'                  => 'Document/document/xml/ezxml/dummy_link_provider.php',
251
+    'ezcDocumentEzXmlOptions'                            => 'Document/options/document_ezxml.php',
252
+    'ezcDocumentEzXmlToDocbookAnchorHandler'             => 'Document/converters/element_visitor/ezxml/docbook/anchor.php',
253
+    'ezcDocumentEzXmlToDocbookConverter'                 => 'Document/converters/element_visitor/ezxml_docbook.php',
254
+    'ezcDocumentEzXmlToDocbookConverterOptions'          => 'Document/options/converter_ezxml_docbook.php',
255
+    'ezcDocumentEzXmlToDocbookEmphasisHandler'           => 'Document/converters/element_visitor/ezxml/docbook/emphasis.php',
256
+    'ezcDocumentEzXmlToDocbookHeaderHandler'             => 'Document/converters/element_visitor/ezxml/docbook/header.php',
257
+    'ezcDocumentEzXmlToDocbookLineHandler'               => 'Document/converters/element_visitor/ezxml/docbook/line.php',
258
+    'ezcDocumentEzXmlToDocbookLinkHandler'               => 'Document/converters/element_visitor/ezxml/docbook/link.php',
259
+    'ezcDocumentEzXmlToDocbookListHandler'               => 'Document/converters/element_visitor/ezxml/docbook/list.php',
260
+    'ezcDocumentEzXmlToDocbookLiteralHandler'            => 'Document/converters/element_visitor/ezxml/docbook/literal.php',
261
+    'ezcDocumentEzXmlToDocbookMappingHandler'            => 'Document/converters/element_visitor/ezxml/docbook/mapper.php',
262
+    'ezcDocumentEzXmlToDocbookTableCellHandler'          => 'Document/converters/element_visitor/ezxml/docbook/table_cell.php',
263
+    'ezcDocumentEzXmlToDocbookTableHandler'              => 'Document/converters/element_visitor/ezxml/docbook/table.php',
264
+    'ezcDocumentEzXmlToDocbookTableRowHandler'           => 'Document/converters/element_visitor/ezxml/docbook/table_row.php',
265
+    'ezcDocumentListBulletGuesser'                       => 'Document/tools/list_bullet_guesser.php',
266
+    'ezcDocumentLocateableDomElement'                    => 'Document/dom_elements/locateable.php',
267
+    'ezcDocumentNoListItemGenerator'                     => 'Document/document/pdf/item_generator/no.php',
268
+    'ezcDocumentNumberedListItemGenerator'               => 'Document/document/pdf/item_generator/number.php',
269
+    'ezcDocumentOdt'                                     => 'Document/document/xml/odt.php',
270
+    'ezcDocumentOdtDefaultPcssConverter'                 => 'Document/converters/element_visitor/docbook/odt/styler/pcss/converter/default.php',
271
+    'ezcDocumentOdtElementFilter'                        => 'Document/document/xml/odt/filter/element.php',
272
+    'ezcDocumentOdtElementFootnoteFilter'                => 'Document/document/xml/odt/filter/element/footnote.php',
273
+    'ezcDocumentOdtElementFrameFilter'                   => 'Document/document/xml/odt/filter/element/frame.php',
274
+    'ezcDocumentOdtElementHeaderFilter'                  => 'Document/document/xml/odt/filter/element/header.php',
275
+    'ezcDocumentOdtElementHtmlTableFilter'               => 'Document/document/xml/odt/filter/element/html_table.php',
276
+    'ezcDocumentOdtElementImageFilter'                   => 'Document/document/xml/odt/filter/element/image.php',
277
+    'ezcDocumentOdtElementLinkFilter'                    => 'Document/document/xml/odt/filter/element/link.php',
278
+    'ezcDocumentOdtElementListFilter'                    => 'Document/document/xml/odt/filter/element/list.php',
279
+    'ezcDocumentOdtElementParagraphFilter'               => 'Document/document/xml/odt/filter/element/paragraph.php',
280
+    'ezcDocumentOdtElementTableFilter'                   => 'Document/document/xml/odt/filter/element/table.php',
281
+    'ezcDocumentOdtElementWhitespaceFilter'              => 'Document/document/xml/odt/filter/element/whitespace.php',
282
+    'ezcDocumentOdtEmphasisStyleFilterRule'              => 'Document/document/xml/odt/filter/style/rule/emphasis.php',
283
+    'ezcDocumentOdtFormattingProperties'                 => 'Document/document/xml/odt/formatting/properties.php',
284
+    'ezcDocumentOdtFormattingPropertyCollection'         => 'Document/document/xml/odt/formatting/property_collection.php',
285
+    'ezcDocumentOdtImageFilter'                          => 'Document/document/xml/odt/filter/image.php',
286
+    'ezcDocumentOdtImageLocator'                         => 'Document/converters/element_visitor/docbook/odt/image_locator.php',
287
+    'ezcDocumentOdtListLevelStyleBullet'                 => 'Document/document/xml/odt/list_level_style/bullet.php',
288
+    'ezcDocumentOdtListLevelStyleFilterRule'             => 'Document/document/xml/odt/filter/style/rule/list_level.php',
289
+    'ezcDocumentOdtListLevelStyleNumber'                 => 'Document/document/xml/odt/list_level_style/number.php',
290
+    'ezcDocumentOdtListStyle'                            => 'Document/document/xml/odt/list_style.php',
291
+    'ezcDocumentOdtListStyleGenerator'                   => 'Document/converters/element_visitor/docbook/odt/styler/pcss/generator/list.php',
292
+    'ezcDocumentOdtMetaGenerator'                        => 'Document/converters/element_visitor/docbook/odt/meta_generator.php',
293
+    'ezcDocumentOdtOptions'                              => 'Document/options/document_odt.php',
294
+    'ezcDocumentOdtParagraphStyleGenerator'              => 'Document/converters/element_visitor/docbook/odt/styler/pcss/generator/paragraph.php',
295
+    'ezcDocumentOdtPcssBorderConverter'                  => 'Document/converters/element_visitor/docbook/odt/styler/pcss/converter/border.php',
296
+    'ezcDocumentOdtPcssColorConverter'                   => 'Document/converters/element_visitor/docbook/odt/styler/pcss/converter/color.php',
297
+    'ezcDocumentOdtPcssConverterManager'                 => 'Document/converters/element_visitor/docbook/odt/styler/pcss/converter_manager.php',
298
+    'ezcDocumentOdtPcssConverterTools'                   => 'Document/converters/element_visitor/docbook/odt/styler/pcss/converter_tools.php',
299
+    'ezcDocumentOdtPcssFontConverter'                    => 'Document/converters/element_visitor/docbook/odt/styler/pcss/converter/font.php',
300
+    'ezcDocumentOdtPcssFontNameConverter'                => 'Document/converters/element_visitor/docbook/odt/styler/pcss/converter/font_name.php',
301
+    'ezcDocumentOdtPcssFontSizeConverter'                => 'Document/converters/element_visitor/docbook/odt/styler/pcss/converter/font_size.php',
302
+    'ezcDocumentOdtPcssFontStylePreprocessor'            => 'Document/converters/element_visitor/docbook/odt/styler/pcss/preprocessor/font.php',
303
+    'ezcDocumentOdtPcssListStylePreprocessor'            => 'Document/converters/element_visitor/docbook/odt/styler/pcss/preprocessor/list.php',
304
+    'ezcDocumentOdtPcssMarginConverter'                  => 'Document/converters/element_visitor/docbook/odt/styler/pcss/converter/margin.php',
305
+    'ezcDocumentOdtPcssParagraphStylePreprocessor'       => 'Document/converters/element_visitor/docbook/odt/styler/pcss/preprocessor/paragraph.php',
306
+    'ezcDocumentOdtPcssPreprocessor'                     => 'Document/converters/element_visitor/docbook/odt/styler/pcss/preprocessor.php',
307
+    'ezcDocumentOdtPcssStyler'                           => 'Document/converters/element_visitor/docbook/odt/styler/pcss.php',
308
+    'ezcDocumentOdtPcssTextDecorationConverter'          => 'Document/converters/element_visitor/docbook/odt/styler/pcss/converter/text_decoration.php',
309
+    'ezcDocumentOdtStyle'                                => 'Document/document/xml/odt/style.php',
310
+    'ezcDocumentOdtStyleExtractor'                       => 'Document/document/xml/odt/style/extractor.php',
311
+    'ezcDocumentOdtStyleFilter'                          => 'Document/document/xml/odt/filter/style.php',
312
+    'ezcDocumentOdtStyleInferencer'                      => 'Document/document/xml/odt/style/inferencer.php',
313
+    'ezcDocumentOdtStyleInformation'                     => 'Document/converters/element_visitor/docbook/odt/style_information.php',
314
+    'ezcDocumentOdtStyleListPropertyGenerator'           => 'Document/converters/element_visitor/docbook/odt/styler/pcss/property_generator/list.php',
315
+    'ezcDocumentOdtStyleParagraphPropertyGenerator'      => 'Document/converters/element_visitor/docbook/odt/styler/pcss/property_generator/paragraph.php',
316
+    'ezcDocumentOdtStyleParser'                          => 'Document/document/xml/odt/style/parser.php',
317
+    'ezcDocumentOdtStyleTableCellPropertyGenerator'      => 'Document/converters/element_visitor/docbook/odt/styler/pcss/property_generator/table_cell.php',
318
+    'ezcDocumentOdtStyleTablePropertyGenerator'          => 'Document/converters/element_visitor/docbook/odt/styler/pcss/property_generator/table.php',
319
+    'ezcDocumentOdtStyleTableRowPropertyGenerator'       => 'Document/converters/element_visitor/docbook/odt/styler/pcss/property_generator/table_row.php',
320
+    'ezcDocumentOdtStyleTextPropertyGenerator'           => 'Document/converters/element_visitor/docbook/odt/styler/pcss/property_generator/text.php',
321
+    'ezcDocumentOdtTableCellStyleGenerator'              => 'Document/converters/element_visitor/docbook/odt/styler/pcss/generator/table_cell.php',
322
+    'ezcDocumentOdtTableRowStyleGenerator'               => 'Document/converters/element_visitor/docbook/odt/styler/pcss/generator/table_row.php',
323
+    'ezcDocumentOdtTableStyleGenerator'                  => 'Document/converters/element_visitor/docbook/odt/styler/pcss/generator/table.php',
324
+    'ezcDocumentOdtTextProcessor'                        => 'Document/converters/element_visitor/docbook/odt/text_processor.php',
325
+    'ezcDocumentOdtTextStyleGenerator'                   => 'Document/converters/element_visitor/docbook/odt/styler/pcss/generator/text.php',
326
+    'ezcDocumentParserOptions'                           => 'Document/options/document_parser.php',
327
+    'ezcDocumentPcssDeclarationDirective'                => 'Document/pcss/declaration_directive.php',
328
+    'ezcDocumentPcssLayoutDirective'                     => 'Document/pcss/layout_directive.php',
329
+    'ezcDocumentPcssMeasure'                             => 'Document/pcss/measure.php',
330
+    'ezcDocumentPcssParser'                              => 'Document/pcss/parser.php',
331
+    'ezcDocumentPcssStyleBorderBoxValue'                 => 'Document/pcss/style/border_box_value.php',
332
+    'ezcDocumentPcssStyleBorderValue'                    => 'Document/pcss/style/border_value.php',
333
+    'ezcDocumentPcssStyleColorBoxValue'                  => 'Document/pcss/style/color_box_value.php',
334
+    'ezcDocumentPcssStyleColorValue'                     => 'Document/pcss/style/color_value.php',
335
+    'ezcDocumentPcssStyleInferencer'                     => 'Document/pcss/style_inferencer.php',
336
+    'ezcDocumentPcssStyleIntValue'                       => 'Document/pcss/style/int_value.php',
337
+    'ezcDocumentPcssStyleLineBoxValue'                   => 'Document/pcss/style/line_box_value.php',
338
+    'ezcDocumentPcssStyleLineValue'                      => 'Document/pcss/style/line_value.php',
339
+    'ezcDocumentPcssStyleListValue'                      => 'Document/pcss/style/list_value.php',
340
+    'ezcDocumentPcssStyleMeasureBoxValue'                => 'Document/pcss/style/measure_box_value.php',
341
+    'ezcDocumentPcssStyleMeasureValue'                   => 'Document/pcss/style/measure_value.php',
342
+    'ezcDocumentPcssStyleSrcValue'                       => 'Document/pcss/style/src_value.php',
343
+    'ezcDocumentPcssStyleStringValue'                    => 'Document/pcss/style/string_value.php',
344
+    'ezcDocumentPdf'                                     => 'Document/document/pdf.php',
345
+    'ezcDocumentPdfBlockquoteRenderer'                   => 'Document/document/pdf/renderer/blockquote.php',
346
+    'ezcDocumentPdfBoundingBox'                          => 'Document/document/pdf/box.php',
347
+    'ezcDocumentPdfDefaultHyphenator'                    => 'Document/document/pdf/hyphenator/default.php',
348
+    'ezcDocumentPdfDefaultTableColumnWidthCalculator'    => 'Document/document/pdf/default_table_column_width_calculator.php',
349
+    'ezcDocumentPdfDefaultTokenizer'                     => 'Document/document/pdf/tokenizer/default.php',
350
+    'ezcDocumentPdfFooterOptions'                        => 'Document/options/document_pdf_footer.php',
351
+    'ezcDocumentPdfHaruDriver'                           => 'Document/document/pdf/driver/haru.php',
352
+    'ezcDocumentPdfHeaderPdfPart'                        => 'Document/document/pdf/part/header.php',
353
+    'ezcDocumentPdfImage'                                => 'Document/document/pdf/image.php',
354
+    'ezcDocumentPdfListItemRenderer'                     => 'Document/document/pdf/renderer/list_item.php',
355
+    'ezcDocumentPdfListRenderer'                         => 'Document/document/pdf/renderer/list.php',
356
+    'ezcDocumentPdfLiteralBlockRenderer'                 => 'Document/document/pdf/renderer/literal_block.php',
357
+    'ezcDocumentPdfLiteralTokenizer'                     => 'Document/document/pdf/tokenizer/literal.php',
358
+    'ezcDocumentPdfMediaObjectRenderer'                  => 'Document/document/pdf/renderer/mediaobject.php',
359
+    'ezcDocumentPdfOptions'                              => 'Document/options/document_pdf.php',
360
+    'ezcDocumentPdfPage'                                 => 'Document/document/pdf/page.php',
361
+    'ezcDocumentPdfPhpImageHandler'                      => 'Document/document/pdf/image/php.php',
362
+    'ezcDocumentPdfSvgDriver'                            => 'Document/document/pdf/driver/svg.php',
363
+    'ezcDocumentPdfTableRenderer'                        => 'Document/document/pdf/renderer/table.php',
364
+    'ezcDocumentPdfTcpdfDriver'                          => 'Document/document/pdf/driver/tcpdf.php',
365
+    'ezcDocumentPdfTextBlockRenderer'                    => 'Document/document/pdf/renderer/text_block.php',
366
+    'ezcDocumentPdfTitleRenderer'                        => 'Document/document/pdf/renderer/title.php',
367
+    'ezcDocumentPdfTransactionalDriverWrapper'           => 'Document/document/pdf/driver/wrapper.php',
368
+    'ezcDocumentPdfTransactionalDriverWrapperState'      => 'Document/document/pdf/driver/wrapper_state.php',
369
+    'ezcDocumentPropertyContainerDomElement'             => 'Document/dom_elements/property_container.php',
370
+    'ezcDocumentRomanListItemGenerator'                  => 'Document/document/pdf/item_generator/roman.php',
371
+    'ezcDocumentRst'                                     => 'Document/document/rst.php',
372
+    'ezcDocumentRstAnonymousLinkNode'                    => 'Document/document/rst/nodes/link_anonymous.php',
373
+    'ezcDocumentRstAnonymousReferenceNode'               => 'Document/document/rst/nodes/anon_reference.php',
374
+    'ezcDocumentRstAttentionDirective'                   => 'Document/document/rst/directive/attention.php',
375
+    'ezcDocumentRstBlockquoteAnnotationNode'             => 'Document/document/rst/nodes/blockquote_annotation.php',
376
+    'ezcDocumentRstBlockquoteNode'                       => 'Document/document/rst/nodes/blockquote.php',
377
+    'ezcDocumentRstBulletListListNode'                   => 'Document/document/rst/nodes/bullet_list_list.php',
378
+    'ezcDocumentRstBulletListNode'                       => 'Document/document/rst/nodes/bullet_list.php',
379
+    'ezcDocumentRstCommentNode'                          => 'Document/document/rst/nodes/comment.php',
380
+    'ezcDocumentRstContentsDirective'                    => 'Document/document/rst/directive/contents.php',
381
+    'ezcDocumentRstDangerDirective'                      => 'Document/document/rst/directive/danger.php',
382
+    'ezcDocumentRstDefinitionListListNode'               => 'Document/document/rst/nodes/definition_list_list.php',
383
+    'ezcDocumentRstDefinitionListNode'                   => 'Document/document/rst/nodes/definition_list.php',
384
+    'ezcDocumentRstDirectiveNode'                        => 'Document/document/rst/nodes/directive.php',
385
+    'ezcDocumentRstDocbookVisitor'                       => 'Document/document/rst/visitor/docbook.php',
386
+    'ezcDocumentRstDocumentNode'                         => 'Document/document/rst/nodes/document.php',
387
+    'ezcDocumentRstEmphasisTextRole'                     => 'Document/document/rst/role/emphasis.php',
388
+    'ezcDocumentRstEnumeratedListListNode'               => 'Document/document/rst/nodes/enumerated_list_list.php',
389
+    'ezcDocumentRstEnumeratedListNode'                   => 'Document/document/rst/nodes/enumerated_list.php',
390
+    'ezcDocumentRstExternalReferenceNode'                => 'Document/document/rst/nodes/link_reference.php',
391
+    'ezcDocumentRstFieldListNode'                        => 'Document/document/rst/nodes/field_list.php',
392
+    'ezcDocumentRstFigureDirective'                      => 'Document/document/rst/directive/figure.php',
393
+    'ezcDocumentRstFootnoteNode'                         => 'Document/document/rst/nodes/footnote.php',
394
+    'ezcDocumentRstIncludeDirective'                     => 'Document/document/rst/directive/include.php',
395
+    'ezcDocumentRstLineBlockLineNode'                    => 'Document/document/rst/nodes/line_block_line.php',
396
+    'ezcDocumentRstLineBlockNode'                        => 'Document/document/rst/nodes/line_block.php',
397
+    'ezcDocumentRstLiteralBlockNode'                     => 'Document/document/rst/nodes/literal_block.php',
398
+    'ezcDocumentRstLiteralNode'                          => 'Document/document/rst/nodes/literal.php',
399
+    'ezcDocumentRstLiteralTextRole'                      => 'Document/document/rst/role/literal.php',
400
+    'ezcDocumentRstMarkupEmphasisNode'                   => 'Document/document/rst/nodes/markup_emphasis.php',
401
+    'ezcDocumentRstMarkupInlineLiteralNode'              => 'Document/document/rst/nodes/markup_inline_literal.php',
402
+    'ezcDocumentRstMarkupInterpretedTextNode'            => 'Document/document/rst/nodes/markup_interpreted_text.php',
403
+    'ezcDocumentRstMarkupStrongEmphasisNode'             => 'Document/document/rst/nodes/markup_strong_emphasis.php',
404
+    'ezcDocumentRstMarkupSubstitutionNode'               => 'Document/document/rst/nodes/markup_substitution.php',
405
+    'ezcDocumentRstNamedReferenceNode'                   => 'Document/document/rst/nodes/named_reference.php',
406
+    'ezcDocumentRstNoteDirective'                        => 'Document/document/rst/directive/note.php',
407
+    'ezcDocumentRstNoticeDirective'                      => 'Document/document/rst/directive/notice.php',
408
+    'ezcDocumentRstOptions'                              => 'Document/options/document_rst.php',
409
+    'ezcDocumentRstParagraphNode'                        => 'Document/document/rst/nodes/paragraph.php',
410
+    'ezcDocumentRstParser'                               => 'Document/document/rst/parser.php',
411
+    'ezcDocumentRstReferenceNode'                        => 'Document/document/rst/nodes/reference.php',
412
+    'ezcDocumentRstSectionNode'                          => 'Document/document/rst/nodes/section.php',
413
+    'ezcDocumentRstStack'                                => 'Document/document/rst/document_stack.php',
414
+    'ezcDocumentRstStrongTextRole'                       => 'Document/document/rst/role/strong.php',
415
+    'ezcDocumentRstSubscriptTextRole'                    => 'Document/document/rst/role/subscript.php',
416
+    'ezcDocumentRstSubstitutionNode'                     => 'Document/document/rst/nodes/substitution.php',
417
+    'ezcDocumentRstSuperscriptTextRole'                  => 'Document/document/rst/role/superscript.php',
418
+    'ezcDocumentRstTableBodyNode'                        => 'Document/document/rst/nodes/table_body.php',
419
+    'ezcDocumentRstTableCellNode'                        => 'Document/document/rst/nodes/table_cell.php',
420
+    'ezcDocumentRstTableHeadNode'                        => 'Document/document/rst/nodes/table_head.php',
421
+    'ezcDocumentRstTableNode'                            => 'Document/document/rst/nodes/table.php',
422
+    'ezcDocumentRstTableRowNode'                         => 'Document/document/rst/nodes/table_row.php',
423
+    'ezcDocumentRstTargetNode'                           => 'Document/document/rst/nodes/target.php',
424
+    'ezcDocumentRstTextLineNode'                         => 'Document/document/rst/nodes/text_line.php',
425
+    'ezcDocumentRstTitleNode'                            => 'Document/document/rst/nodes/title.php',
426
+    'ezcDocumentRstTitleReferenceTextRole'               => 'Document/document/rst/role/title_reference.php',
427
+    'ezcDocumentRstToken'                                => 'Document/document/rst/token.php',
428
+    'ezcDocumentRstTokenizer'                            => 'Document/document/rst/tokenizer.php',
429
+    'ezcDocumentRstTransitionNode'                       => 'Document/document/rst/nodes/transition.php',
430
+    'ezcDocumentRstWarningDirective'                     => 'Document/document/rst/directive/warning.php',
431
+    'ezcDocumentRstXhtmlBodyVisitor'                     => 'Document/document/rst/visitor/xhtml_body.php',
432
+    'ezcDocumentValidationError'                         => 'Document/validation_error.php',
433
+    'ezcDocumentWikiBlockquoteNode'                      => 'Document/document/wiki/nodes/blockquote.php',
434
+    'ezcDocumentWikiBoldNode'                            => 'Document/document/wiki/nodes/bold.php',
435
+    'ezcDocumentWikiBoldToken'                           => 'Document/document/wiki/token/bold.php',
436
+    'ezcDocumentWikiBulletListItemNode'                  => 'Document/document/wiki/nodes/bullet_list_item.php',
437
+    'ezcDocumentWikiBulletListItemToken'                 => 'Document/document/wiki/token/bullet_list.php',
438
+    'ezcDocumentWikiBulletListNode'                      => 'Document/document/wiki/nodes/bullet_list.php',
439
+    'ezcDocumentWikiCodePlugin'                          => 'Document/document/wiki/plugin/code.php',
440
+    'ezcDocumentWikiConfluenceLinkStartToken'            => 'Document/document/wiki/token/confluence_link_start.php',
441
+    'ezcDocumentWikiConfluenceTokenizer'                 => 'Document/document/wiki/tokenizer/confluence.php',
442
+    'ezcDocumentWikiCreoleTokenizer'                     => 'Document/document/wiki/tokenizer/creole.php',
443
+    'ezcDocumentWikiDefinitionListItemToken'             => 'Document/document/wiki/token/definition_list.php',
444
+    'ezcDocumentWikiDeletedNode'                         => 'Document/document/wiki/nodes/deleted.php',
445
+    'ezcDocumentWikiDeletedToken'                        => 'Document/document/wiki/token/deleted.php',
446
+    'ezcDocumentWikiDocbookVisitor'                      => 'Document/document/wiki/visitor/docbook.php',
447
+    'ezcDocumentWikiDocumentNode'                        => 'Document/document/wiki/nodes/document.php',
448
+    'ezcDocumentWikiDokuwikiTokenizer'                   => 'Document/document/wiki/tokenizer/dokuwiki.php',
449
+    'ezcDocumentWikiEndOfFileToken'                      => 'Document/document/wiki/token/end_of_file.php',
450
+    'ezcDocumentWikiEnumeratedListItemNode'              => 'Document/document/wiki/nodes/enumerated_list_item.php',
451
+    'ezcDocumentWikiEnumeratedListItemToken'             => 'Document/document/wiki/token/enumerated_list.php',
452
+    'ezcDocumentWikiEnumeratedListNode'                  => 'Document/document/wiki/nodes/enumerated_list.php',
453
+    'ezcDocumentWikiEscapeCharacterToken'                => 'Document/document/wiki/token/escape_character.php',
454
+    'ezcDocumentWikiExternalLinkNode'                    => 'Document/document/wiki/nodes/external_link.php',
455
+    'ezcDocumentWikiExternalLinkToken'                   => 'Document/document/wiki/token/external_link.php',
456
+    'ezcDocumentWikiFootnoteEndNode'                     => 'Document/document/wiki/nodes/footnote_end.php',
457
+    'ezcDocumentWikiFootnoteEndToken'                    => 'Document/document/wiki/token/footnote_end.php',
458
+    'ezcDocumentWikiFootnoteNode'                        => 'Document/document/wiki/nodes/footnote.php',
459
+    'ezcDocumentWikiFootnoteStartToken'                  => 'Document/document/wiki/token/footnote_start.php',
460
+    'ezcDocumentWikiImageEndNode'                        => 'Document/document/wiki/nodes/image_end.php',
461
+    'ezcDocumentWikiImageEndToken'                       => 'Document/document/wiki/token/image_end.php',
462
+    'ezcDocumentWikiImageNode'                           => 'Document/document/wiki/nodes/image.php',
463
+    'ezcDocumentWikiImageStartToken'                     => 'Document/document/wiki/token/image_start.php',
464
+    'ezcDocumentWikiInlineLiteralNode'                   => 'Document/document/wiki/nodes/inline_literal.php',
465
+    'ezcDocumentWikiInlineLiteralToken'                  => 'Document/document/wiki/token/inline_literal.php',
466
+    'ezcDocumentWikiInlineQuoteNode'                     => 'Document/document/wiki/nodes/inline_quote.php',
467
+    'ezcDocumentWikiInlineQuoteToken'                    => 'Document/document/wiki/token/inline_quote.php',
468
+    'ezcDocumentWikiInterWikiLinkNode'                   => 'Document/document/wiki/nodes/inter_wiki_link.php',
469
+    'ezcDocumentWikiInterWikiLinkToken'                  => 'Document/document/wiki/token/inter_wiki_link.php',
470
+    'ezcDocumentWikiInternalLinkNode'                    => 'Document/document/wiki/nodes/internal_link.php',
471
+    'ezcDocumentWikiInternalLinkToken'                   => 'Document/document/wiki/token/internal_link.php',
472
+    'ezcDocumentWikiInvisibleBreakNode'                  => 'Document/document/wiki/nodes/invisible_break.php',
473
+    'ezcDocumentWikiItalicNode'                          => 'Document/document/wiki/nodes/italic.php',
474
+    'ezcDocumentWikiItalicToken'                         => 'Document/document/wiki/token/italic.php',
475
+    'ezcDocumentWikiLineBreakNode'                       => 'Document/document/wiki/nodes/line_break.php',
476
+    'ezcDocumentWikiLineBreakToken'                      => 'Document/document/wiki/token/line_break.php',
477
+    'ezcDocumentWikiLinkEndNode'                         => 'Document/document/wiki/nodes/link_end.php',
478
+    'ezcDocumentWikiLinkEndToken'                        => 'Document/document/wiki/token/link_end.php',
479
+    'ezcDocumentWikiLinkNode'                            => 'Document/document/wiki/nodes/link.php',
480
+    'ezcDocumentWikiLiteralBlockNode'                    => 'Document/document/wiki/nodes/literal_block.php',
481
+    'ezcDocumentWikiLiteralBlockToken'                   => 'Document/document/wiki/token/literal_block.php',
482
+    'ezcDocumentWikiLiteralLineToken'                    => 'Document/document/wiki/token/literal_line.php',
483
+    'ezcDocumentWikiMediawikiEmphasisToken'              => 'Document/document/wiki/token/mediawiki_emphasis.php',
484
+    'ezcDocumentWikiMediawikiTokenizer'                  => 'Document/document/wiki/tokenizer/mediawiki.php',
485
+    'ezcDocumentWikiMonospaceNode'                       => 'Document/document/wiki/nodes/monospace.php',
486
+    'ezcDocumentWikiMonospaceToken'                      => 'Document/document/wiki/token/monospace.php',
487
+    'ezcDocumentWikiNewLineToken'                        => 'Document/document/wiki/token/new_line.php',
488
+    'ezcDocumentWikiOptions'                             => 'Document/options/document_wiki.php',
489
+    'ezcDocumentWikiPageBreakNode'                       => 'Document/document/wiki/nodes/page_break.php',
490
+    'ezcDocumentWikiPageBreakToken'                      => 'Document/document/wiki/token/page_break.php',
491
+    'ezcDocumentWikiParagraphIndentationToken'           => 'Document/document/wiki/token/indentation.php',
492
+    'ezcDocumentWikiParagraphNode'                       => 'Document/document/wiki/nodes/paragraph.php',
493
+    'ezcDocumentWikiParser'                              => 'Document/document/wiki/parser.php',
494
+    'ezcDocumentWikiPluginNode'                          => 'Document/document/wiki/nodes/plugin.php',
495
+    'ezcDocumentWikiPluginToken'                         => 'Document/document/wiki/token/plugin.php',
496
+    'ezcDocumentWikiQuoteToken'                          => 'Document/document/wiki/token/quote.php',
497
+    'ezcDocumentWikiSeparatorToken'                      => 'Document/document/wiki/token/separator.php',
498
+    'ezcDocumentWikiSpecialCharsToken'                   => 'Document/document/wiki/token/special_chars.php',
499
+    'ezcDocumentWikiStrikeToken'                         => 'Document/document/wiki/token/strike.php',
500
+    'ezcDocumentWikiSubscriptNode'                       => 'Document/document/wiki/nodes/subscript.php',
501
+    'ezcDocumentWikiSubscriptToken'                      => 'Document/document/wiki/token/subscript.php',
502
+    'ezcDocumentWikiSuperscriptNode'                     => 'Document/document/wiki/nodes/superscript.php',
503
+    'ezcDocumentWikiSuperscriptToken'                    => 'Document/document/wiki/token/superscript.php',
504
+    'ezcDocumentWikiTableCellNode'                       => 'Document/document/wiki/nodes/table_cell.php',
505
+    'ezcDocumentWikiTableHeaderSeparatorNode'            => 'Document/document/wiki/nodes/table_header_separator.php',
506
+    'ezcDocumentWikiTableHeaderToken'                    => 'Document/document/wiki/token/table_header.php',
507
+    'ezcDocumentWikiTableNode'                           => 'Document/document/wiki/nodes/table.php',
508
+    'ezcDocumentWikiTableRowNode'                        => 'Document/document/wiki/nodes/table_row.php',
509
+    'ezcDocumentWikiTableRowToken'                       => 'Document/document/wiki/token/table_row.php',
510
+    'ezcDocumentWikiTextLineToken'                       => 'Document/document/wiki/token/text_line.php',
511
+    'ezcDocumentWikiTextNode'                            => 'Document/document/wiki/nodes/text.php',
512
+    'ezcDocumentWikiTitleNode'                           => 'Document/document/wiki/nodes/title.php',
513
+    'ezcDocumentWikiTitleToken'                          => 'Document/document/wiki/token/title.php',
514
+    'ezcDocumentWikiUnderlineNode'                       => 'Document/document/wiki/nodes/underline.php',
515
+    'ezcDocumentWikiUnderlineToken'                      => 'Document/document/wiki/token/underline.php',
516
+    'ezcDocumentWikiWhitespaceToken'                     => 'Document/document/wiki/token/whitespace.php',
517
+    'ezcDocumentXhtml'                                   => 'Document/document/xml/xhtml.php',
518
+    'ezcDocumentXhtmlBlockquoteElementFilter'            => 'Document/document/xml/xhtml/filter/element/blockquote.php',
519
+    'ezcDocumentXhtmlContentLocatorFilter'               => 'Document/document/xml/xhtml/filter/content_locator.php',
520
+    'ezcDocumentXhtmlDefinitionListElementFilter'        => 'Document/document/xml/xhtml/filter/element/definitionlist.php',
521
+    'ezcDocumentXhtmlElementFilter'                      => 'Document/document/xml/xhtml/filter/element.php',
522
+    'ezcDocumentXhtmlElementMappingFilter'               => 'Document/document/xml/xhtml/filter/element/mapping.php',
523
+    'ezcDocumentXhtmlEnumeratedElementFilter'            => 'Document/document/xml/xhtml/filter/element/enumerated.php',
524
+    'ezcDocumentXhtmlFootnoteElementFilter'              => 'Document/document/xml/xhtml/filter/element/footnote.php',
525
+    'ezcDocumentXhtmlHeaderElementFilter'                => 'Document/document/xml/xhtml/filter/element/header.php',
526
+    'ezcDocumentXhtmlImageElementFilter'                 => 'Document/document/xml/xhtml/filter/element/image.php',
527
+    'ezcDocumentXhtmlLineBlockElementFilter'             => 'Document/document/xml/xhtml/filter/element/lineblock.php',
528
+    'ezcDocumentXhtmlLinkElementFilter'                  => 'Document/document/xml/xhtml/filter/element/link.php',
529
+    'ezcDocumentXhtmlLiteralElementFilter'               => 'Document/document/xml/xhtml/filter/element/literal.php',
530
+    'ezcDocumentXhtmlMetadataFilter'                     => 'Document/document/xml/xhtml/filter/metadata.php',
531
+    'ezcDocumentXhtmlOptions'                            => 'Document/options/document_xhtml.php',
532
+    'ezcDocumentXhtmlParagraphElementFilter'             => 'Document/document/xml/xhtml/filter/element/paragraph.php',
533
+    'ezcDocumentXhtmlSpecialParagraphElementFilter'      => 'Document/document/xml/xhtml/filter/element/special_paragraph.php',
534
+    'ezcDocumentXhtmlStrongElementFilter'                => 'Document/document/xml/xhtml/filter/element/strong.php',
535
+    'ezcDocumentXhtmlTableCellElementFilter'             => 'Document/document/xml/xhtml/filter/element/tablecell.php',
536
+    'ezcDocumentXhtmlTableElementFilter'                 => 'Document/document/xml/xhtml/filter/element/table.php',
537
+    'ezcDocumentXhtmlTablesFilter'                       => 'Document/document/xml/xhtml/filter/tables.php',
538
+    'ezcDocumentXhtmlTextToParagraphFilter'              => 'Document/document/xml/xhtml/filter/element/text.php',
539
+    'ezcDocumentXhtmlXpathFilter'                        => 'Document/document/xml/xhtml/filter/xpath.php',
540
+);
541
+?>
... ...
@@ -0,0 +1,22 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the Execution component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2008 eZ systems as. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.1.1
8
+ * @filesource
9
+ * @package Execution
10
+ */
11
+
12
+return array(
13
+    'ezcExecutionException'                   => 'Execution/exceptions/exception.php',
14
+    'ezcExecutionAlreadyInitializedException' => 'Execution/exceptions/already_initialized.php',
15
+    'ezcExecutionInvalidCallbackException'    => 'Execution/exceptions/invalid_callback.php',
16
+    'ezcExecutionNotInitializedException'     => 'Execution/exceptions/not_initialized.php',
17
+    'ezcExecutionWrongClassException'         => 'Execution/exceptions/wrong_class.php',
18
+    'ezcExecutionErrorHandler'                => 'Execution/interfaces/execution_handler.php',
19
+    'ezcExecution'                            => 'Execution/execution.php',
20
+    'ezcExecutionBasicErrorHandler'           => 'Execution/handlers/basic_handler.php',
21
+);
22
+?>
... ...
@@ -0,0 +1,52 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the Feed component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.3
8
+ * @filesource
9
+ * @package Feed
10
+ */
11
+
12
+return array(
13
+    'ezcFeedException'                           => 'Feed/exceptions/exception.php',
14
+    'ezcFeedAtLeastOneItemDataRequiredException' => 'Feed/exceptions/one_item_data_required.php',
15
+    'ezcFeedOnlyOneValueAllowedException'        => 'Feed/exceptions/only_one_value_allowed.php',
16
+    'ezcFeedParseErrorException'                 => 'Feed/exceptions/parse_error.php',
17
+    'ezcFeedRequiredMetaDataMissingException'    => 'Feed/exceptions/meta_data_missing.php',
18
+    'ezcFeedUndefinedModuleException'            => 'Feed/exceptions/undefined_module.php',
19
+    'ezcFeedUnsupportedElementException'         => 'Feed/exceptions/unsupported_element.php',
20
+    'ezcFeedUnsupportedModuleException'          => 'Feed/exceptions/unsupported_module.php',
21
+    'ezcFeedUnsupportedTypeException'            => 'Feed/exceptions/unsupported_type.php',
22
+    'ezcFeedElement'                             => 'Feed/interfaces/element.php',
23
+    'ezcFeedModule'                              => 'Feed/interfaces/module.php',
24
+    'ezcFeedParser'                              => 'Feed/interfaces/parser.php',
25
+    'ezcFeedProcessor'                           => 'Feed/interfaces/processor.php',
26
+    'ezcFeedTextElement'                         => 'Feed/structs/text.php',
27
+    'ezcFeed'                                    => 'Feed/feed.php',
28
+    'ezcFeedAtom'                                => 'Feed/processors/atom.php',
29
+    'ezcFeedCategoryElement'                     => 'Feed/structs/category.php',
30
+    'ezcFeedCloudElement'                        => 'Feed/structs/cloud.php',
31
+    'ezcFeedContentElement'                      => 'Feed/structs/content.php',
32
+    'ezcFeedContentModule'                       => 'Feed/modules/content_module.php',
33
+    'ezcFeedCreativeCommonsModule'               => 'Feed/modules/creativecommons_module.php',
34
+    'ezcFeedDateElement'                         => 'Feed/structs/date.php',
35
+    'ezcFeedDublinCoreModule'                    => 'Feed/modules/dublincore_module.php',
36
+    'ezcFeedEnclosureElement'                    => 'Feed/structs/enclosure.php',
37
+    'ezcFeedEntryElement'                        => 'Feed/structs/entry.php',
38
+    'ezcFeedGeneratorElement'                    => 'Feed/structs/generator.php',
39
+    'ezcFeedGeoModule'                           => 'Feed/modules/geo_module.php',
40
+    'ezcFeedITunesModule'                        => 'Feed/modules/itunes_module.php',
41
+    'ezcFeedIdElement'                           => 'Feed/structs/id.php',
42
+    'ezcFeedImageElement'                        => 'Feed/structs/image.php',
43
+    'ezcFeedLinkElement'                         => 'Feed/structs/link.php',
44
+    'ezcFeedPersonElement'                       => 'Feed/structs/person.php',
45
+    'ezcFeedRss1'                                => 'Feed/processors/rss1.php',
46
+    'ezcFeedRss2'                                => 'Feed/processors/rss2.php',
47
+    'ezcFeedSkipDaysElement'                     => 'Feed/structs/skip_days.php',
48
+    'ezcFeedSkipHoursElement'                    => 'Feed/structs/skip_hours.php',
49
+    'ezcFeedSourceElement'                       => 'Feed/structs/source.php',
50
+    'ezcFeedTextInputElement'                    => 'Feed/structs/text_input.php',
51
+);
52
+?>
... ...
@@ -0,0 +1,15 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the File component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2007 eZ systems as. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.2
8
+ * @filesource
9
+ * @package File
10
+ */
11
+
12
+return array(
13
+    'ezcFile' => 'File/file.php',
14
+);
15
+?>
... ...
@@ -0,0 +1,130 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the Graph component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.5
8
+ * @filesource
9
+ * @package Graph
10
+ */
11
+
12
+return array(
13
+    'ezcGraphException'                             => 'Graph/exceptions/exception.php',
14
+    'ezcGraphDatasetAverageInvalidKeysException'    => 'Graph/exceptions/invalid_keys.php',
15
+    'ezcGraphErrorParsingDateException'             => 'Graph/exceptions/date_parsing.php',
16
+    'ezcGraphFlashBitmapTypeException'              => 'Graph/exceptions/flash_bitmap_type.php',
17
+    'ezcGraphFontRenderingException'                => 'Graph/exceptions/font_rendering.php',
18
+    'ezcGraphGdDriverUnsupportedImageTypeException' => 'Graph/exceptions/unsupported_image_type.php',
19
+    'ezcGraphInvalidArrayDataSourceException'       => 'Graph/exceptions/invalid_data_source.php',
20
+    'ezcGraphInvalidAssignementException'           => 'Graph/exceptions/invalid_assignement.php',
21
+    'ezcGraphInvalidDataException'                  => 'Graph/exceptions/invalid_data.php',
22
+    'ezcGraphInvalidDisplayTypeException'           => 'Graph/exceptions/invalid_display_type.php',
23
+    'ezcGraphInvalidImageFileException'             => 'Graph/exceptions/invalid_image_file.php',
24
+    'ezcGraphInvalidStepSizeException'              => 'Graph/exceptions/invalid_step_size.php',
25
+    'ezcGraphMatrixInvalidDimensionsException'      => 'Graph/exceptions/invalid_dimensions.php',
26
+    'ezcGraphMatrixOutOfBoundingsException'         => 'Graph/exceptions/out_of_boundings.php',
27
+    'ezcGraphNoDataException'                       => 'Graph/exceptions/no_data.php',
28
+    'ezcGraphNoSuchDataException'                   => 'Graph/exceptions/no_such_data.php',
29
+    'ezcGraphNoSuchDataSetException'                => 'Graph/exceptions/no_such_dataset.php',
30
+    'ezcGraphNoSuchElementException'                => 'Graph/exceptions/no_such_element.php',
31
+    'ezcGraphOutOfLogithmicalBoundingsException'    => 'Graph/exceptions/out_of_logarithmical_boundings.php',
32
+    'ezcGraphReducementFailedException'             => 'Graph/exceptions/reducement_failed.php',
33
+    'ezcGraphSvgDriverInvalidIdException'           => 'Graph/exceptions/invalid_id.php',
34
+    'ezcGraphTooManyDataSetsExceptions'             => 'Graph/exceptions/too_many_datasets.php',
35
+    'ezcGraphToolsIncompatibleDriverException'      => 'Graph/exceptions/incompatible_driver.php',
36
+    'ezcGraphToolsNotRenderedException'             => 'Graph/exceptions/not_rendered.php',
37
+    'ezcGraphUnknownColorDefinitionException'       => 'Graph/exceptions/unknown_color_definition.php',
38
+    'ezcGraphUnknownFontTypeException'              => 'Graph/exceptions/font_type.php',
39
+    'ezcGraphUnregularStepsException'               => 'Graph/exceptions/unregular_steps.php',
40
+    'ezcGraphChart'                                 => 'Graph/interfaces/chart.php',
41
+    'ezcGraphChartElement'                          => 'Graph/interfaces/element.php',
42
+    'ezcGraphChartOptions'                          => 'Graph/options/chart.php',
43
+    'ezcGraphLineChart'                             => 'Graph/charts/line.php',
44
+    'ezcGraphMatrix'                                => 'Graph/math/matrix.php',
45
+    'ezcGraphOdometerRenderer'                      => 'Graph/interfaces/odometer_renderer.php',
46
+    'ezcGraphRadarRenderer'                         => 'Graph/interfaces/radar_renderer.php',
47
+    'ezcGraphRenderer'                              => 'Graph/interfaces/renderer.php',
48
+    'ezcGraphStackedBarsRenderer'                   => 'Graph/interfaces/stacked_bar_renderer.php',
49
+    'ezcGraphAxisLabelRenderer'                     => 'Graph/interfaces/axis_label_renderer.php',
50
+    'ezcGraphBarChart'                              => 'Graph/charts/bar.php',
51
+    'ezcGraphChartDataContainer'                    => 'Graph/data_container/base.php',
52
+    'ezcGraphChartElementAxis'                      => 'Graph/element/axis.php',
53
+    'ezcGraphColor'                                 => 'Graph/colors/color.php',
54
+    'ezcGraphCoordinate'                            => 'Graph/structs/coordinate.php',
55
+    'ezcGraphDataSet'                               => 'Graph/datasets/base.php',
56
+    'ezcGraphDataSetProperty'                       => 'Graph/interfaces/dataset_property.php',
57
+    'ezcGraphDriver'                                => 'Graph/interfaces/driver.php',
58
+    'ezcGraphDriverOptions'                         => 'Graph/options/driver.php',
59
+    'ezcGraphHorizontalBarRenderer'                 => 'Graph/interfaces/horizontal_bar_renderer.php',
60
+    'ezcGraphPalette'                               => 'Graph/interfaces/palette.php',
61
+    'ezcGraphRenderer2d'                            => 'Graph/renderer/2d.php',
62
+    'ezcGraphRendererOptions'                       => 'Graph/options/renderer.php',
63
+    'ezcGraphTransformation'                        => 'Graph/math/transformation.php',
64
+    'ezcGraph'                                      => 'Graph/graph.php',
65
+    'ezcGraphArrayDataSet'                          => 'Graph/datasets/array.php',
66
+    'ezcGraphAxisBoxedLabelRenderer'                => 'Graph/renderer/axis_label_boxed.php',
67
+    'ezcGraphAxisCenteredLabelRenderer'             => 'Graph/renderer/axis_label_centered.php',
68
+    'ezcGraphAxisContainer'                         => 'Graph/axis/container.php',
69
+    'ezcGraphAxisExactLabelRenderer'                => 'Graph/renderer/axis_label_exact.php',
70
+    'ezcGraphAxisNoLabelRenderer'                   => 'Graph/renderer/axis_label_none.php',
71
+    'ezcGraphAxisRadarLabelRenderer'                => 'Graph/renderer/axis_label_radar.php',
72
+    'ezcGraphAxisRotatedBoxedLabelRenderer'         => 'Graph/renderer/axis_label_rotated_boxed.php',
73
+    'ezcGraphAxisRotatedLabelRenderer'              => 'Graph/renderer/axis_label_rotated.php',
74
+    'ezcGraphAxisStep'                              => 'Graph/structs/step.php',
75
+    'ezcGraphBoundings'                             => 'Graph/math/boundings.php',
76
+    'ezcGraphCairoDriver'                           => 'Graph/driver/cairo.php',
77
+    'ezcGraphCairoDriverOptions'                    => 'Graph/options/cairo_driver.php',
78
+    'ezcGraphCairoOODriver'                         => 'Graph/driver/cairo_oo.php',
79
+    'ezcGraphChartElementBackground'                => 'Graph/element/background.php',
80
+    'ezcGraphChartElementDateAxis'                  => 'Graph/axis/date.php',
81
+    'ezcGraphChartElementLabeledAxis'               => 'Graph/axis/labeled.php',
82
+    'ezcGraphChartElementLegend'                    => 'Graph/element/legend.php',
83
+    'ezcGraphChartElementLogarithmicalAxis'         => 'Graph/axis/logarithmic.php',
84
+    'ezcGraphChartElementNumericAxis'               => 'Graph/axis/numeric.php',
85
+    'ezcGraphChartElementText'                      => 'Graph/element/text.php',
86
+    'ezcGraphChartSingleDataContainer'              => 'Graph/data_container/single.php',
87
+    'ezcGraphContext'                               => 'Graph/structs/context.php',
88
+    'ezcGraphDataSetAveragePolynom'                 => 'Graph/datasets/average.php',
89
+    'ezcGraphDataSetAxisProperty'                   => 'Graph/datasets/property/axis.php',
90
+    'ezcGraphDataSetBooleanProperty'                => 'Graph/datasets/property/boolean.php',
91
+    'ezcGraphDataSetColorProperty'                  => 'Graph/datasets/property/color.php',
92
+    'ezcGraphDataSetIntProperty'                    => 'Graph/datasets/property/integer.php',
93
+    'ezcGraphDataSetStringProperty'                 => 'Graph/datasets/property/string.php',
94
+    'ezcGraphFlashDriver'                           => 'Graph/driver/flash.php',
95
+    'ezcGraphFlashDriverOptions'                    => 'Graph/options/flash_driver.php',
96
+    'ezcGraphFontOptions'                           => 'Graph/options/font.php',
97
+    'ezcGraphGdDriver'                              => 'Graph/driver/gd.php',
98
+    'ezcGraphGdDriverOptions'                       => 'Graph/options/gd_driver.php',
99
+    'ezcGraphHorizontalBarChart'                    => 'Graph/charts/horizontal_bar.php',
100
+    'ezcGraphHorizontalRenderer'                    => 'Graph/renderer/horizontal_bar.php',
101
+    'ezcGraphLineChartOptions'                      => 'Graph/options/line_chart.php',
102
+    'ezcGraphLinearGradient'                        => 'Graph/colors/linear_gradient.php',
103
+    'ezcGraphNumericDataSet'                        => 'Graph/datasets/numeric.php',
104
+    'ezcGraphOdometerChart'                         => 'Graph/charts/odometer.php',
105
+    'ezcGraphOdometerChartOptions'                  => 'Graph/options/odometer_chart.php',
106
+    'ezcGraphPaletteBlack'                          => 'Graph/palette/black.php',
107
+    'ezcGraphPaletteEz'                             => 'Graph/palette/ez.php',
108
+    'ezcGraphPaletteEzBlue'                         => 'Graph/palette/ez_blue.php',
109
+    'ezcGraphPaletteEzGreen'                        => 'Graph/palette/ez_green.php',
110
+    'ezcGraphPaletteEzRed'                          => 'Graph/palette/ez_red.php',
111
+    'ezcGraphPaletteTango'                          => 'Graph/palette/tango.php',
112
+    'ezcGraphPieChart'                              => 'Graph/charts/pie.php',
113
+    'ezcGraphPieChartOptions'                       => 'Graph/options/pie_chart.php',
114
+    'ezcGraphPolynom'                               => 'Graph/math/polynom.php',
115
+    'ezcGraphRadarChart'                            => 'Graph/charts/radar.php',
116
+    'ezcGraphRadarChartOptions'                     => 'Graph/options/radar_chart.php',
117
+    'ezcGraphRadialGradient'                        => 'Graph/colors/radial_gradient.php',
118
+    'ezcGraphRenderer2dOptions'                     => 'Graph/options/renderer_2d.php',
119
+    'ezcGraphRenderer3d'                            => 'Graph/renderer/3d.php',
120
+    'ezcGraphRenderer3dOptions'                     => 'Graph/options/renderer_3d.php',
121
+    'ezcGraphRotation'                              => 'Graph/math/rotation.php',
122
+    'ezcGraphSvgDriver'                             => 'Graph/driver/svg.php',
123
+    'ezcGraphSvgDriverOptions'                      => 'Graph/options/svg_driver.php',
124
+    'ezcGraphSvgFont'                               => 'Graph/driver/svg_font.php',
125
+    'ezcGraphTools'                                 => 'Graph/tools.php',
126
+    'ezcGraphTranslation'                           => 'Graph/math/translation.php',
127
+    'ezcGraphVector'                                => 'Graph/math/vector.php',
128
+    'ezcGraphVerboseDriver'                         => 'Graph/driver/verbose.php',
129
+);
130
+?>
... ...
@@ -0,0 +1,19 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the GraphDatabaseTiein component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2008 eZ systems as. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.0.1
8
+ * @filesource
9
+ * @package GraphDatabaseTiein
10
+ */
11
+
12
+return array(
13
+    'ezcGraphDatabaseException'                     => 'GraphDatabaseTiein/exceptions/exception.php',
14
+    'ezcGraphDatabaseMissingColumnException'        => 'GraphDatabaseTiein/exceptions/missing_column.php',
15
+    'ezcGraphDatabaseStatementNotExecutedException' => 'GraphDatabaseTiein/exceptions/statement_not_executed.php',
16
+    'ezcGraphDatabaseTooManyColumnsException'       => 'GraphDatabaseTiein/exceptions/too_many_columns.php',
17
+    'ezcGraphDatabaseDataSet'                       => 'GraphDatabaseTiein/dataset.php',
18
+);
19
+?>
... ...
@@ -0,0 +1,22 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the ImageAnalysis component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2008 eZ systems as. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.1.3
8
+ * @filesource
9
+ * @package ImageAnalysis
10
+ */
11
+
12
+return array(
13
+    'ezcImageAnalyzerException'                   => 'ImageAnalysis/exceptions/exception.php',
14
+    'ezcImageAnalyzerFileNotProcessableException' => 'ImageAnalysis/exceptions/file_not_processable.php',
15
+    'ezcImageAnalyzerInvalidHandlerException'     => 'ImageAnalysis/exceptions/invalid_handler.php',
16
+    'ezcImageAnalyzerHandler'                     => 'ImageAnalysis/interfaces/handler.php',
17
+    'ezcImageAnalyzer'                            => 'ImageAnalysis/analyzer.php',
18
+    'ezcImageAnalyzerData'                        => 'ImageAnalysis/structs/analyzer_data.php',
19
+    'ezcImageAnalyzerImagemagickHandler'          => 'ImageAnalysis/handlers/imagemagick.php',
20
+    'ezcImageAnalyzerPhpHandler'                  => 'ImageAnalysis/handlers/php.php',
21
+);
22
+?>
... ...
@@ -0,0 +1,45 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the ImageConversion component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.3.8
8
+ * @filesource
9
+ * @package ImageConversion
10
+ */
11
+
12
+return array(
13
+    'ezcImageException'                            => 'ImageConversion/exceptions/exception.php',
14
+    'ezcImageFileNameInvalidException'             => 'ImageConversion/exceptions/file_name_invalid.php',
15
+    'ezcImageFileNotProcessableException'          => 'ImageConversion/exceptions/file_not_processable.php',
16
+    'ezcImageFilterFailedException'                => 'ImageConversion/exceptions/filter_failed.php',
17
+    'ezcImageFilterNotAvailableException'          => 'ImageConversion/exceptions/filter_not_available.php',
18
+    'ezcImageHandlerNotAvailableException'         => 'ImageConversion/exceptions/handler_not_available.php',
19
+    'ezcImageHandlerSettingsInvalidException'      => 'ImageConversion/exceptions/handler_settings_invalid.php',
20
+    'ezcImageInvalidFilterParameterException'      => 'ImageConversion/exceptions/invalid_filter_parameter.php',
21
+    'ezcImageInvalidReferenceException'            => 'ImageConversion/exceptions/invalid_reference.php',
22
+    'ezcImageMimeTypeUnsupportedException'         => 'ImageConversion/exceptions/mime_type_unsupported.php',
23
+    'ezcImageMissingFilterParameterException'      => 'ImageConversion/exceptions/missing_filter_parameter.php',
24
+    'ezcImageTransformationAlreadyExistsException' => 'ImageConversion/exceptions/transformation_already_exists.php',
25
+    'ezcImageTransformationException'              => 'ImageConversion/exceptions/transformation.php',
26
+    'ezcImageTransformationNotAvailableException'  => 'ImageConversion/exceptions/transformation_not_available.php',
27
+    'ezcImageHandler'                              => 'ImageConversion/interfaces/handler.php',
28
+    'ezcImageMethodcallHandler'                    => 'ImageConversion/interfaces/methodcall_handler.php',
29
+    'ezcImageColorspaceFilters'                    => 'ImageConversion/interfaces/colorspace.php',
30
+    'ezcImageEffectFilters'                        => 'ImageConversion/interfaces/effect.php',
31
+    'ezcImageGdBaseHandler'                        => 'ImageConversion/handlers/gd_base.php',
32
+    'ezcImageGeometryFilters'                      => 'ImageConversion/interfaces/geometry.php',
33
+    'ezcImageImagemagickBaseHandler'               => 'ImageConversion/handlers/imagemagick_base.php',
34
+    'ezcImageThumbnailFilters'                     => 'ImageConversion/interfaces/thumbnail.php',
35
+    'ezcImageWatermarkFilters'                     => 'ImageConversion/interfaces/watermark.php',
36
+    'ezcImageConverter'                            => 'ImageConversion/converter.php',
37
+    'ezcImageConverterSettings'                    => 'ImageConversion/structs/converter_settings.php',
38
+    'ezcImageFilter'                               => 'ImageConversion/structs/filter.php',
39
+    'ezcImageGdHandler'                            => 'ImageConversion/handlers/gd.php',
40
+    'ezcImageHandlerSettings'                      => 'ImageConversion/structs/handler_settings.php',
41
+    'ezcImageImagemagickHandler'                   => 'ImageConversion/handlers/imagemagick.php',
42
+    'ezcImageSaveOptions'                          => 'ImageConversion/options/save_options.php',
43
+    'ezcImageTransformation'                       => 'ImageConversion/transformation.php',
44
+);
45
+?>
... ...
@@ -0,0 +1,25 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the UserInput component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2008 eZ systems as. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.4
8
+ * @filesource
9
+ * @package UserInput
10
+ */
11
+
12
+return array(
13
+    'ezcInputFormException'                   => 'UserInput/exceptions/exception.php',
14
+    'ezcInputFormFieldNotFoundException'      => 'UserInput/exceptions/field_not_found.php',
15
+    'ezcInputFormInvalidDefinitionException'  => 'UserInput/exceptions/invalid_definition.php',
16
+    'ezcInputFormNoValidDataException'        => 'UserInput/exceptions/no_valid_data.php',
17
+    'ezcInputFormUnknownFieldException'       => 'UserInput/exceptions/unknown_field.php',
18
+    'ezcInputFormValidDataAvailableException' => 'UserInput/exceptions/valid_data_available.php',
19
+    'ezcInputFormVariableMissingException'    => 'UserInput/exceptions/input_variable_missing.php',
20
+    'ezcInputFormWrongInputSourceException'   => 'UserInput/exceptions/wrong_input_source.php',
21
+    'ezcInputFilter'                          => 'UserInput/input_filter.php',
22
+    'ezcInputForm'                            => 'UserInput/input_form.php',
23
+    'ezcInputFormDefinitionElement'           => 'UserInput/structs/definition_element.php',
24
+);
25
+?>
... ...
@@ -0,0 +1,29 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the EventLog component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2009 eZ systems as. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.4
8
+ * @filesource
9
+ * @package EventLog
10
+ */
11
+
12
+return array(
13
+    'ezcLogWriterException'        => 'EventLog/exceptions/writer_exception.php',
14
+    'ezcLogWrongSeverityException' => 'EventLog/exceptions/wrong_severity.php',
15
+    'ezcLogWriter'                 => 'EventLog/interfaces/writer.php',
16
+    'ezcLogFileWriter'             => 'EventLog/writers/writer_file.php',
17
+    'ezcLogMapper'                 => 'EventLog/interfaces/mapper.php',
18
+    'ezcLog'                       => 'EventLog/log.php',
19
+    'ezcLogContext'                => 'EventLog/context.php',
20
+    'ezcLogEntry'                  => 'EventLog/structs/log_entry.php',
21
+    'ezcLogFilter'                 => 'EventLog/structs/log_filter.php',
22
+    'ezcLogFilterRule'             => 'EventLog/mapper/filter_rule.php',
23
+    'ezcLogFilterSet'              => 'EventLog/mapper/filterset.php',
24
+    'ezcLogMessage'                => 'EventLog/log_message.php',
25
+    'ezcLogStackWriter'            => 'EventLog/writers/writer_stack.php',
26
+    'ezcLogSyslogWriter'           => 'EventLog/writers/writer_syslog.php',
27
+    'ezcLogUnixFileWriter'         => 'EventLog/writers/writer_unix_file.php',
28
+);
29
+?>
... ...
@@ -0,0 +1,15 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the EventLogDatabaseTiein component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2007 eZ systems as. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.0.2
8
+ * @filesource
9
+ * @package EventLogDatabaseTiein
10
+ */
11
+
12
+return array(
13
+    'ezcLogDatabaseWriter' => 'EventLogDatabaseTiein/writers/writer_database.php',
14
+);
15
+?>
... ...
@@ -0,0 +1,82 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the Mail component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.7.1
8
+ * @filesource
9
+ * @package Mail
10
+ */
11
+
12
+return array(
13
+    'ezcMailException'                  => 'Mail/exceptions/mail_exception.php',
14
+    'ezcMailInvalidLimitException'      => 'Mail/exceptions/invalid_limit.php',
15
+    'ezcMailNoSuchMessageException'     => 'Mail/exceptions/no_such_message.php',
16
+    'ezcMailOffsetOutOfRangeException'  => 'Mail/exceptions/offset_out_of_range.php',
17
+    'ezcMailTransportException'         => 'Mail/exceptions/transport_exception.php',
18
+    'ezcMailTransportSmtpException'     => 'Mail/exceptions/transport_smtp_exception.php',
19
+    'ezcMailPart'                       => 'Mail/interfaces/part.php',
20
+    'ezcMailPartParser'                 => 'Mail/parser/interfaces/part_parser.php',
21
+    'ezcMailTransport'                  => 'Mail/interfaces/transport.php',
22
+    'ezcMail'                           => 'Mail/mail.php',
23
+    'ezcMailFilePart'                   => 'Mail/parts/file.php',
24
+    'ezcMailMtaTransport'               => 'Mail/transports/mta/mta_transport.php',
25
+    'ezcMailMultipart'                  => 'Mail/parts/multipart.php',
26
+    'ezcMailMultipartParser'            => 'Mail/parser/parts/multipart_parser.php',
27
+    'ezcMailParserSet'                  => 'Mail/parser/interfaces/parser_set.php',
28
+    'ezcMailSmtpTransport'              => 'Mail/transports/smtp/smtp_transport.php',
29
+    'ezcMailTransportOptions'           => 'Mail/options/transport_options.php',
30
+    'ezcMailAddress'                    => 'Mail/structs/mail_address.php',
31
+    'ezcMailCharsetConverter'           => 'Mail/internal/charset_convert.php',
32
+    'ezcMailComposer'                   => 'Mail/composer.php',
33
+    'ezcMailComposerOptions'            => 'Mail/options/composer_options.php',
34
+    'ezcMailContentDispositionHeader'   => 'Mail/structs/content_disposition_header.php',
35
+    'ezcMailDeliveryStatus'             => 'Mail/parts/delivery_status.php',
36
+    'ezcMailDeliveryStatusParser'       => 'Mail/parser/parts/delivery_status_parser.php',
37
+    'ezcMailFile'                       => 'Mail/parts/fileparts/disk_file.php',
38
+    'ezcMailFileParser'                 => 'Mail/parser/parts/file_parser.php',
39
+    'ezcMailFileSet'                    => 'Mail/transports/file/file_set.php',
40
+    'ezcMailHeaderFolder'               => 'Mail/internal/header_folder.php',
41
+    'ezcMailHeadersHolder'              => 'Mail/parser/headers_holder.php',
42
+    'ezcMailImapSet'                    => 'Mail/transports/imap/imap_set.php',
43
+    'ezcMailImapSetOptions'             => 'Mail/options/imap_set_options.php',
44
+    'ezcMailImapTransport'              => 'Mail/transports/imap/imap_transport.php',
45
+    'ezcMailImapTransportOptions'       => 'Mail/options/imap_options.php',
46
+    'ezcMailMboxSet'                    => 'Mail/transports/mbox/mbox_set.php',
47
+    'ezcMailMboxTransport'              => 'Mail/transports/mbox/mbox_transport.php',
48
+    'ezcMailMultipartAlternative'       => 'Mail/parts/multiparts/multipart_alternative.php',
49
+    'ezcMailMultipartAlternativeParser' => 'Mail/parser/parts/multipart_alternative_parser.php',
50
+    'ezcMailMultipartDigest'            => 'Mail/parts/multiparts/multipart_digest.php',
51
+    'ezcMailMultipartDigestParser'      => 'Mail/parser/parts/multipart_digest_parser.php',
52
+    'ezcMailMultipartMixed'             => 'Mail/parts/multiparts/multipart_mixed.php',
53
+    'ezcMailMultipartMixedParser'       => 'Mail/parser/parts/multipart_mixed_parser.php',
54
+    'ezcMailMultipartRelated'           => 'Mail/parts/multiparts/multipart_related.php',
55
+    'ezcMailMultipartRelatedParser'     => 'Mail/parser/parts/multipart_related_parser.php',
56
+    'ezcMailMultipartReport'            => 'Mail/parts/multiparts/multipart_report.php',
57
+    'ezcMailMultipartReportParser'      => 'Mail/parser/parts/multipart_report_parser.php',
58
+    'ezcMailOptions'                    => 'Mail/options/mail_options.php',
59
+    'ezcMailParser'                     => 'Mail/parser/parser.php',
60
+    'ezcMailParserOptions'              => 'Mail/options/parser_options.php',
61
+    'ezcMailParserShutdownHandler'      => 'Mail/parser/shutdown_handler.php',
62
+    'ezcMailPartWalkContext'            => 'Mail/structs/walk_context.php',
63
+    'ezcMailPop3Set'                    => 'Mail/transports/pop3/pop3_set.php',
64
+    'ezcMailPop3Transport'              => 'Mail/transports/pop3/pop3_transport.php',
65
+    'ezcMailPop3TransportOptions'       => 'Mail/options/pop3_options.php',
66
+    'ezcMailRfc2231Implementation'      => 'Mail/parser/rfc2231_implementation.php',
67
+    'ezcMailRfc822Digest'               => 'Mail/parts/rfc822_digest.php',
68
+    'ezcMailRfc822DigestParser'         => 'Mail/parser/parts/rfc822_digest_parser.php',
69
+    'ezcMailRfc822Parser'               => 'Mail/parser/parts/rfc822_parser.php',
70
+    'ezcMailSmtpTransportOptions'       => 'Mail/options/smtp_options.php',
71
+    'ezcMailStorageSet'                 => 'Mail/transports/storage/storage_set.php',
72
+    'ezcMailStreamFile'                 => 'Mail/parts/fileparts/stream_file.php',
73
+    'ezcMailText'                       => 'Mail/parts/text.php',
74
+    'ezcMailTextParser'                 => 'Mail/parser/parts/text_parser.php',
75
+    'ezcMailTools'                      => 'Mail/tools.php',
76
+    'ezcMailTransportConnection'        => 'Mail/transports/transport_connection.php',
77
+    'ezcMailTransportMta'               => 'Mail/transports/mta/transport_mta.php',
78
+    'ezcMailTransportSmtp'              => 'Mail/transports/smtp/transport_smtp.php',
79
+    'ezcMailVariableSet'                => 'Mail/transports/variable/var_set.php',
80
+    'ezcMailVirtualFile'                => 'Mail/parts/fileparts/virtual_file.php',
81
+);
82
+?>
... ...
@@ -0,0 +1,16 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the MvcAuthenticationTiein component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2009 eZ systems as. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.0
8
+ * @filesource
9
+ * @package MvcAuthenticationTiein
10
+ */
11
+
12
+return array(
13
+    'ezcMvcAuthenticationFilter'        => 'MvcAuthenticationTiein/filter.php',
14
+    'ezcMvcAuthenticationFilterOptions' => 'MvcAuthenticationTiein/options/filter-options.php',
15
+);
16
+?>
... ...
@@ -0,0 +1,72 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the MvcTools component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.1.3
8
+ * @filesource
9
+ * @package MvcTools
10
+ */
11
+
12
+return array(
13
+    'ezcMvcToolsException'                   => 'MvcTools/exceptions/exception.php',
14
+    'ezcMvcActionNotFoundException'          => 'MvcTools/exceptions/action_not_found.php',
15
+    'ezcMvcControllerException'              => 'MvcTools/exceptions/controller.php',
16
+    'ezcMvcFatalErrorLoopException'          => 'MvcTools/exceptions/fatal_error_loop.php',
17
+    'ezcMvcFilterHasNoOptionsException'      => 'MvcTools/exceptions/filter_has_no_options.php',
18
+    'ezcMvcInfiniteLoopException'            => 'MvcTools/exceptions/infinite_loop.php',
19
+    'ezcMvcInvalidConfiguration'             => 'MvcTools/exceptions/invalid_configuration.php',
20
+    'ezcMvcInvalidEncodingException'         => 'MvcTools/exceptions/invalid_encoding.php',
21
+    'ezcMvcMissingRouteArgumentException'    => 'MvcTools/exceptions/missing_route_argument.php',
22
+    'ezcMvcNamedRouteNotFoundException'      => 'MvcTools/exceptions/named_route_not_found.php',
23
+    'ezcMvcNamedRouteNotReversableException' => 'MvcTools/exceptions/named_route_not_reversable.php',
24
+    'ezcMvcNoRoutesException'                => 'MvcTools/exceptions/no_routes.php',
25
+    'ezcMvcNoZonesException'                 => 'MvcTools/exceptions/no_zones.php',
26
+    'ezcMvcRegexpRouteException'             => 'MvcTools/exceptions/regexp_route.php',
27
+    'ezcMvcRouteNotFoundException'           => 'MvcTools/exceptions/route_not_found.php',
28
+    'ezcMvcDispatcher'                       => 'MvcTools/interfaces/dispatcher.php',
29
+    'ezcMvcRequestParser'                    => 'MvcTools/interfaces/request_parser.php',
30
+    'ezcMvcResponseFilter'                   => 'MvcTools/interfaces/response_filter.php',
31
+    'ezcMvcResponseWriter'                   => 'MvcTools/interfaces/response_writer.php',
32
+    'ezcMvcResultStatusObject'               => 'MvcTools/interfaces/result_status_object.php',
33
+    'ezcMvcReversibleRoute'                  => 'MvcTools/interfaces/reversed_route.php',
34
+    'ezcMvcRoute'                            => 'MvcTools/interfaces/route.php',
35
+    'ezcMvcViewHandler'                      => 'MvcTools/interfaces/view_handler.php',
36
+    'ezcMvcCatchAllRoute'                    => 'MvcTools/routes/catchall.php',
37
+    'ezcMvcConfigurableDispatcher'           => 'MvcTools/dispatchers/configurable.php',
38
+    'ezcMvcController'                       => 'MvcTools/interfaces/controller.php',
39
+    'ezcMvcDispatcherConfiguration'          => 'MvcTools/interfaces/dispatcher_configuration.php',
40
+    'ezcMvcExternalRedirect'                 => 'MvcTools/result_types/external_redirect.php',
41
+    'ezcMvcFilterDefinition'                 => 'MvcTools/structs/filter_definition.php',
42
+    'ezcMvcGzDeflateResponseFilter'          => 'MvcTools/response_filters/gzdeflate.php',
43
+    'ezcMvcGzipResponseFilter'               => 'MvcTools/response_filters/gzip.php',
44
+    'ezcMvcHttpRawRequest'                   => 'MvcTools/structs/request_raw_http.php',
45
+    'ezcMvcHttpRequestParser'                => 'MvcTools/request_parsers/http.php',
46
+    'ezcMvcHttpResponseWriter'               => 'MvcTools/response_writers/http.php',
47
+    'ezcMvcInternalRedirect'                 => 'MvcTools/structs/internal_redirect.php',
48
+    'ezcMvcJsonViewHandler'                  => 'MvcTools/view_handlers/json.php',
49
+    'ezcMvcPhpViewHandler'                   => 'MvcTools/view_handlers/php.php',
50
+    'ezcMvcRailsRoute'                       => 'MvcTools/routes/rails.php',
51
+    'ezcMvcRecodeResponseFilter'             => 'MvcTools/response_filters/recode.php',
52
+    'ezcMvcRegexpRoute'                      => 'MvcTools/routes/regexp.php',
53
+    'ezcMvcRequest'                          => 'MvcTools/structs/request.php',
54
+    'ezcMvcRequestAccept'                    => 'MvcTools/structs/request_accept.php',
55
+    'ezcMvcRequestAuthentication'            => 'MvcTools/structs/request_authentication.php',
56
+    'ezcMvcRequestCookie'                    => 'MvcTools/structs/request_cookie.php',
57
+    'ezcMvcRequestFile'                      => 'MvcTools/structs/request_file.php',
58
+    'ezcMvcRequestFilter'                    => 'MvcTools/interfaces/request_filter.php',
59
+    'ezcMvcRequestUserAgent'                 => 'MvcTools/structs/request_user_agent.php',
60
+    'ezcMvcResponse'                         => 'MvcTools/structs/response.php',
61
+    'ezcMvcResult'                           => 'MvcTools/structs/result.php',
62
+    'ezcMvcResultCache'                      => 'MvcTools/structs/result_cache.php',
63
+    'ezcMvcResultContent'                    => 'MvcTools/structs/result_content.php',
64
+    'ezcMvcResultContentDisposition'         => 'MvcTools/structs/result_content_disposition.php',
65
+    'ezcMvcResultCookie'                     => 'MvcTools/structs/result_cookie.php',
66
+    'ezcMvcResultFilter'                     => 'MvcTools/interfaces/result_filter.php',
67
+    'ezcMvcResultUnauthorized'               => 'MvcTools/result_types/unauthorized.php',
68
+    'ezcMvcRouter'                           => 'MvcTools/router.php',
69
+    'ezcMvcRoutingInformation'               => 'MvcTools/structs/routing_information.php',
70
+    'ezcMvcView'                             => 'MvcTools/view.php',
71
+);
72
+?>
... ...
@@ -0,0 +1,15 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the MvcFeedTiein component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.0
8
+ * @filesource
9
+ * @package MvcFeedTiein
10
+ */
11
+
12
+return array(
13
+    'ezcMvcFeedViewHandler' => 'MvcFeedTiein/view_handlers/feed.php',
14
+);
15
+?>
... ...
@@ -0,0 +1,19 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the MvcMailTiein component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.0.1
8
+ * @filesource
9
+ * @package MvcMailTiein
10
+ */
11
+
12
+return array(
13
+    'ezcMvcMailTieinException'        => 'MvcMailTiein/exceptions/exception.php',
14
+    'ezcMvcMailNoDataException'       => 'MvcMailTiein/exceptions/no_data.php',
15
+    'ezcMvcMailBugzillaRequestFilter' => 'MvcMailTiein/request_filters/bugzilla.php',
16
+    'ezcMvcMailRawRequest'            => 'MvcMailTiein/structs/request_raw_mail.php',
17
+    'ezcMvcMailRequestParser'         => 'MvcMailTiein/request_parsers/mail.php',
18
+);
19
+?>
... ...
@@ -0,0 +1,15 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the MvcTemplateTiein component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2008 eZ systems as. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.0
8
+ * @filesource
9
+ * @package MvcTemplateTiein
10
+ */
11
+
12
+return array(
13
+    'ezcMvcTemplateViewHandler' => 'MvcTemplateTiein/viewhandlers/template.php',
14
+);
15
+?>
... ...
@@ -0,0 +1,80 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the PersistentObject component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.7.1
8
+ * @filesource
9
+ * @package PersistentObject
10
+ */
11
+
12
+return array(
13
+    'ezcPersistentObjectException'                             => 'PersistentObject/exceptions/persistent_object_exception.php',
14
+    'ezcPersistentQueryException'                              => 'PersistentObject/exceptions/query_exception.php',
15
+    'ezcPersistentDefinitionMissingIdPropertyException'        => 'PersistentObject/exceptions/definition_missing_id_property.php',
16
+    'ezcPersistentDefinitionNotFoundException'                 => 'PersistentObject/exceptions/definition_not_found.php',
17
+    'ezcPersistentIdentifierGenerationException'               => 'PersistentObject/exceptions/identifier_generation.php',
18
+    'ezcPersistentIdentityAlreadyExistsException'              => 'PersistentObject/exceptions/identity_already_exists.php',
19
+    'ezcPersistentIdentityMissingException'                    => 'PersistentObject/exceptions/identity_missing.php',
20
+    'ezcPersistentIdentityRelatedObjectAlreadyExistsException' => 'PersistentObject/exceptions/identity_related_object_already_exists.php',
21
+    'ezcPersistentIdentityRelatedObjectsInconsistentException' => 'PersistentObject/exceptions/identity_related_objects_inconsistent.php',
22
+    'ezcPersistentInvalidObjectStateException'                 => 'PersistentObject/exceptions/invalid_object_state.php',
23
+    'ezcPersistentObjectAlreadyPersistentException'            => 'PersistentObject/exceptions/already_persistent.php',
24
+    'ezcPersistentObjectNotFoundException'                     => 'PersistentObject/exceptions/object_not_found.php',
25
+    'ezcPersistentObjectNotPersistentException'                => 'PersistentObject/exceptions/not_persistent.php',
26
+    'ezcPersistentRelatedObjectNotFoundException'              => 'PersistentObject/exceptions/related_object_not_found.php',
27
+    'ezcPersistentRelationInvalidException'                    => 'PersistentObject/exceptions/relation_invalid.php',
28
+    'ezcPersistentRelationNotFoundException'                   => 'PersistentObject/exceptions/relation_not_found.php',
29
+    'ezcPersistentRelationOperationNotSupportedException'      => 'PersistentObject/exceptions/relation_operation_not_supported.php',
30
+    'ezcPersistentSessionNotFoundException'                    => 'PersistentObject/exceptions/session_not_found.php',
31
+    'ezcPersistentUndeterministicRelationException'            => 'PersistentObject/exceptions/undeterministic_relation.php',
32
+    'ezcPersistentDefinitionManager'                           => 'PersistentObject/interfaces/definition_manager.php',
33
+    'ezcPersistentFindIterator'                                => 'PersistentObject/find_iterator.php',
34
+    'ezcPersistentFindQuery'                                   => 'PersistentObject/queries/find_query.php',
35
+    'ezcPersistentIdentifierGenerator'                         => 'PersistentObject/interfaces/identifier_generator.php',
36
+    'ezcPersistentIdentityMap'                                 => 'PersistentObject/interfaces/identity_map.php',
37
+    'ezcPersistentPropertyConverter'                           => 'PersistentObject/interfaces/property_converter.php',
38
+    'ezcPersistentRelation'                                    => 'PersistentObject/interfaces/relation.php',
39
+    'ezcPersistentSessionFoundation'                           => 'PersistentObject/interfaces/persistent_session_foundation.php',
40
+    'ezcPersistentSessionHandler'                              => 'PersistentObject/interfaces/handler.php',
41
+    'ezcPersistentBasicIdentityMap'                            => 'PersistentObject/identity_maps/basic.php',
42
+    'ezcPersistentCacheManager'                                => 'PersistentObject/managers/cache_manager.php',
43
+    'ezcPersistentCodeManager'                                 => 'PersistentObject/managers/code_manager.php',
44
+    'ezcPersistentDeleteHandler'                               => 'PersistentObject/handlers/delete_handler.php',
45
+    'ezcPersistentDoubleTableMap'                              => 'PersistentObject/structs/double_table_map.php',
46
+    'ezcPersistentFindWithRelationsQuery'                      => 'PersistentObject/queries/find_with_relations_query.php',
47
+    'ezcPersistentGeneratorDefinition'                         => 'PersistentObject/structs/generator_definition.php',
48
+    'ezcPersistentIdentity'                                    => 'PersistentObject/structs/identity.php',
49
+    'ezcPersistentIdentityFindIterator'                        => 'PersistentObject/session_decorators/identity/find_iterator.php',
50
+    'ezcPersistentIdentityRelationObjectExtractor'             => 'PersistentObject/session_decorators/identity/relation_object_extractor.php',
51
+    'ezcPersistentIdentityRelationQueryCreator'                => 'PersistentObject/session_decorators/identity/relation_query_creator.php',
52
+    'ezcPersistentLoadHandler'                                 => 'PersistentObject/handlers/load_handler.php',
53
+    'ezcPersistentManualGenerator'                             => 'PersistentObject/generators/manual_generator.php',
54
+    'ezcPersistentManyToManyRelation'                          => 'PersistentObject/relations/many_to_many.php',
55
+    'ezcPersistentManyToOneRelation'                           => 'PersistentObject/relations/many_to_one.php',
56
+    'ezcPersistentMultiManager'                                => 'PersistentObject/managers/multi_manager.php',
57
+    'ezcPersistentNativeGenerator'                             => 'PersistentObject/generators/native_generator.php',
58
+    'ezcPersistentObject'                                      => 'PersistentObject/interfaces/persistent_object.php',
59
+    'ezcPersistentObjectColumns'                               => 'PersistentObject/object/persistent_object_columns.php',
60
+    'ezcPersistentObjectDefinition'                            => 'PersistentObject/object/persistent_object_definition.php',
61
+    'ezcPersistentObjectIdProperty'                            => 'PersistentObject/object/persistent_object_id_property.php',
62
+    'ezcPersistentObjectProperties'                            => 'PersistentObject/object/persistent_object_properties.php',
63
+    'ezcPersistentObjectProperty'                              => 'PersistentObject/object/persistent_object_property.php',
64
+    'ezcPersistentObjectRelations'                             => 'PersistentObject/object/persistent_object_relations.php',
65
+    'ezcPersistentOneToManyRelation'                           => 'PersistentObject/relations/one_to_many.php',
66
+    'ezcPersistentOneToOneRelation'                            => 'PersistentObject/relations/one_to_one.php',
67
+    'ezcPersistentPropertyDateTimeConverter'                   => 'PersistentObject/object/property_converters/date.php',
68
+    'ezcPersistentRelationCollection'                          => 'PersistentObject/object/relation_collection.php',
69
+    'ezcPersistentRelationFindDefinition'                      => 'PersistentObject/structs/relation_find_definition.php',
70
+    'ezcPersistentRelationFindQuery'                           => 'PersistentObject/queries/relation_find_query.php',
71
+    'ezcPersistentSaveHandler'                                 => 'PersistentObject/handlers/save_handler.php',
72
+    'ezcPersistentSequenceGenerator'                           => 'PersistentObject/generators/sequence_generator.php',
73
+    'ezcPersistentSession'                                     => 'PersistentObject/persistent_session.php',
74
+    'ezcPersistentSessionIdentityDecorator'                    => 'PersistentObject/session_decorators/identity.php',
75
+    'ezcPersistentSessionIdentityDecoratorOptions'             => 'PersistentObject/options/identity_session.php',
76
+    'ezcPersistentSessionInstance'                             => 'PersistentObject/persistent_session_instance.php',
77
+    'ezcPersistentSingleTableMap'                              => 'PersistentObject/structs/single_table_map.php',
78
+    'ezcPersistentStateTransformer'                            => 'PersistentObject/internal/state_transformer.php',
79
+);
80
+?>
... ...
@@ -0,0 +1,19 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the PersistentObjectDatabaseSchemaTiein component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2009 eZ systems as. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.3
8
+ * @filesource
9
+ * @package PersistentObjectDatabaseSchemaTiein
10
+ */
11
+
12
+return array(
13
+    'ezcPersistentObjectSchemaOverwriteException'    => 'PersistentObjectDatabaseSchemaTiein/exceptions/file_overwrite.php',
14
+    'ezcPersistentObjectSchemaGenerator'             => 'PersistentObjectDatabaseSchemaTiein/generator.php',
15
+    'ezcPersistentObjectSchemaTemplateFunctions'     => 'PersistentObjectDatabaseSchemaTiein/template_writer/template_functions.php',
16
+    'ezcPersistentObjectTemplateSchemaWriter'        => 'PersistentObjectDatabaseSchemaTiein/template_writer.php',
17
+    'ezcPersistentObjectTemplateSchemaWriterOptions' => 'PersistentObjectDatabaseSchemaTiein/options/template_writer_options.php',
18
+);
19
+?>
... ...
@@ -0,0 +1,19 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the PhpGenerator component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.0.6
8
+ * @filesource
9
+ * @package PhpGenerator
10
+ */
11
+
12
+return array(
13
+    'ezcPhpGeneratorException'     => 'PhpGenerator/exceptions/php_generator_exception.php',
14
+    'ezcPhpGeneratorFlowException' => 'PhpGenerator/exceptions/flow_exception.php',
15
+    'ezcPhpGenerator'              => 'PhpGenerator/php_generator.php',
16
+    'ezcPhpGeneratorParameter'     => 'PhpGenerator/structs/php_generator_parameter.php',
17
+    'ezcPhpGeneratorReturnData'    => 'PhpGenerator/structs/php_generator_return_data.php',
18
+);
19
+?>
... ...
@@ -0,0 +1,33 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the Database component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.4.7
8
+ * @filesource
9
+ * @package Database
10
+ */
11
+
12
+return array(
13
+    'ezcQueryException'              => 'Database/exceptions/query_exception.php',
14
+    'ezcQueryInvalidException'       => 'Database/exceptions/query/invalid.php',
15
+    'ezcQueryInvalidParameterException' => 'Database/exceptions/query/invalid_parameter.php',
16
+    'ezcQueryVariableParameterException' => 'Database/exceptions/query/variable_parameter.php',
17
+    'ezcQuery'                       => 'Database/sqlabstraction/query.php',
18
+    'ezcQueryExpression'             => 'Database/sqlabstraction/expression.php',
19
+    'ezcQuerySelect'                 => 'Database/sqlabstraction/query_select.php',
20
+    'ezcQueryDelete'                 => 'Database/sqlabstraction/query_delete.php',
21
+    'ezcQueryExpressionMssql'        => 'Database/sqlabstraction/implementations/expression_mssql.php',
22
+    'ezcQueryExpressionOracle'       => 'Database/sqlabstraction/implementations/expression_oracle.php',
23
+    'ezcQueryExpressionPgsql'        => 'Database/sqlabstraction/implementations/expression_pgsql.php',
24
+    'ezcQueryExpressionSqlite'       => 'Database/sqlabstraction/implementations/expression_sqlite.php',
25
+    'ezcQueryInsert'                 => 'Database/sqlabstraction/query_insert.php',
26
+    'ezcQuerySelectMssql'            => 'Database/sqlabstraction/implementations/query_select_mssql.php',
27
+    'ezcQuerySelectOracle'           => 'Database/sqlabstraction/implementations/query_select_oracle.php',
28
+    'ezcQuerySelectSqlite'           => 'Database/sqlabstraction/implementations/query_select_sqlite.php',
29
+    'ezcQuerySqliteFunctions'        => 'Database/sqlabstraction/implementations/query_sqlite_function_implementations.php',
30
+    'ezcQuerySubSelect'              => 'Database/sqlabstraction/query_subselect.php',
31
+    'ezcQueryUpdate'                 => 'Database/sqlabstraction/query_update.php',
32
+);
33
+?>
... ...
@@ -0,0 +1,53 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the Search component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.0.9
8
+ * @filesource
9
+ * @package Search
10
+ */
11
+
12
+return array(
13
+    'ezcSearchException'                         => 'Search/exceptions/exception.php',
14
+    'ezcSearchBuildQueryException'               => 'Search/exceptions/build_query.php',
15
+    'ezcSearchCanNotConnectException'            => 'Search/exceptions/can_not_connect.php',
16
+    'ezcSearchDefinitionInvalidException'        => 'Search/exceptions/definition_invalid.php',
17
+    'ezcSearchDefinitionNotFoundException'       => 'Search/exceptions/definition_not_found.php',
18
+    'ezcSearchDoesNotProvideDefinitionException' => 'Search/exceptions/does_not_provide_definition.php',
19
+    'ezcSearchFieldNotDefinedException'          => 'Search/exceptions/field_not_defined.php',
20
+    'ezcSearchIdNotFoundException'               => 'Search/exceptions/id_not_found.php',
21
+    'ezcSearchIncompleteStateException'          => 'Search/exceptions/incomplete_state.php',
22
+    'ezcSearchInvalidResultException'            => 'Search/exceptions/invalid_result.php',
23
+    'ezcSearchNetworkException'                  => 'Search/exceptions/network.php',
24
+    'ezcSearchQueryVariableParameterException'   => 'Search/exceptions/query_variable_parameter.php',
25
+    'ezcSearchTransactionException'              => 'Search/exceptions/transaction.php',
26
+    'ezcSearchQuery'                             => 'Search/interfaces/query.php',
27
+    'ezcSearchDefinitionManager'                 => 'Search/interfaces/definition_manager.php',
28
+    'ezcSearchDefinitionProvider'                => 'Search/interfaces/definition_provider.php',
29
+    'ezcSearchDeleteQuery'                       => 'Search/interfaces/query_delete.php',
30
+    'ezcSearchFindQuery'                         => 'Search/interfaces/query_find.php',
31
+    'ezcSearchHandler'                           => 'Search/interfaces/handler.php',
32
+    'ezcSearchIndexHandler'                      => 'Search/interfaces/index_handler.php',
33
+    'ezcSearchDefinitionDocumentField'           => 'Search/structs/document_field_definition.php',
34
+    'ezcSearchDeleteQuerySolr'                   => 'Search/abstraction/implementations/solr_delete.php',
35
+    'ezcSearchDeleteQueryZendLucene'             => 'Search/abstraction/implementations/zend_lucene_delete.php',
36
+    'ezcSearchDocumentDefinition'                => 'Search/document_definition.php',
37
+    'ezcSearchEmbeddedManager'                   => 'Search/managers/embedded_manager.php',
38
+    'ezcSearchQueryBuilder'                      => 'Search/query_builder.php',
39
+    'ezcSearchQuerySolr'                         => 'Search/abstraction/implementations/solr.php',
40
+    'ezcSearchQueryToken'                        => 'Search/structs/query_token.php',
41
+    'ezcSearchQueryTools'                        => 'Search/abstraction/query_tools.php',
42
+    'ezcSearchQueryZendLucene'                   => 'Search/abstraction/implementations/zend_lucene.php',
43
+    'ezcSearchResult'                            => 'Search/structs/search_result.php',
44
+    'ezcSearchResultDocument'                    => 'Search/structs/search_result_document.php',
45
+    'ezcSearchRstXmlExtractor'                   => 'Search/extractors/rstxml.php',
46
+    'ezcSearchSession'                           => 'Search/search_session.php',
47
+    'ezcSearchSimpleArticle'                     => 'Search/extractors/helpers/simple.php',
48
+    'ezcSearchSimpleImage'                       => 'Search/extractors/helpers/image.php',
49
+    'ezcSearchSolrHandler'                       => 'Search/handlers/solr.php',
50
+    'ezcSearchXmlManager'                        => 'Search/managers/xml_manager.php',
51
+    'ezcSearchZendLuceneHandler'                 => 'Search/handlers/zend_lucene.php',
52
+);
53
+?>
... ...
@@ -0,0 +1,20 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the SignalSlot component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2008 eZ systems as. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.1.1
8
+ * @filesource
9
+ * @package SignalSlot
10
+ */
11
+
12
+return array(
13
+    'ezcSignalSlotException'         => 'SignalSlot/exceptions/signalslot_exception.php',
14
+    'ezcSignalStaticConnectionsBase' => 'SignalSlot/interfaces/static_connections_base.php',
15
+    'ezcSignalCallbackComparer'      => 'SignalSlot/internal/callback_comparer.php',
16
+    'ezcSignalCollection'            => 'SignalSlot/signal_collection.php',
17
+    'ezcSignalCollectionOptions'     => 'SignalSlot/options/options.php',
18
+    'ezcSignalStaticConnections'     => 'SignalSlot/static_connections.php',
19
+);
20
+?>
... ...
@@ -0,0 +1,23 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the SystemInformation component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.0.8
8
+ * @filesource
9
+ * @package SystemInformation
10
+ */
11
+
12
+return array(
13
+    'ezcSystemInfoException'                 => 'SystemInformation/exceptions/exception.php',
14
+    'ezcSystemInfoReaderCantScanOSException' => 'SystemInformation/exceptions/reader_cant_scan_os.php',
15
+    'ezcSystemInfoReader'                    => 'SystemInformation/interfaces/reader.php',
16
+    'ezcSystemInfo'                          => 'SystemInformation/info.php',
17
+    'ezcSystemInfoAccelerator'               => 'SystemInformation/structs/accelerator.php',
18
+    'ezcSystemInfoFreeBsdReader'             => 'SystemInformation/readers/freebsd.php',
19
+    'ezcSystemInfoLinuxReader'               => 'SystemInformation/readers/linux.php',
20
+    'ezcSystemInfoMacReader'                 => 'SystemInformation/readers/mac.php',
21
+    'ezcSystemInfoWindowsReader'             => 'SystemInformation/readers/windows.php',
22
+);
23
+?>
... ...
@@ -0,0 +1,299 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the Template component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.4.2
8
+ * @filesource
9
+ * @package Template
10
+ */
11
+
12
+return array(
13
+    'ezcTemplateException'                               => 'Template/exceptions/template_exception.php',
14
+    'ezcTemplateCompilationFailedException'              => 'Template/exceptions/compilation_failed_exception.php',
15
+    'ezcTemplateCustomBlockException'                    => 'Template/exceptions/custom_block_exception.php',
16
+    'ezcTemplateFileFailedRenameException'               => 'Template/exceptions/file_failed_rename_exception.php',
17
+    'ezcTemplateFileFailedUnlinkException'               => 'Template/exceptions/file_failed_unlink_exception.php',
18
+    'ezcTemplateFileNotFoundException'                   => 'Template/exceptions/file_not_found_exception.php',
19
+    'ezcTemplateFileNotReadableException'                => 'Template/exceptions/file_not_readable_exception.php',
20
+    'ezcTemplateFileNotWriteableException'               => 'Template/exceptions/file_not_writeable_exception.php',
21
+    'ezcTemplateInternalException'                       => 'Template/exceptions/internal_exception.php',
22
+    'ezcTemplateInvalidCompiledFileException'            => 'Template/exceptions/invalid_compiled_file_exception.php',
23
+    'ezcTemplateNoManagerException'                      => 'Template/exceptions/no_manager_exception.php',
24
+    'ezcTemplateNoOutputContextException'                => 'Template/exceptions/no_output_context_exception.php',
25
+    'ezcTemplateOutdatedCompilationException'            => 'Template/exceptions/outdated_compilation_exception.php',
26
+    'ezcTemplateParserException'                         => 'Template/exceptions/parser_exception.php',
27
+    'ezcTemplateRuntimeException'                        => 'Template/exceptions/runtime_exception.php',
28
+    'ezcTemplateSourceToTstParserException'              => 'Template/exceptions/source_to_tst_parser_exception.php',
29
+    'ezcTemplateTstNodeException'                        => 'Template/exceptions/tst_node_exception.php',
30
+    'ezcTemplateTypeHintException'                       => 'Template/exceptions/typehint_exception.php',
31
+    'ezcTemplateAstNode'                                 => 'Template/syntax_trees/ast/interfaces/ast_node.php',
32
+    'ezcTemplateParameterizedAstNode'                    => 'Template/syntax_trees/ast/interfaces/parameterized_ast.php',
33
+    'ezcTemplateTstNode'                                 => 'Template/syntax_trees/tst/interfaces/tst_node.php',
34
+    'ezcTemplateExpressionTstNode'                       => 'Template/syntax_trees/tst/interfaces/expression_tst.php',
35
+    'ezcTemplateOperatorAstNode'                         => 'Template/syntax_trees/ast/interfaces/operator_ast.php',
36
+    'ezcTemplateAstNodeVisitor'                          => 'Template/syntax_trees/ast/interfaces/ast_visitor.php',
37
+    'ezcTemplateBinaryOperatorAstNode'                   => 'Template/syntax_trees/ast/interfaces/binary_operator.php',
38
+    'ezcTemplateCodeTstNode'                             => 'Template/syntax_trees/tst/interfaces/code_tst.php',
39
+    'ezcTemplateOperatorTstNode'                         => 'Template/syntax_trees/tst/interfaces/operator_tst.php',
40
+    'ezcTemplateSourceToTstParser'                       => 'Template/parsers/source_to_tst/interfaces/source_to_tst_parser.php',
41
+    'ezcTemplateStatementAstNode'                        => 'Template/syntax_trees/ast/interfaces/statement_ast.php',
42
+    'ezcTemplateTstNodeVisitor'                          => 'Template/syntax_trees/tst/interfaces/tst_visitor.php',
43
+    'ezcTemplateAssignmentOperatorAstNode'               => 'Template/syntax_trees/ast/nodes/operators/assignment_operator.php',
44
+    'ezcTemplateAstToPhpGenerator'                       => 'Template/parsers/ast_to_php/implementations/php_generator.php',
45
+    'ezcTemplateAstWalker'                               => 'Template/parsers/ast_to_ast/implementations/ast_walker.php',
46
+    'ezcTemplateBlockTstNode'                            => 'Template/syntax_trees/tst/nodes/block.php',
47
+    'ezcTemplateBodyAstNode'                             => 'Template/syntax_trees/ast/nodes/body.php',
48
+    'ezcTemplateCaseAstNode'                             => 'Template/syntax_trees/ast/nodes/control/case.php',
49
+    'ezcTemplateCustomExtension'                         => 'Template/structs/custom_extension.php',
50
+    'ezcTemplateFunctions'                               => 'Template/functions/functions.php',
51
+    'ezcTemplateLiteralSourceToTstParser'                => 'Template/parsers/source_to_tst/implementations/literal.php',
52
+    'ezcTemplateLocation'                                => 'Template/interfaces/location.php',
53
+    'ezcTemplateModifyingOperatorTstNode'                => 'Template/syntax_trees/tst/interfaces/modifying_operator_tst.php',
54
+    'ezcTemplateOutputContext'                           => 'Template/interfaces/output_context.php',
55
+    'ezcTemplateTextTstNode'                             => 'Template/syntax_trees/tst/interfaces/text_tst.php',
56
+    'ezcTemplateTreeOutput'                              => 'Template/parsers/interfaces/tree_output.php',
57
+    'ezcTemplateTstToAstTransformer'                     => 'Template/parsers/tst_to_ast/implementations/tst_to_ast_transformer.php',
58
+    'ezcTemplateTstWalker'                               => 'Template/parsers/tst_to_tst/implementations/tst_walker.php',
59
+    'ezcTemplate'                                        => 'Template/template.php',
60
+    'ezcTemplateAdditionAssignmentOperatorAstNode'       => 'Template/syntax_trees/ast/nodes/operators/addition_assignment_operator.php',
61
+    'ezcTemplateAdditionOperatorAstNode'                 => 'Template/syntax_trees/ast/nodes/operators/addition_operator.php',
62
+    'ezcTemplateArithmeticNegationOperatorAstNode'       => 'Template/syntax_trees/ast/nodes/operators/arithmetic_negation_operator.php',
63
+    'ezcTemplateArray'                                   => 'Template/functions/array_code.php',
64
+    'ezcTemplateArrayAppendOperatorAstNode'              => 'Template/syntax_trees/ast/nodes/operators/array_append_assignment_operator.php',
65
+    'ezcTemplateArrayAppendOperatorTstNode'              => 'Template/syntax_trees/tst/nodes/array_append_operator.php',
66
+    'ezcTemplateArrayFetchOperatorAstNode'               => 'Template/syntax_trees/ast/nodes/operators/array_fetch_operator.php',
67
+    'ezcTemplateArrayFetchOperatorTstNode'               => 'Template/syntax_trees/tst/nodes/array_fetch_operator.php',
68
+    'ezcTemplateArrayFetchSourceToTstParser'             => 'Template/parsers/source_to_tst/implementations/array_fetch.php',
69
+    'ezcTemplateArrayFunctions'                          => 'Template/functions/array_functions.php',
70
+    'ezcTemplateArrayRangeOperatorTstNode'               => 'Template/syntax_trees/tst/nodes/array_range_operator.php',
71
+    'ezcTemplateArraySourceToTstParser'                  => 'Template/parsers/source_to_tst/implementations/array.php',
72
+    'ezcTemplateAssignmentOperatorTstNode'               => 'Template/syntax_trees/tst/nodes/assignment_operator.php',
73
+    'ezcTemplateAstBuilder'                              => 'Template/syntax_trees/ast/ast_builder.php',
74
+    'ezcTemplateAstToAstAssignmentOptimizer'             => 'Template/parsers/ast_to_ast/implementations/assignment_optimizer.php',
75
+    'ezcTemplateAstToAstContextAppender'                 => 'Template/parsers/ast_to_ast/implementations/context_appender.php',
76
+    'ezcTemplateAstToPhpStringGenerator'                 => 'Template/parsers/ast_to_php/implementations/php_string_generator.php',
77
+    'ezcTemplateAstTreeOutput'                           => 'Template/parsers/ast/implementations/ast_tree_output.php',
78
+    'ezcTemplateAutoloaderDefinition'                    => 'Template/structs/autoloader_definition.php',
79
+    'ezcTemplateBitwiseAndAssignmentOperatorAstNode'     => 'Template/syntax_trees/ast/nodes/operators/bitwise_and_assignment_operator.php',
80
+    'ezcTemplateBitwiseAndOperatorAstNode'               => 'Template/syntax_trees/ast/nodes/operators/bitwise_and_operator.php',
81
+    'ezcTemplateBitwiseNegationOperatorAstNode'          => 'Template/syntax_trees/ast/nodes/operators/bitwise_negation_operator.php',
82
+    'ezcTemplateBitwiseOrAssignmentOperatorAstNode'      => 'Template/syntax_trees/ast/nodes/operators/bitwise_or_assignment_operator.php',
83
+    'ezcTemplateBitwiseOrOperatorAstNode'                => 'Template/syntax_trees/ast/nodes/operators/bitwise_or_operator.php',
84
+    'ezcTemplateBitwiseXorAssignmentOperatorAstNode'     => 'Template/syntax_trees/ast/nodes/operators/bitwise_xor_assignment_operator.php',
85
+    'ezcTemplateBitwiseXorOperatorAstNode'               => 'Template/syntax_trees/ast/nodes/operators/bitwise_xor_operator.php',
86
+    'ezcTemplateBlockCommentAstNode'                     => 'Template/syntax_trees/ast/nodes/block_comment.php',
87
+    'ezcTemplateBlockCommentSourceToTstParser'           => 'Template/parsers/source_to_tst/implementations/block_comment.php',
88
+    'ezcTemplateBlockCommentTstNode'                     => 'Template/syntax_trees/tst/nodes/block_comment.php',
89
+    'ezcTemplateBlockSourceToTstParser'                  => 'Template/parsers/source_to_tst/implementations/block.php',
90
+    'ezcTemplateBoolSourceToTstParser'                   => 'Template/parsers/source_to_tst/implementations/bool.php',
91
+    'ezcTemplateBreakAstNode'                            => 'Template/syntax_trees/ast/nodes/control/break.php',
92
+    'ezcTemplateCacheBlockAstNode'                       => 'Template/syntax_trees/ast/nodes/cache_block.php',
93
+    'ezcTemplateCacheBlockTstNode'                       => 'Template/syntax_trees/tst/nodes/cache_block.php',
94
+    'ezcTemplateCacheManager'                            => 'Template/interfaces/cache_manager.php',
95
+    'ezcTemplateCacheSourceToTstParser'                  => 'Template/parsers/source_to_tst/implementations/cache.php',
96
+    'ezcTemplateCacheTstNode'                            => 'Template/syntax_trees/tst/nodes/cache.php',
97
+    'ezcTemplateCaptureSourceToTstParser'                => 'Template/parsers/source_to_tst/implementations/capture.php',
98
+    'ezcTemplateCaptureTstNode'                          => 'Template/syntax_trees/tst/nodes/capture.php',
99
+    'ezcTemplateCaseTstNode'                             => 'Template/syntax_trees/tst/nodes/case.php',
100
+    'ezcTemplateCatchAstNode'                            => 'Template/syntax_trees/ast/nodes/control/catch.php',
101
+    'ezcTemplateCharsetSourceToTstParser'                => 'Template/parsers/source_to_tst/implementations/charset.php',
102
+    'ezcTemplateCharsetTstNode'                          => 'Template/syntax_trees/tst/nodes/charset.php',
103
+    'ezcTemplateCloneAstNode'                            => 'Template/syntax_trees/ast/nodes/constructs/clone.php',
104
+    'ezcTemplateCompiledCode'                            => 'Template/compiled_code.php',
105
+    'ezcTemplateConcatAssignmentOperatorAstNode'         => 'Template/syntax_trees/ast/nodes/operators/concat_assignment_operator.php',
106
+    'ezcTemplateConcatAssignmentOperatorTstNode'         => 'Template/syntax_trees/tst/nodes/concat_assignment_operator.php',
107
+    'ezcTemplateConcatOperatorAstNode'                   => 'Template/syntax_trees/ast/nodes/operators/concat_operator.php',
108
+    'ezcTemplateConcatOperatorTstNode'                   => 'Template/syntax_trees/tst/nodes/concat_operator.php',
109
+    'ezcTemplateConditionBodyAstNode'                    => 'Template/syntax_trees/ast/nodes/condition_body.php',
110
+    'ezcTemplateConditionBodyTstNode'                    => 'Template/syntax_trees/tst/nodes/condition_body.php',
111
+    'ezcTemplateConfiguration'                           => 'Template/configuration.php',
112
+    'ezcTemplateConstantAstNode'                         => 'Template/syntax_trees/ast/nodes/constant.php',
113
+    'ezcTemplateContinueAstNode'                         => 'Template/syntax_trees/ast/nodes/control/continue.php',
114
+    'ezcTemplateControlStructureSourceToTstParser'       => 'Template/parsers/source_to_tst/implementations/control_structure.php',
115
+    'ezcTemplateCurlyBracesAstNode'                      => 'Template/syntax_trees/ast/nodes/curly_braces.php',
116
+    'ezcTemplateCursor'                                  => 'Template/cursor.php',
117
+    'ezcTemplateCustomBlock'                             => 'Template/interfaces/custom_block.php',
118
+    'ezcTemplateCustomBlockDefinition'                   => 'Template/structs/custom_block_definition.php',
119
+    'ezcTemplateCustomBlockSourceToTstParser'            => 'Template/parsers/source_to_tst/implementations/custom_block.php',
120
+    'ezcTemplateCustomBlockTstNode'                      => 'Template/syntax_trees/tst/nodes/custom_block.php',
121
+    'ezcTemplateCustomFunction'                          => 'Template/interfaces/custom_function.php',
122
+    'ezcTemplateCustomFunctionDefinition'                => 'Template/structs/custom_function_definition.php',
123
+    'ezcTemplateCycle'                                   => 'Template/cycle.php',
124
+    'ezcTemplateCycleControlTstNode'                     => 'Template/syntax_trees/tst/nodes/cycle_control.php',
125
+    'ezcTemplateCycleSourceToTstParser'                  => 'Template/parsers/source_to_tst/implementations/cycle.php',
126
+    'ezcTemplateDate'                                    => 'Template/functions/date_code.php',
127
+    'ezcTemplateDateFunctions'                           => 'Template/functions/date_functions.php',
128
+    'ezcTemplateDebug'                                   => 'Template/functions/debug_code.php',
129
+    'ezcTemplateDebugFunctions'                          => 'Template/functions/debug_functions.php',
130
+    'ezcTemplateDeclarationBlockSourceToTstParser'       => 'Template/parsers/source_to_tst/implementations/declaration.php',
131
+    'ezcTemplateDeclarationTstNode'                      => 'Template/syntax_trees/tst/nodes/declaration.php',
132
+    'ezcTemplateDecrementOperatorAstNode'                => 'Template/syntax_trees/ast/nodes/operators/decrement_operator.php',
133
+    'ezcTemplateDefaultAstNode'                          => 'Template/syntax_trees/ast/nodes/control/default.php',
134
+    'ezcTemplateDelimiterSourceToTstParser'              => 'Template/parsers/source_to_tst/implementations/delimiter.php',
135
+    'ezcTemplateDelimiterTstNode'                        => 'Template/syntax_trees/tst/nodes/delimiter.php',
136
+    'ezcTemplateDivisionAssignmentOperatorAstNode'       => 'Template/syntax_trees/ast/nodes/operators/division_assignment_operator.php',
137
+    'ezcTemplateDivisionAssignmentOperatorTstNode'       => 'Template/syntax_trees/tst/nodes/division_assignment_operator.php',
138
+    'ezcTemplateDivisionOperatorAstNode'                 => 'Template/syntax_trees/ast/nodes/operators/division_operator.php',
139
+    'ezcTemplateDivisionOperatorTstNode'                 => 'Template/syntax_trees/tst/nodes/division_operator.php',
140
+    'ezcTemplateDoWhileAstNode'                          => 'Template/syntax_trees/ast/nodes/control/do_while.php',
141
+    'ezcTemplateDocCommentSourceToTstParser'             => 'Template/parsers/source_to_tst/implementations/doc_comment.php',
142
+    'ezcTemplateDocCommentTstNode'                       => 'Template/syntax_trees/tst/nodes/doc_comment.php',
143
+    'ezcTemplateDynamicBlockAstNode'                     => 'Template/syntax_trees/ast/nodes/dynamic_block.php',
144
+    'ezcTemplateDynamicBlockTstNode'                     => 'Template/syntax_trees/tst/nodes/dynamic_block.php',
145
+    'ezcTemplateDynamicStringAstNode'                    => 'Template/syntax_trees/ast/nodes/dynamic_string.php',
146
+    'ezcTemplateDynamicVariableAstNode'                  => 'Template/syntax_trees/ast/nodes/dynamic_variable.php',
147
+    'ezcTemplateEchoAstNode'                             => 'Template/syntax_trees/ast/nodes/constructs/echo.php',
148
+    'ezcTemplateEmptyAstNode'                            => 'Template/syntax_trees/ast/nodes/constructs/empty.php',
149
+    'ezcTemplateEmptyBlockTstNode'                       => 'Template/syntax_trees/tst/nodes/empty_block.php',
150
+    'ezcTemplateEolCommentAstNode'                       => 'Template/syntax_trees/ast/nodes/eol_comment.php',
151
+    'ezcTemplateEolCommentSourceToTstParser'             => 'Template/parsers/source_to_tst/implementations/eol_comment.php',
152
+    'ezcTemplateEolCommentTstNode'                       => 'Template/syntax_trees/tst/nodes/eol_comment.php',
153
+    'ezcTemplateEqualOperatorAstNode'                    => 'Template/syntax_trees/ast/nodes/operators/equal_operator.php',
154
+    'ezcTemplateEqualOperatorTstNode'                    => 'Template/syntax_trees/tst/nodes/equal_operator.php',
155
+    'ezcTemplateExpressionBlockSourceToTstParser'        => 'Template/parsers/source_to_tst/implementations/expression_block.php',
156
+    'ezcTemplateExpressionSourceToTstParser'             => 'Template/parsers/source_to_tst/implementations/expression.php',
157
+    'ezcTemplateFetchCacheInformation'                   => 'Template/parsers/tst_to_tst/implementations/cache_information.php',
158
+    'ezcTemplateFloatSourceToTstParser'                  => 'Template/parsers/source_to_tst/implementations/float.php',
159
+    'ezcTemplateForAstNode'                              => 'Template/syntax_trees/ast/nodes/control/for.php',
160
+    'ezcTemplateForeachAstNode'                          => 'Template/syntax_trees/ast/nodes/control/foreach.php',
161
+    'ezcTemplateForeachLoopSourceToTstParser'            => 'Template/parsers/source_to_tst/implementations/foreach_loop.php',
162
+    'ezcTemplateForeachLoopTstNode'                      => 'Template/syntax_trees/tst/nodes/foreach_loop.php',
163
+    'ezcTemplateFunctionCallAstNode'                     => 'Template/syntax_trees/ast/nodes/function_call.php',
164
+    'ezcTemplateFunctionCallSourceToTstParser'           => 'Template/parsers/source_to_tst/implementations/function_call.php',
165
+    'ezcTemplateFunctionCallTstNode'                     => 'Template/syntax_trees/tst/nodes/function_call.php',
166
+    'ezcTemplateGenericStatementAstNode'                 => 'Template/syntax_trees/ast/nodes/generic_statement.php',
167
+    'ezcTemplateGreaterEqualOperatorAstNode'             => 'Template/syntax_trees/ast/nodes/operators/greater_equal_operator.php',
168
+    'ezcTemplateGreaterEqualOperatorTstNode'             => 'Template/syntax_trees/tst/nodes/greater_equal_operator.php',
169
+    'ezcTemplateGreaterThanOperatorAstNode'              => 'Template/syntax_trees/ast/nodes/operators/greater_than_operator.php',
170
+    'ezcTemplateGreaterThanOperatorTstNode'              => 'Template/syntax_trees/tst/nodes/greater_than_operator.php',
171
+    'ezcTemplateIdenticalOperatorAstNode'                => 'Template/syntax_trees/ast/nodes/operators/identical_operator.php',
172
+    'ezcTemplateIdenticalOperatorTstNode'                => 'Template/syntax_trees/tst/nodes/identical_operator.php',
173
+    'ezcTemplateIdentifierAstNode'                       => 'Template/syntax_trees/ast/nodes/identifier.php',
174
+    'ezcTemplateIdentifierSourceToTstParser'             => 'Template/parsers/source_to_tst/implementations/identifier.php',
175
+    'ezcTemplateIdentifierTstNode'                       => 'Template/syntax_trees/tst/nodes/identifier.php',
176
+    'ezcTemplateIfAstNode'                               => 'Template/syntax_trees/ast/nodes/control/if.php',
177
+    'ezcTemplateIfConditionSourceToTstParser'            => 'Template/parsers/source_to_tst/implementations/if_condition.php',
178
+    'ezcTemplateIfConditionTstNode'                      => 'Template/syntax_trees/tst/nodes/if_condition.php',
179
+    'ezcTemplateIncludeAstNode'                          => 'Template/syntax_trees/ast/nodes/control/include.php',
180
+    'ezcTemplateIncludeOnceAstNode'                      => 'Template/syntax_trees/ast/nodes/control/include_once.php',
181
+    'ezcTemplateIncludeSourceToTstParser'                => 'Template/parsers/source_to_tst/implementations/include.php',
182
+    'ezcTemplateIncludeTstNode'                          => 'Template/syntax_trees/tst/nodes/include.php',
183
+    'ezcTemplateIncrementOperatorAstNode'                => 'Template/syntax_trees/ast/nodes/operators/increment_operator.php',
184
+    'ezcTemplateInstanceofOperatorAstNode'               => 'Template/syntax_trees/ast/nodes/operators/instanceof_operator.php',
185
+    'ezcTemplateIntegerSourceToTstParser'                => 'Template/parsers/source_to_tst/implementations/integer.php',
186
+    'ezcTemplateIssetAstNode'                            => 'Template/syntax_trees/ast/nodes/constructs/isset.php',
187
+    'ezcTemplateLessEqualOperatorAstNode'                => 'Template/syntax_trees/ast/nodes/operators/less_equal_operator.php',
188
+    'ezcTemplateLessEqualOperatorTstNode'                => 'Template/syntax_trees/tst/nodes/less_equal_operator.php',
189
+    'ezcTemplateLessThanOperatorAstNode'                 => 'Template/syntax_trees/ast/nodes/operators/less_than_operator.php',
190
+    'ezcTemplateLessThanOperatorTstNode'                 => 'Template/syntax_trees/tst/nodes/less_than_operator.php',
191
+    'ezcTemplateLiteralArrayAstNode'                     => 'Template/syntax_trees/ast/nodes/literalarray.php',
192
+    'ezcTemplateLiteralArrayTstNode'                     => 'Template/syntax_trees/tst/nodes/literalarray.php',
193
+    'ezcTemplateLiteralAstNode'                          => 'Template/syntax_trees/ast/nodes/literal.php',
194
+    'ezcTemplateLiteralBlockSourceToTstParser'           => 'Template/parsers/source_to_tst/implementations/literal_block.php',
195
+    'ezcTemplateLiteralBlockTstNode'                     => 'Template/syntax_trees/tst/nodes/literal_block.php',
196
+    'ezcTemplateLiteralTstNode'                          => 'Template/syntax_trees/tst/nodes/literal.php',
197
+    'ezcTemplateLocationInterface'                       => 'Template/interfaces/location_interface.php',
198
+    'ezcTemplateLocator'                                 => 'Template/interfaces/locator.php',
199
+    'ezcTemplateLogicalAndOperatorAstNode'               => 'Template/syntax_trees/ast/nodes/operators/logical_and_operator.php',
200
+    'ezcTemplateLogicalAndOperatorTstNode'               => 'Template/syntax_trees/tst/nodes/logical_and_operator.php',
201
+    'ezcTemplateLogicalLiteralAndOperatorAstNode'        => 'Template/syntax_trees/ast/nodes/operators/logical_literal_and_operator.php',
202
+    'ezcTemplateLogicalLiteralOrOperatorAstNode'         => 'Template/syntax_trees/ast/nodes/operators/logical_literal_or_operator.php',
203
+    'ezcTemplateLogicalLiteralXorOperatorAstNode'        => 'Template/syntax_trees/ast/nodes/operators/logical_literal_xor_operator.php',
204
+    'ezcTemplateLogicalNegateOperatorTstNode'            => 'Template/syntax_trees/tst/nodes/logical_negate_operator.php',
205
+    'ezcTemplateLogicalNegationOperatorAstNode'          => 'Template/syntax_trees/ast/nodes/operators/logical_negation_operator.php',
206
+    'ezcTemplateLogicalOrOperatorAstNode'                => 'Template/syntax_trees/ast/nodes/operators/logical_or_operator.php',
207
+    'ezcTemplateLogicalOrOperatorTstNode'                => 'Template/syntax_trees/tst/nodes/logical_or_operator.php',
208
+    'ezcTemplateLoopSourceToTstParser'                   => 'Template/parsers/source_to_tst/implementations/loop.php',
209
+    'ezcTemplateLoopTstNode'                             => 'Template/syntax_trees/tst/nodes/loop.php',
210
+    'ezcTemplateMathFunctions'                           => 'Template/functions/math_functions.php',
211
+    'ezcTemplateMinusAssignmentOperatorTstNode'          => 'Template/syntax_trees/tst/nodes/minus_assignment_operator.php',
212
+    'ezcTemplateMinusOperatorTstNode'                    => 'Template/syntax_trees/tst/nodes/minus_operator.php',
213
+    'ezcTemplateModifyingBlockTstNode'                   => 'Template/syntax_trees/tst/nodes/modifying_block.php',
214
+    'ezcTemplateModuloAssignmentOperatorTstNode'         => 'Template/syntax_trees/tst/nodes/modulo_assignment_operator.php',
215
+    'ezcTemplateModuloOperatorTstNode'                   => 'Template/syntax_trees/tst/nodes/modulo_operator.php',
216
+    'ezcTemplateModulusAssignmentOperatorAstNode'        => 'Template/syntax_trees/ast/nodes/operators/modulus_assignment_operator.php',
217
+    'ezcTemplateModulusOperatorAstNode'                  => 'Template/syntax_trees/ast/nodes/operators/modulus_operator.php',
218
+    'ezcTemplateMultiplicationAssignmentOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/multiplication_assignment_operator.php',
219
+    'ezcTemplateMultiplicationAssignmentOperatorTstNode' => 'Template/syntax_trees/tst/nodes/multiplication_assignment_operator.php',
220
+    'ezcTemplateMultiplicationOperatorAstNode'           => 'Template/syntax_trees/ast/nodes/operators/multiplication_operator.php',
221
+    'ezcTemplateMultiplicationOperatorTstNode'           => 'Template/syntax_trees/tst/nodes/multiplication_operator.php',
222
+    'ezcTemplateNegateOperatorTstNode'                   => 'Template/syntax_trees/tst/nodes/negate_operator.php',
223
+    'ezcTemplateNewAstNode'                              => 'Template/syntax_trees/ast/nodes/constructs/new.php',
224
+    'ezcTemplateNoContext'                               => 'Template/contexts/no_context.php',
225
+    'ezcTemplateNopAstNode'                              => 'Template/syntax_trees/ast/nodes/nop.php',
226
+    'ezcTemplateNotEqualOperatorAstNode'                 => 'Template/syntax_trees/ast/nodes/operators/not_equal_operator.php',
227
+    'ezcTemplateNotEqualOperatorTstNode'                 => 'Template/syntax_trees/tst/nodes/not_equal_operator.php',
228
+    'ezcTemplateNotIdenticalOperatorAstNode'             => 'Template/syntax_trees/ast/nodes/operators/not_identical_operator.php',
229
+    'ezcTemplateNotIdenticalOperatorTstNode'             => 'Template/syntax_trees/tst/nodes/not_identical_operator.php',
230
+    'ezcTemplateNullSourceToTstParser'                   => 'Template/parsers/source_to_tst/implementations/null.php',
231
+    'ezcTemplateObjectAccessOperatorAstNode'             => 'Template/syntax_trees/ast/nodes/operators/object_access_operator.php',
232
+    'ezcTemplateOutputAstNode'                           => 'Template/syntax_trees/ast/nodes/output.php',
233
+    'ezcTemplateOutputBlockTstNode'                      => 'Template/syntax_trees/tst/nodes/output_block.php',
234
+    'ezcTemplateOutputVariableManager'                   => 'Template/parsers/tst_to_ast/implementations/output_variable_manager.php',
235
+    'ezcTemplateParenthesisAstNode'                      => 'Template/syntax_trees/ast/nodes/parenthesis.php',
236
+    'ezcTemplateParenthesisTstNode'                      => 'Template/syntax_trees/tst/nodes/parenthesis.php',
237
+    'ezcTemplateParser'                                  => 'Template/parser.php',
238
+    'ezcTemplatePhpCodeAstNode'                          => 'Template/syntax_trees/ast/nodes/php_code.php',
239
+    'ezcTemplatePlusAssignmentOperatorTstNode'           => 'Template/syntax_trees/tst/nodes/plus_assignment_operator.php',
240
+    'ezcTemplatePlusOperatorTstNode'                     => 'Template/syntax_trees/tst/nodes/plus_operator.php',
241
+    'ezcTemplatePostDecrementOperatorTstNode'            => 'Template/syntax_trees/tst/nodes/post_decrement_operator.php',
242
+    'ezcTemplatePostIncrementOperatorTstNode'            => 'Template/syntax_trees/tst/nodes/post_increment_operator.php',
243
+    'ezcTemplatePreDecrementOperatorTstNode'             => 'Template/syntax_trees/tst/nodes/pre_decrement_operator.php',
244
+    'ezcTemplatePreIncrementOperatorTstNode'             => 'Template/syntax_trees/tst/nodes/pre_increment_operator.php',
245
+    'ezcTemplatePrintAstNode'                            => 'Template/syntax_trees/ast/nodes/constructs/print.php',
246
+    'ezcTemplateProgramSourceToTstParser'                => 'Template/parsers/source_to_tst/implementations/program.php',
247
+    'ezcTemplateProgramTstNode'                          => 'Template/syntax_trees/tst/nodes/program.php',
248
+    'ezcTemplatePropertyFetchOperatorTstNode'            => 'Template/syntax_trees/tst/nodes/property_fetch_operator.php',
249
+    'ezcTemplateReferenceOperatorAstNode'                => 'Template/syntax_trees/ast/nodes/operators/reference_operator.php',
250
+    'ezcTemplateRegExp'                                  => 'Template/functions/regexp_code.php',
251
+    'ezcTemplateRegExpFunctions'                         => 'Template/functions/regexp_functions.php',
252
+    'ezcTemplateRequireAstNode'                          => 'Template/syntax_trees/ast/nodes/control/require.php',
253
+    'ezcTemplateRequireOnceAstNode'                      => 'Template/syntax_trees/ast/nodes/control/require_once.php',
254
+    'ezcTemplateReturnAstNode'                           => 'Template/syntax_trees/ast/nodes/control/return.php',
255
+    'ezcTemplateReturnTstNode'                           => 'Template/syntax_trees/tst/nodes/return.php',
256
+    'ezcTemplateRootAstNode'                             => 'Template/syntax_trees/ast/nodes/root.php',
257
+    'ezcTemplateShiftLeftAssignmentOperatorAstNode'      => 'Template/syntax_trees/ast/nodes/operators/shift_left_assignment_operator.php',
258
+    'ezcTemplateShiftLeftOperatorAstNode'                => 'Template/syntax_trees/ast/nodes/operators/shift_left_operator.php',
259
+    'ezcTemplateShiftRightAssignmentOperatorAstNode'     => 'Template/syntax_trees/ast/nodes/operators/shift_right_assignment_operator.php',
260
+    'ezcTemplateShiftRightOperatorAstNode'               => 'Template/syntax_trees/ast/nodes/operators/shift_right_operator.php',
261
+    'ezcTemplateSourceCode'                              => 'Template/source_code.php',
262
+    'ezcTemplateSourceToTstErrorMessages'                => 'Template/error_messages.php',
263
+    'ezcTemplateString'                                  => 'Template/functions/string_code.php',
264
+    'ezcTemplateStringFunctions'                         => 'Template/functions/string_functions.php',
265
+    'ezcTemplateStringSourceToTstParser'                 => 'Template/parsers/source_to_tst/implementations/string.php',
266
+    'ezcTemplateStringTool'                              => 'Template/string_tool.php',
267
+    'ezcTemplateSubtractionAssignmentOperatorAstNode'    => 'Template/syntax_trees/ast/nodes/operators/subtraction_assignment_operator.php',
268
+    'ezcTemplateSubtractionOperatorAstNode'              => 'Template/syntax_trees/ast/nodes/operators/subtraction_operator.php',
269
+    'ezcTemplateSwitchAstNode'                           => 'Template/syntax_trees/ast/nodes/control/switch.php',
270
+    'ezcTemplateSwitchConditionSourceToTstParser'        => 'Template/parsers/source_to_tst/implementations/switch_condition.php',
271
+    'ezcTemplateSwitchTstNode'                           => 'Template/syntax_trees/tst/nodes/switch.php',
272
+    'ezcTemplateSymbolTable'                             => 'Template/symbol_table.php',
273
+    'ezcTemplateTextBlockTstNode'                        => 'Template/syntax_trees/tst/nodes/text_block.php',
274
+    'ezcTemplateThrowExceptionAstNode'                   => 'Template/syntax_trees/ast/nodes/throw_exception.php',
275
+    'ezcTemplateTranslationContextSourceToTstParser'     => 'Template/parsers/source_to_tst/implementations/translation_context.php',
276
+    'ezcTemplateTranslationContextTstNode'               => 'Template/syntax_trees/tst/nodes/translation_context.php',
277
+    'ezcTemplateTranslationSourceToTstParser'            => 'Template/parsers/source_to_tst/implementations/translation.php',
278
+    'ezcTemplateTranslationTstNode'                      => 'Template/syntax_trees/tst/nodes/translation.php',
279
+    'ezcTemplateTryAstNode'                              => 'Template/syntax_trees/ast/nodes/control/try.php',
280
+    'ezcTemplateTstToAstCachedTransformer'               => 'Template/parsers/tst_to_ast/implementations/tst_to_ast_cached_transformer.php',
281
+    'ezcTemplateTstTreeOutput'                           => 'Template/parsers/tst/implementations/tst_tree_output.php',
282
+    'ezcTemplateType'                                    => 'Template/functions/type_code.php',
283
+    'ezcTemplateTypeCastAstNode'                         => 'Template/syntax_trees/ast/nodes/type_cast.php',
284
+    'ezcTemplateTypeFunctions'                           => 'Template/functions/type_functions.php',
285
+    'ezcTemplateUnsetAstNode'                            => 'Template/syntax_trees/ast/nodes/constructs/unset.php',
286
+    'ezcTemplateValidationItem'                          => 'Template/validation_item.php',
287
+    'ezcTemplateVariableAstNode'                         => 'Template/syntax_trees/ast/nodes/variable.php',
288
+    'ezcTemplateVariableCollection'                      => 'Template/variable_collection.php',
289
+    'ezcTemplateVariableSourceToTstParser'               => 'Template/parsers/source_to_tst/implementations/variable.php',
290
+    'ezcTemplateVariableTstNode'                         => 'Template/syntax_trees/tst/nodes/variable.php',
291
+    'ezcTemplateWeb'                                     => 'Template/functions/web_code.php',
292
+    'ezcTemplateWebFunctions'                            => 'Template/functions/web_functions.php',
293
+    'ezcTemplateWhileAstNode'                            => 'Template/syntax_trees/ast/nodes/control/while.php',
294
+    'ezcTemplateWhileLoopSourceToTstParser'              => 'Template/parsers/source_to_tst/implementations/while_loop.php',
295
+    'ezcTemplateWhileLoopTstNode'                        => 'Template/syntax_trees/tst/nodes/while_loop.php',
296
+    'ezcTemplateWhitespaceRemoval'                       => 'Template/parsers/tst_to_tst/implementations/whitespace_removal.php',
297
+    'ezcTemplateXhtmlContext'                            => 'Template/contexts/xhtml_context.php',
298
+);
299
+?>
... ...
@@ -0,0 +1,20 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the TemplateTranslationTiein component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.1.1
8
+ * @filesource
9
+ * @package TemplateTranslationTiein
10
+ */
11
+
12
+return array(
13
+    'ezcTemplateTranslationTieinException'                => 'TemplateTranslationTiein/exceptions/exception.php',
14
+    'ezcTemplateTranslationManagerNotConfiguredException' => 'TemplateTranslationTiein/exceptions/manager_not_configured.php',
15
+    'ezcTemplateTranslationConfiguration'                 => 'TemplateTranslationTiein/configuration.php',
16
+    'ezcTemplateTranslationExtractor'                     => 'TemplateTranslationTiein/extractor.php',
17
+    'ezcTemplateTranslationProvider'                      => 'TemplateTranslationTiein/provider.php',
18
+    'ezcTemplateTranslationStringExtracter'               => 'TemplateTranslationTiein/visitors/string_extracter.php',
19
+);
20
+?>
... ...
@@ -0,0 +1,34 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the Translation component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.3.2
8
+ * @filesource
9
+ * @package Translation
10
+ */
11
+
12
+return array(
13
+    'ezcTranslationException'                       => 'Translation/exceptions/exception.php',
14
+    'ezcTranslationContextNotAvailableException'    => 'Translation/exceptions/context_not_available.php',
15
+    'ezcTranslationKeyNotAvailableException'        => 'Translation/exceptions/key_not_available.php',
16
+    'ezcTranslationMissingTranslationFileException' => 'Translation/exceptions/missing_translation_file.php',
17
+    'ezcTranslationNotConfiguredException'          => 'Translation/exceptions/not_configured.php',
18
+    'ezcTranslationParameterMissingException'       => 'Translation/exceptions/parameter_missing.php',
19
+    'ezcTranslationReaderNotInitializedException'   => 'Translation/exceptions/reader_not_initialized.php',
20
+    'ezcTranslationWriterNotInitializedException'   => 'Translation/exceptions/writer_not_initialized.php',
21
+    'ezcTranslationBackend'                         => 'Translation/interfaces/backend_interface.php',
22
+    'ezcTranslationContextRead'                     => 'Translation/interfaces/context_read_interface.php',
23
+    'ezcTranslationFilter'                          => 'Translation/interfaces/filter_interface.php',
24
+    'ezcTranslation'                                => 'Translation/translation.php',
25
+    'ezcTranslationBorkFilter'                      => 'Translation/filters/bork_filter.php',
26
+    'ezcTranslationComplementEmptyFilter'           => 'Translation/filters/complement_filter.php',
27
+    'ezcTranslationContextWrite'                    => 'Translation/interfaces/context_write_interface.php',
28
+    'ezcTranslationData'                            => 'Translation/structs/translation_data.php',
29
+    'ezcTranslationLeetFilter'                      => 'Translation/filters/leet_filter.php',
30
+    'ezcTranslationManager'                         => 'Translation/translation_manager.php',
31
+    'ezcTranslationTsBackend'                       => 'Translation/backends/ts_backend.php',
32
+    'ezcTranslationTsBackendOptions'                => 'Translation/options/ts_backend.php',
33
+);
34
+?>
... ...
@@ -0,0 +1,15 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the TranslationCacheTiein component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2007 eZ systems as. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.1.2
8
+ * @filesource
9
+ * @package TranslationCacheTiein
10
+ */
11
+
12
+return array(
13
+    'ezcTranslationCacheBackend' => 'TranslationCacheTiein/backends/cache_backend.php',
14
+);
15
+?>
... ...
@@ -0,0 +1,44 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the Tree component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.1.4
8
+ * @filesource
9
+ * @package Tree
10
+ */
11
+
12
+return array(
13
+    'ezcTreeException'                          => 'Tree/exceptions/exception.php',
14
+    'ezcTreeDataStoreMissingDataException'      => 'Tree/exceptions/missing_data.php',
15
+    'ezcTreeIdsDoNotMatchException'             => 'Tree/exceptions/ids_do_not_match.php',
16
+    'ezcTreeInvalidClassException'              => 'Tree/exceptions/invalid_class.php',
17
+    'ezcTreeInvalidIdException'                 => 'Tree/exceptions/invalid_id.php',
18
+    'ezcTreeInvalidXmlException'                => 'Tree/exceptions/invalid_xml.php',
19
+    'ezcTreeInvalidXmlFormatException'          => 'Tree/exceptions/invalid_xml_format.php',
20
+    'ezcTreeTransactionAlreadyStartedException' => 'Tree/exceptions/transaction_already_started.php',
21
+    'ezcTreeTransactionNotStartedException'     => 'Tree/exceptions/transaction_not_started.php',
22
+    'ezcTreeUnknownIdException'                 => 'Tree/exceptions/unknown_id.php',
23
+    'ezcTreeDataStore'                          => 'Tree/interfaces/data_store.php',
24
+    'ezcTreeVisitable'                          => 'Tree/interfaces/visitable.php',
25
+    'ezcTree'                                   => 'Tree/tree.php',
26
+    'ezcTreeVisitor'                            => 'Tree/interfaces/visitor.php',
27
+    'ezcTreeXmlDataStore'                       => 'Tree/stores/xml.php',
28
+    'ezcTreeMemory'                             => 'Tree/backends/memory.php',
29
+    'ezcTreeMemoryDataStore'                    => 'Tree/stores/memory.php',
30
+    'ezcTreeMemoryNode'                         => 'Tree/structs/memory_node.php',
31
+    'ezcTreeNode'                               => 'Tree/tree_node.php',
32
+    'ezcTreeNodeList'                           => 'Tree/tree_node_list.php',
33
+    'ezcTreeNodeListIterator'                   => 'Tree/tree_node_list_iterator.php',
34
+    'ezcTreeTransactionItem'                    => 'Tree/structs/transaction_item.php',
35
+    'ezcTreeVisitorGraphViz'                    => 'Tree/visitors/graphviz.php',
36
+    'ezcTreeVisitorPlainText'                   => 'Tree/visitors/plain_text.php',
37
+    'ezcTreeVisitorXHTML'                       => 'Tree/visitors/xhtml.php',
38
+    'ezcTreeVisitorXHTMLOptions'                => 'Tree/options/visitor_xhtml.php',
39
+    'ezcTreeVisitorYUI'                         => 'Tree/visitors/yui.php',
40
+    'ezcTreeVisitorYUIOptions'                  => 'Tree/options/visitor_yui.php',
41
+    'ezcTreeXml'                                => 'Tree/backends/xml.php',
42
+    'ezcTreeXmlInternalDataStore'               => 'Tree/stores/xml_internal.php',
43
+);
44
+?>
... ...
@@ -0,0 +1,21 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the TreeDatabaseTiein component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2008 eZ systems as. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.1.1
8
+ * @filesource
9
+ * @package TreeDatabaseTiein
10
+ */
11
+
12
+return array(
13
+    'ezcTreeDbInvalidSchemaException' => 'TreeDatabaseTiein/exceptions/invalid_schema.php',
14
+    'ezcTreeDb'                       => 'TreeDatabaseTiein/backends/db.php',
15
+    'ezcTreeDbDataStore'              => 'TreeDatabaseTiein/stores/db.php',
16
+    'ezcTreeDbParentChild'            => 'TreeDatabaseTiein/backends/db_parent_child.php',
17
+    'ezcTreeDbExternalTableDataStore' => 'TreeDatabaseTiein/stores/db_external.php',
18
+    'ezcTreeDbMaterializedPath'       => 'TreeDatabaseTiein/backends/db_materialized_path.php',
19
+    'ezcTreeDbNestedSet'              => 'TreeDatabaseTiein/backends/db_nested_set.php',
20
+);
21
+?>
... ...
@@ -0,0 +1,15 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the TreePersistentObjectTiein component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2007 eZ systems as. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.0
8
+ * @filesource
9
+ * @package TreePersistentObjectTiein
10
+ */
11
+
12
+return array(
13
+    'ezcTreePersistentObjectDataStore' => 'TreePersistentObjectTiein/stores/persistent_object.php',
14
+);
15
+?>
... ...
@@ -0,0 +1,22 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the Url component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2008 eZ systems as. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.2.2
8
+ * @filesource
9
+ * @package Url
10
+ */
11
+
12
+return array(
13
+    'ezcUrlException'                 => 'Url/exceptions/url_exception.php',
14
+    'ezcUrlInvalidParameterException' => 'Url/exceptions/url_invalid_parameter_exception.php',
15
+    'ezcUrlNoConfigurationException'  => 'Url/exceptions/url_no_configuration_exception.php',
16
+    'ezcUrlNotRegisteredException'    => 'Url/exceptions/url_not_registered_exception.php',
17
+    'ezcUrl'                          => 'Url/url.php',
18
+    'ezcUrlConfiguration'             => 'Url/url_configuration.php',
19
+    'ezcUrlCreator'                   => 'Url/url_creator.php',
20
+    'ezcUrlTools'                     => 'Url/url_tools.php',
21
+);
22
+?>
... ...
@@ -0,0 +1,169 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the Webdav component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.1.4
8
+ * @filesource
9
+ * @package Webdav
10
+ */
11
+
12
+return array(
13
+    'ezcWebdavException'                                => 'Webdav/exceptions/exception.php',
14
+    'ezcWebdavBadRequestException'                      => 'Webdav/exceptions/bad_request.php',
15
+    'ezcWebdavBrokenBaseUriException'                   => 'Webdav/exceptions/broken_base_uri.php',
16
+    'ezcWebdavBrokenRequestUriException'                => 'Webdav/exceptions/broken_request_uri.php',
17
+    'ezcWebdavFileBackendBrokenStorageException'        => 'Webdav/exceptions/broken_storage_exception.php',
18
+    'ezcWebdavHeadersNotValidatedException'             => 'Webdav/exceptions/headers_not_validated.php',
19
+    'ezcWebdavInconsistencyException'                   => 'Webdav/exceptions/inconsistency.php',
20
+    'ezcWebdavInvalidCallbackException'                 => 'Webdav/exceptions/invalid_callback.php',
21
+    'ezcWebdavInvalidHeaderException'                   => 'Webdav/exceptions/invalid_header.php',
22
+    'ezcWebdavInvalidHookException'                     => 'Webdav/exceptions/invalid_hook.php',
23
+    'ezcWebdavInvalidRequestBodyException'              => 'Webdav/exceptions/invalid_request_body.php',
24
+    'ezcWebdavInvalidRequestMethodException'            => 'Webdav/exceptions/invalid_request_method.php',
25
+    'ezcWebdavInvalidXmlException'                      => 'Webdav/exceptions/invalid_xml.php',
26
+    'ezcWebdavLockAccessDeniedException'                => 'Webdav/plugins/lock/exceptions/access_denied.php',
27
+    'ezcWebdavLockAdministrationException'              => 'Webdav/plugins/lock/exceptions/administration.php',
28
+    'ezcWebdavMissingHeaderException'                   => 'Webdav/exceptions/missing_header.php',
29
+    'ezcWebdavMissingServerVariableException'           => 'Webdav/exceptions/misssing_server_variable.php',
30
+    'ezcWebdavMissingTransportConfigurationException'   => 'Webdav/exceptions/missing_transport_configuration.php',
31
+    'ezcWebdavNotTransportHandlerException'             => 'Webdav/exceptions/no_transport_handler.php',
32
+    'ezcWebdavPluginPreconditionFailedException'        => 'Webdav/exceptions/plugin_precondition_failed.php',
33
+    'ezcWebdavRequestNotSupportedException'             => 'Webdav/exceptions/request_not_supported.php',
34
+    'ezcWebdavUnknownHeaderException'                   => 'Webdav/exceptions/unknown_header.php',
35
+    'ezcWebdavInfrastructureBase'                       => 'Webdav/interfaces/infrastructure_base.php',
36
+    'ezcWebdavAnonymousAuthenticator'                   => 'Webdav/interfaces/anonymous_authenticator.php',
37
+    'ezcWebdavProperty'                                 => 'Webdav/interfaces/property.php',
38
+    'ezcWebdavBackend'                                  => 'Webdav/interfaces/backend.php',
39
+    'ezcWebdavBackendChange'                            => 'Webdav/interfaces/backend/change.php',
40
+    'ezcWebdavBackendMakeCollection'                    => 'Webdav/interfaces/backend/make_collection.php',
41
+    'ezcWebdavBackendPut'                               => 'Webdav/interfaces/backend/put.php',
42
+    'ezcWebdavBasicAuthenticator'                       => 'Webdav/interfaces/basic_authenticator.php',
43
+    'ezcWebdavLiveProperty'                             => 'Webdav/interfaces/property_live.php',
44
+    'ezcWebdavLockRequestResponseHandler'               => 'Webdav/plugins/lock/interfaces/handler.php',
45
+    'ezcWebdavPropertyStorage'                          => 'Webdav/interfaces/property_storage.php',
46
+    'ezcWebdavResponse'                                 => 'Webdav/interfaces/response.php',
47
+    'ezcWebdavAuth'                                     => 'Webdav/structs/auth.php',
48
+    'ezcWebdavAuthorizer'                               => 'Webdav/interfaces/authorizer.php',
49
+    'ezcWebdavBasicPropertyStorage'                     => 'Webdav/property_storages/basic.php',
50
+    'ezcWebdavCopyResponse'                             => 'Webdav/responses/copy.php',
51
+    'ezcWebdavDigestAuthenticator'                      => 'Webdav/interfaces/digest_authenticator.php',
52
+    'ezcWebdavDisplayInformation'                       => 'Webdav/structs/display_information.php',
53
+    'ezcWebdavLockBackend'                              => 'Webdav/plugins/lock/interfaces/lock_backend.php',
54
+    'ezcWebdavLockCheckObserver'                        => 'Webdav/plugins/lock/interfaces/check_observer.php',
55
+    'ezcWebdavLockCopyRequestResponseHandler'           => 'Webdav/plugins/lock/handlers/copy.php',
56
+    'ezcWebdavLockIfHeaderList'                         => 'Webdav/plugins/lock/interfaces/if_header_list.php',
57
+    'ezcWebdavLockMakeCollectionRequestResponseHandler' => 'Webdav/plugins/lock/handlers/mkcol.php',
58
+    'ezcWebdavPathFactory'                              => 'Webdav/interfaces/path_factory.php',
59
+    'ezcWebdavPluginConfiguration'                      => 'Webdav/plugin_configuration.php',
60
+    'ezcWebdavPropFindResponse'                         => 'Webdav/responses/propfind.php',
61
+    'ezcWebdavPropertyHandler'                          => 'Webdav/transports/property_handler.php',
62
+    'ezcWebdavRequest'                                  => 'Webdav/interfaces/request.php',
63
+    'ezcWebdavSimpleBackend'                            => 'Webdav/backends/simple.php',
64
+    'ezcWebdavSupportedLockPropertyLockentry'           => 'Webdav/plugins/lock/properties/supportedlock_lockentry.php',
65
+    'ezcWebdavTransport'                                => 'Webdav/transport.php',
66
+    'ezcWebdavAnonymousAuth'                            => 'Webdav/structs/anonymous_auth.php',
67
+    'ezcWebdavAutomaticPathFactory'                     => 'Webdav/path_factories/automatic.php',
68
+    'ezcWebdavBasicAuth'                                => 'Webdav/structs/basic_auth.php',
69
+    'ezcWebdavBasicPathFactory'                         => 'Webdav/path_factories/basic.php',
70
+    'ezcWebdavCollection'                               => 'Webdav/structs/collection.php',
71
+    'ezcWebdavCopyRequest'                              => 'Webdav/requests/copy.php',
72
+    'ezcWebdavCreationDateProperty'                     => 'Webdav/properties/creationdate.php',
73
+    'ezcWebdavDateTime'                                 => 'Webdav/tools/date_time.php',
74
+    'ezcWebdavDeadProperty'                             => 'Webdav/properties/dead.php',
75
+    'ezcWebdavDeleteRequest'                            => 'Webdav/requests/delete.php',
76
+    'ezcWebdavDeleteResponse'                           => 'Webdav/responses/delete.php',
77
+    'ezcWebdavDigestAuth'                               => 'Webdav/structs/digest_auth.php',
78
+    'ezcWebdavDigestAuthenticatorBase'                  => 'Webdav/auth/digest_base.php',
79
+    'ezcWebdavDisplayNameProperty'                      => 'Webdav/properties/displayname.php',
80
+    'ezcWebdavEmptyDisplayInformation'                  => 'Webdav/structs/display_information_empty.php',
81
+    'ezcWebdavErrorResponse'                            => 'Webdav/responses/error.php',
82
+    'ezcWebdavFileBackend'                              => 'Webdav/backends/file.php',
83
+    'ezcWebdavFileBackendOptions'                       => 'Webdav/options/backend_file_options.php',
84
+    'ezcWebdavFlaggedPropertyStorage'                   => 'Webdav/property_storages/flagged.php',
85
+    'ezcWebdavGetCollectionResponse'                    => 'Webdav/responses/get_collection.php',
86
+    'ezcWebdavGetContentLanguageProperty'               => 'Webdav/properties/getcontentlanguage.php',
87
+    'ezcWebdavGetContentLengthProperty'                 => 'Webdav/properties/getcontentlength.php',
88
+    'ezcWebdavGetContentTypeProperty'                   => 'Webdav/properties/getcontenttype.php',
89
+    'ezcWebdavGetEtagProperty'                          => 'Webdav/properties/getetag.php',
90
+    'ezcWebdavGetLastModifiedProperty'                  => 'Webdav/properties/getlastmodified.php',
91
+    'ezcWebdavGetRequest'                               => 'Webdav/requests/get.php',
92
+    'ezcWebdavGetResourceResponse'                      => 'Webdav/responses/get_resource.php',
93
+    'ezcWebdavHeadRequest'                              => 'Webdav/requests/head.php',
94
+    'ezcWebdavHeadResponse'                             => 'Webdav/responses/head.php',
95
+    'ezcWebdavHeaderHandler'                            => 'Webdav/transports/header_handler.php',
96
+    'ezcWebdavKonquerorCompatibleTransport'             => 'Webdav/transports/konqueror.php',
97
+    'ezcWebdavLockAdministrator'                        => 'Webdav/plugins/lock/administrator.php',
98
+    'ezcWebdavLockAuthorizer'                           => 'Webdav/plugins/lock/interfaces/lock_authorizer.php',
99
+    'ezcWebdavLockCheckInfo'                            => 'Webdav/plugins/lock/structs/lock_check_info.php',
100
+    'ezcWebdavLockCheckPathCollector'                   => 'Webdav/plugins/lock/check_observers/path_collector.php',
101
+    'ezcWebdavLockCheckPropertyCollector'               => 'Webdav/plugins/lock/check_observers/property_collector.php',
102
+    'ezcWebdavLockDeleteRequestResponseHandler'         => 'Webdav/plugins/lock/handlers/delete.php',
103
+    'ezcWebdavLockDiscoveryProperty'                    => 'Webdav/plugins/lock/properties/lockdiscovery.php',
104
+    'ezcWebdavLockDiscoveryPropertyActiveLock'          => 'Webdav/plugins/lock/properties/lockdiscovery_activelock.php',
105
+    'ezcWebdavLockHeaderHandler'                        => 'Webdav/plugins/lock/header_handler.php',
106
+    'ezcWebdavLockIfHeaderCondition'                    => 'Webdav/plugins/lock/header/if_header_condition.php',
107
+    'ezcWebdavLockIfHeaderListItem'                     => 'Webdav/plugins/lock/header/if_header_list_item.php',
108
+    'ezcWebdavLockIfHeaderNoTagList'                    => 'Webdav/plugins/lock/header/if_header_no_tag_list.php',
109
+    'ezcWebdavLockIfHeaderTaggedList'                   => 'Webdav/plugins/lock/header/if_header_tagged_list.php',
110
+    'ezcWebdavLockLockRequestGenerator'                 => 'Webdav/plugins/lock/check_observers/lock.php',
111
+    'ezcWebdavLockLockRequestResponseHandler'           => 'Webdav/plugins/lock/handlers/lock.php',
112
+    'ezcWebdavLockMoveRequestResponseHandler'           => 'Webdav/plugins/lock/handlers/move.php',
113
+    'ezcWebdavLockMultipleCheckObserver'                => 'Webdav/plugins/lock/check_observers/multiple.php',
114
+    'ezcWebdavLockOptionsRequestResponseHandler'        => 'Webdav/plugins/lock/handlers/options.php',
115
+    'ezcWebdavLockPlugin'                               => 'Webdav/plugins/lock/main.php',
116
+    'ezcWebdavLockPluginConfiguration'                  => 'Webdav/plugins/lock/config.php',
117
+    'ezcWebdavLockPluginOptions'                        => 'Webdav/plugins/lock/options.php',
118
+    'ezcWebdavLockPropFindRequestResponseHandler'       => 'Webdav/plugins/lock/handlers/propfind.php',
119
+    'ezcWebdavLockPropPatchRequestResponseHandler'      => 'Webdav/plugins/lock/handlers/proppatch.php',
120
+    'ezcWebdavLockPropertyHandler'                      => 'Webdav/plugins/lock/property_handler.php',
121
+    'ezcWebdavLockPurger'                               => 'Webdav/plugins/lock/administration/purger.php',
122
+    'ezcWebdavLockPutRequestResponseHandler'            => 'Webdav/plugins/lock/handlers/put.php',
123
+    'ezcWebdavLockRefreshRequestGenerator'              => 'Webdav/plugins/lock/check_observers/lock_refresh.php',
124
+    'ezcWebdavLockRequest'                              => 'Webdav/plugins/lock/requests/lock.php',
125
+    'ezcWebdavLockResponse'                             => 'Webdav/plugins/lock/responses/lock.php',
126
+    'ezcWebdavLockTools'                                => 'Webdav/plugins/lock/tools.php',
127
+    'ezcWebdavLockTransport'                            => 'Webdav/plugins/lock/transport.php',
128
+    'ezcWebdavLockUnlockRequestResponseHandler'         => 'Webdav/plugins/lock/handlers/unlock.php',
129
+    'ezcWebdavMakeCollectionRequest'                    => 'Webdav/requests/mkcol.php',
130
+    'ezcWebdavMakeCollectionResponse'                   => 'Webdav/responses/mkcol.php',
131
+    'ezcWebdavMemoryBackend'                            => 'Webdav/backends/memory.php',
132
+    'ezcWebdavMemoryBackendOptions'                     => 'Webdav/options/backend_memory_options.php',
133
+    'ezcWebdavMicrosoftCompatibleTransport'             => 'Webdav/transports/microsoft.php',
134
+    'ezcWebdavMoveRequest'                              => 'Webdav/requests/move.php',
135
+    'ezcWebdavMoveResponse'                             => 'Webdav/responses/move.php',
136
+    'ezcWebdavMultistatusResponse'                      => 'Webdav/responses/multistatus.php',
137
+    'ezcWebdavNamespaceRegistry'                        => 'Webdav/namespace_registry.php',
138
+    'ezcWebdavNautilusCompatibleTransport'              => 'Webdav/transports/nautilus.php',
139
+    'ezcWebdavNautilusPropertyHandler'                  => 'Webdav/transports/property_handlers/nautilus.php',
140
+    'ezcWebdavOptionsRequest'                           => 'Webdav/requests/options.php',
141
+    'ezcWebdavOptionsResponse'                          => 'Webdav/responses/options.php',
142
+    'ezcWebdavOutputResult'                             => 'Webdav/structs/output_result.php',
143
+    'ezcWebdavPluginParameters'                         => 'Webdav/plugin_parameters.php',
144
+    'ezcWebdavPluginRegistry'                           => 'Webdav/plugin_registry.php',
145
+    'ezcWebdavPotentialUriContent'                      => 'Webdav/structs/potential_uri_content.php',
146
+    'ezcWebdavPropFindRequest'                          => 'Webdav/requests/propfind.php',
147
+    'ezcWebdavPropPatchRequest'                         => 'Webdav/requests/proppatch.php',
148
+    'ezcWebdavPropPatchResponse'                        => 'Webdav/responses/proppatch.php',
149
+    'ezcWebdavPropStatResponse'                         => 'Webdav/responses/propstat.php',
150
+    'ezcWebdavPutRequest'                               => 'Webdav/requests/put.php',
151
+    'ezcWebdavPutResponse'                              => 'Webdav/responses/put.php',
152
+    'ezcWebdavRequestLockInfoContent'                   => 'Webdav/plugins/lock/requests/content/lock_info.php',
153
+    'ezcWebdavRequestPropertyBehaviourContent'          => 'Webdav/requests/content/property_behaviour.php',
154
+    'ezcWebdavResource'                                 => 'Webdav/structs/resource.php',
155
+    'ezcWebdavResourceTypeProperty'                     => 'Webdav/properties/resourcetype.php',
156
+    'ezcWebdavServer'                                   => 'Webdav/server.php',
157
+    'ezcWebdavServerConfiguration'                      => 'Webdav/server_configuration.php',
158
+    'ezcWebdavServerConfigurationManager'               => 'Webdav/server_configuration_manager.php',
159
+    'ezcWebdavServerOptions'                            => 'Webdav/options/server.php',
160
+    'ezcWebdavSourceProperty'                           => 'Webdav/properties/source.php',
161
+    'ezcWebdavSourcePropertyLink'                       => 'Webdav/properties/source_link.php',
162
+    'ezcWebdavStringDisplayInformation'                 => 'Webdav/structs/display_information_string.php',
163
+    'ezcWebdavSupportedLockProperty'                    => 'Webdav/plugins/lock/properties/supportedlock.php',
164
+    'ezcWebdavUnlockRequest'                            => 'Webdav/plugins/lock/requests/unlock.php',
165
+    'ezcWebdavUnlockResponse'                           => 'Webdav/plugins/lock/responses/unlock.php',
166
+    'ezcWebdavXmlDisplayInformation'                    => 'Webdav/structs/display_information_xml.php',
167
+    'ezcWebdavXmlTool'                                  => 'Webdav/tools/xml.php',
168
+);
169
+?>
... ...
@@ -0,0 +1,93 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the Workflow component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.4.1
8
+ * @filesource
9
+ * @package Workflow
10
+ */
11
+
12
+return array(
13
+    'ezcWorkflowException'                        => 'Workflow/exceptions/exception.php',
14
+    'ezcWorkflowDefinitionStorageException'       => 'Workflow/exceptions/definition_storage.php',
15
+    'ezcWorkflowExecutionException'               => 'Workflow/exceptions/execution.php',
16
+    'ezcWorkflowInvalidInputException'            => 'Workflow/exceptions/invalid_input.php',
17
+    'ezcWorkflowInvalidWorkflowException'         => 'Workflow/exceptions/invalid_workflow.php',
18
+    'ezcWorkflowVisitable'                        => 'Workflow/interfaces/visitable.php',
19
+    'ezcWorkflowNode'                             => 'Workflow/interfaces/node.php',
20
+    'ezcWorkflowCondition'                        => 'Workflow/interfaces/condition.php',
21
+    'ezcWorkflowNodeBranch'                       => 'Workflow/interfaces/node_branch.php',
22
+    'ezcWorkflowNodeMerge'                        => 'Workflow/interfaces/node_merge.php',
23
+    'ezcWorkflowConditionBooleanSet'              => 'Workflow/interfaces/condition_boolean_set.php',
24
+    'ezcWorkflowConditionComparison'              => 'Workflow/interfaces/condition_comparison.php',
25
+    'ezcWorkflowConditionType'                    => 'Workflow/interfaces/condition_type.php',
26
+    'ezcWorkflowDefinitionStorage'                => 'Workflow/interfaces/definition_storage.php',
27
+    'ezcWorkflowExecution'                        => 'Workflow/interfaces/execution.php',
28
+    'ezcWorkflowExecutionPlugin'                  => 'Workflow/interfaces/execution_plugin.php',
29
+    'ezcWorkflowNodeArithmeticBase'               => 'Workflow/interfaces/node_arithmetic_base.php',
30
+    'ezcWorkflowNodeConditionalBranch'            => 'Workflow/interfaces/node_conditional_branch.php',
31
+    'ezcWorkflowNodeEnd'                          => 'Workflow/nodes/end.php',
32
+    'ezcWorkflowNodeStart'                        => 'Workflow/nodes/start.php',
33
+    'ezcWorkflowNodeSynchronization'              => 'Workflow/nodes/control_flow/synchronization.php',
34
+    'ezcWorkflowVisitor'                          => 'Workflow/interfaces/visitor.php',
35
+    'ezcWorkflow'                                 => 'Workflow/workflow.php',
36
+    'ezcWorkflowConditionAnd'                     => 'Workflow/conditions/and.php',
37
+    'ezcWorkflowConditionInArray'                 => 'Workflow/conditions/in_array.php',
38
+    'ezcWorkflowConditionIsAnything'              => 'Workflow/conditions/is_anything.php',
39
+    'ezcWorkflowConditionIsArray'                 => 'Workflow/conditions/is_array.php',
40
+    'ezcWorkflowConditionIsBool'                  => 'Workflow/conditions/is_bool.php',
41
+    'ezcWorkflowConditionIsEqual'                 => 'Workflow/conditions/is_equal.php',
42
+    'ezcWorkflowConditionIsEqualOrGreaterThan'    => 'Workflow/conditions/is_equal_or_greater_than.php',
43
+    'ezcWorkflowConditionIsEqualOrLessThan'       => 'Workflow/conditions/is_equal_or_less_than.php',
44
+    'ezcWorkflowConditionIsFalse'                 => 'Workflow/conditions/is_false.php',
45
+    'ezcWorkflowConditionIsFloat'                 => 'Workflow/conditions/is_float.php',
46
+    'ezcWorkflowConditionIsGreaterThan'           => 'Workflow/conditions/is_greater_than.php',
47
+    'ezcWorkflowConditionIsInteger'               => 'Workflow/conditions/is_integer.php',
48
+    'ezcWorkflowConditionIsLessThan'              => 'Workflow/conditions/is_less_than.php',
49
+    'ezcWorkflowConditionIsNotEqual'              => 'Workflow/conditions/is_not_equal.php',
50
+    'ezcWorkflowConditionIsObject'                => 'Workflow/conditions/is_object.php',
51
+    'ezcWorkflowConditionIsString'                => 'Workflow/conditions/is_string.php',
52
+    'ezcWorkflowConditionIsTrue'                  => 'Workflow/conditions/is_true.php',
53
+    'ezcWorkflowConditionNot'                     => 'Workflow/conditions/not.php',
54
+    'ezcWorkflowConditionOr'                      => 'Workflow/conditions/or.php',
55
+    'ezcWorkflowConditionVariable'                => 'Workflow/conditions/variable.php',
56
+    'ezcWorkflowConditionVariables'               => 'Workflow/conditions/variables.php',
57
+    'ezcWorkflowConditionXor'                     => 'Workflow/conditions/xor.php',
58
+    'ezcWorkflowDefinitionStorageXml'             => 'Workflow/definition_storage/xml.php',
59
+    'ezcWorkflowExecutionListener'                => 'Workflow/interfaces/execution_listener.php',
60
+    'ezcWorkflowExecutionListenerPlugin'          => 'Workflow/execution/plugin/listener.php',
61
+    'ezcWorkflowExecutionNonInteractive'          => 'Workflow/execution/non_interactive.php',
62
+    'ezcWorkflowExecutionVisualizerPlugin'        => 'Workflow/execution/plugin/visualizer.php',
63
+    'ezcWorkflowExecutionVisualizerPluginOptions' => 'Workflow/options/execution_plugin_visualizer.php',
64
+    'ezcWorkflowNodeAction'                       => 'Workflow/nodes/action.php',
65
+    'ezcWorkflowNodeCancel'                       => 'Workflow/nodes/cancel.php',
66
+    'ezcWorkflowNodeDiscriminator'                => 'Workflow/nodes/control_flow/discriminator.php',
67
+    'ezcWorkflowNodeExclusiveChoice'              => 'Workflow/nodes/control_flow/exclusive_choice.php',
68
+    'ezcWorkflowNodeFinally'                      => 'Workflow/nodes/finally.php',
69
+    'ezcWorkflowNodeInput'                        => 'Workflow/nodes/variables/input.php',
70
+    'ezcWorkflowNodeLoop'                         => 'Workflow/nodes/control_flow/loop.php',
71
+    'ezcWorkflowNodeMultiChoice'                  => 'Workflow/nodes/control_flow/multi_choice.php',
72
+    'ezcWorkflowNodeParallelSplit'                => 'Workflow/nodes/control_flow/parallel_split.php',
73
+    'ezcWorkflowNodeSimpleMerge'                  => 'Workflow/nodes/control_flow/simple_merge.php',
74
+    'ezcWorkflowNodeSubWorkflow'                  => 'Workflow/nodes/sub_workflow.php',
75
+    'ezcWorkflowNodeSynchronizingMerge'           => 'Workflow/nodes/control_flow/synchronizing_merge.php',
76
+    'ezcWorkflowNodeVariableAdd'                  => 'Workflow/nodes/variables/add.php',
77
+    'ezcWorkflowNodeVariableDecrement'            => 'Workflow/nodes/variables/decrement.php',
78
+    'ezcWorkflowNodeVariableDiv'                  => 'Workflow/nodes/variables/div.php',
79
+    'ezcWorkflowNodeVariableIncrement'            => 'Workflow/nodes/variables/increment.php',
80
+    'ezcWorkflowNodeVariableMul'                  => 'Workflow/nodes/variables/mul.php',
81
+    'ezcWorkflowNodeVariableSet'                  => 'Workflow/nodes/variables/set.php',
82
+    'ezcWorkflowNodeVariableSub'                  => 'Workflow/nodes/variables/sub.php',
83
+    'ezcWorkflowNodeVariableUnset'                => 'Workflow/nodes/variables/unset.php',
84
+    'ezcWorkflowServiceObject'                    => 'Workflow/interfaces/service_object.php',
85
+    'ezcWorkflowUtil'                             => 'Workflow/util.php',
86
+    'ezcWorkflowVariableHandler'                  => 'Workflow/interfaces/variable_handler.php',
87
+    'ezcWorkflowVisitorNodeCollector'             => 'Workflow/visitors/node_collector.php',
88
+    'ezcWorkflowVisitorReset'                     => 'Workflow/visitors/reset.php',
89
+    'ezcWorkflowVisitorVerification'              => 'Workflow/visitors/verification.php',
90
+    'ezcWorkflowVisitorVisualization'             => 'Workflow/visitors/visualization.php',
91
+    'ezcWorkflowVisitorVisualizationOptions'      => 'Workflow/options/visitor_visualization.php',
92
+);
93
+?>
... ...
@@ -0,0 +1,18 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the WorkflowDatabaseTiein component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.4
8
+ * @filesource
9
+ * @package WorkflowDatabaseTiein
10
+ */
11
+
12
+return array(
13
+    'ezcWorkflowDatabaseDefinitionStorage' => 'WorkflowDatabaseTiein/definition_storage.php',
14
+    'ezcWorkflowDatabaseExecution'         => 'WorkflowDatabaseTiein/execution.php',
15
+    'ezcWorkflowDatabaseOptions'           => 'WorkflowDatabaseTiein/options/database.php',
16
+    'ezcWorkflowDatabaseUtil'              => 'WorkflowDatabaseTiein/util.php',
17
+);
18
+?>
... ...
@@ -0,0 +1,16 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the WorkflowEventLogTiein component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2007 eZ systems as. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.1
8
+ * @filesource
9
+ * @category Workflow
10
+ * @package WorkflowEventLogTiein
11
+ */
12
+
13
+return array(
14
+    'ezcWorkflowEventLogListener' => 'WorkflowEventLogTiein/listener.php',
15
+);
16
+?>
... ...
@@ -0,0 +1,17 @@
1
+<?php
2
+/**
3
+ * Autoloader definition for the WorkflowSignalSlotTiein component.
4
+ *
5
+ * @copyright Copyright (C) 2005-2008 eZ systems as. All rights reserved.
6
+ * @license http://ez.no/licenses/new_bsd New BSD License
7
+ * @version 1.0
8
+ * @filesource
9
+ * @package WorkflowSignalSlotTiein
10
+ */
11
+
12
+return array(
13
+    'ezcWorkflowSignalSlotPlugin'        => 'WorkflowSignalSlotTiein/plugin.php',
14
+    'ezcWorkflowSignalSlotPluginOptions' => 'WorkflowSignalSlotTiein/options/plugin.php',
15
+    'ezcWorkflowSignalSlotReturnValue'   => 'WorkflowSignalSlotTiein/structs/return_value.php',
16
+);
17
+?>
... ...
@@ -0,0 +1,7 @@
1
+<?php
2
+/**
3
+ * Documentation, License etc.
4
+ *
5
+ * @package gm_web
6
+ */
7
+
... ...
@@ -0,0 +1,31 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+<html xmlns="http://www.w3.org/1999/xhtml">
4
+  <head>
5
+    <title>
6
+      Test page for WAMP setup
7
+    </title>
8
+  </head>
9
+  <body>
10
+    <h1>
11
+      Songs
12
+    </h1>
13
+    <ol>
14
+      <li>
15
+        Youtube: <a href="http://www.youtube.com/watch?v=rSbv4v9E7MY" target="_blank">Fusion - Melibea</a>
16
+      </li>
17
+	  <li>
18
+		Youtube: <a href="http://www.youtube.com/watch?v=H2-1u8xvk54" target="_blank">Comptine d'Un Autre �t�- Die fabelhafte Welt der Am�lie Piano [Large Version 2010] </a>
19
+	  </li>
20
+	  <li>
21
+		Youtube: <a href="http://www.youtube.com/watch?v=BJVtsP_6L5o" target="_blank">Comptine d'un autre �t� (classical guitar)</a>
22
+	  </li>
23
+	  <li>
24
+		Youtube: <a href="http://www.youtube.com/watch?v=rDOXxa1U7Oc" target="_blank">Thomas Newmann - Any other name</a>
25
+	  </li>
26
+	  <li>
27
+		Youtube: <a href="http://www.youtube.com/watch?v=qiet0WgPNfo" target="_blank">Shiela Chandra - One</a>
28
+	  </li>
29
+    </ol>
30
+  </body>
31
+</html>
... ...
@@ -0,0 +1,202 @@
1
+<!--
2
+To change this template, choose Tools | Templates
3
+and open the template in the editor.
4
+-->
5
+<!DOCTYPE html>
6
+<html>
7
+    <head>
8
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
9
+        <title></title>
10
+    </head>
11
+    <body>
12
+        <h1>You have reached Web service for VRoom 360 project.</h1>
13
+        <h2>This is a test page for various things being developed.</h2>
14
+        <?php
15
+
16
+        require_once 'RequestObject.php';
17
+        require_once 'dataendpoint.php';
18
+        require_once 'Config.php';
19
+
20
+        //test
21
+        function GenerateRequestForTesting()
22
+        {
23
+            $config = new Config();
24
+            //put all parameters in an array
25
+            //update user info from profile page
26
+            //UpdateUserInfo
27
+            $params = array(
28
+                            'userid' => 'dev2',
29
+                            'email' => '[email protected]',
30
+                            'zip' => 15219,
31
+                            'height' => 150,
32
+                            'sittingHeight' => 10,
33
+                            'upperLegLength' => 20,
34
+                            'weightRange' => 14,
35
+                            'ageRange' => 10,
36
+                            'gender' => 'Male',
37
+                            'shirtSize' => 'L',
38
+                            'shoeSize' => 11.5
39
+                           );
40
+
41
+            //get questions depending on the set id.
42
+
43
+            //vehicle model name
44
+            //GetCarModel
45
+            $params = array(
46
+                'year'  => 2010,
47
+                'make'  => 'Buick',
48
+            );
49
+
50
+            //GetPreviousAnswers
51
+            $params = array (
52
+                'activeSurveyId' => 2
53
+            );
54
+
55
+            //SetNewSurvey
56
+            $params = array(
57
+                'vehicleId' => 21,
58
+                'questionSet_id' => 2,
59
+                'userId' => 'eve',
60
+            );
61
+
62
+            //SetNewUserInfo
63
+            $params = array(
64
+                'username'  => 'pappu',
65
+                'password'  => 'pappu',
66
+                'email'     => '[email protected]'
67
+            );
68
+
69
+            //SetEndSurvey
70
+            $params = array(
71
+                'surveyId' => 2
72
+            );
73
+
74
+            //ResetPassword
75
+            $params = array(
76
+                'loginId'   => 'dev'
77
+            );
78
+
79
+            //ChangePassword
80
+            $params = array(
81
+                'username'  => 'dev',
82
+                'newPassword' => 'password',
83
+                'oldPassword' => 'dev',
84
+
85
+            );
86
+
87
+            //GetBadges
88
+            $params = array(
89
+                'loginId'   => 'dev'
90
+            );
91
+
92
+            //GetSurveysForUser
93
+            $params = array (
94
+                'loginId' => 'dev'
95
+            );
96
+
97
+            //IsAuthorizedUser
98
+            $params =array(
99
+                'username'  => 'henry',
100
+                'isAdmin'   => 'true',
101
+                'password'  => 'henry',
102
+            );
103
+
104
+            //GetCarModel
105
+            $params = array(
106
+                'year'  => 1991,
107
+                'make'  => 'Alfa Romeo',
108
+            );
109
+
110
+            //SetNewSurvey
111
+            $params = array(
112
+                'vehicleId' => 21,
113
+                'questionSet_id' => 2,
114
+                'userId' => 'eve',
115
+            );
116
+
117
+
118
+
119
+            //GetQuestions
120
+            $params = array(
121
+                'questionSetId'  => 6
122
+            );
123
+
124
+            //IsAuthorizedUser
125
+            $params =array(
126
+                'username'  => 'henry',
127
+                'isAdmin'   => 'true',
128
+                'password'  => 'henry',
129
+            );
130
+
131
+            /*
132
+             * {"paramArray":{"username":"henry","badgesArray":[9,8,7,4,5,6,8,7,8,7,1,2,3]},"requestHash":"c542ae701ea370a0b5d1b2907e0315238fdde0d7","call":"SetBadges"}
133
+             */
134
+            $badgesArray = array();
135
+            for($i = 1; $i<5; $i++)
136
+            {
137
+                $badgesArray []= $i;
138
+            }
139
+            $badgesArray = array(9,8,7,4,5,6,8,7,8,7,1,2,3);
140
+            //SetBadges
141
+            $params = array(
142
+                'userid'    => 'henry',
143
+                'badgesArray' => $badgesArray
144
+            );
145
+
146
+            //GetPreviousAnswers
147
+            $params = array (
148
+                'activeSurveyId' => 221
149
+            );
150
+
151
+             //put all parameters in an array
152
+            //update user info from profile page
153
+            //UpdateUserInfo
154
+            $params = array(
155
+                            'userid' => 'dev2',
156
+                            'email' => '[email protected]',
157
+                            'zip' => 15219,
158
+                            'height' => 150,
159
+                            'sittingHeight' => 10,
160
+                            'upperLegLength' => 20,
161
+                            'weightRange' => 14,
162
+                            'ageRange' => 10,
163
+                            'gender' => 'Male',
164
+                            'shirtSize' => 'L',
165
+                            'shoeSize' => 11.5
166
+                           );
167
+            //make a request
168
+            $request = new RequestObject(sha1('UpdateUserInfo'), "UpdateUserInfo", $params);
169
+            //json_encode the request
170
+            $json = json_encode($request );
171
+
172
+            echo "<p><b>Generating request with following JSON:</b><br/>$json</p>";
173
+
174
+            if(!$config->IsConnectionEncryptionEnabled())
175
+            {
176
+                return $json;
177
+            }
178
+            //encrypt the request
179
+            $encryptor = new Crypt_RSA();
180
+            if(!$encryptor->loadKey($config->GetRequestPublicKey(), CRYPT_RSA_PUBLIC_FORMAT_PKCS1))
181
+            {
182
+                die('<b>Loading public key for sending data to server failed</b>');
183
+            }
184
+
185
+            return $encryptor->encrypt($json);
186
+        }
187
+
188
+
189
+        $generatedRequest = GenerateRequestForTesting();
190
+        echo "<p><b>generated request:</b><br/> $generatedRequest</p>";
191
+        $decryptedRequest = DecryptRequest($generatedRequest);
192
+        echo "<p><b>Decrypted request:</b><br/> ";
193
+        var_dump($decryptedRequest);
194
+        $response = GetResponse($decryptedRequest);
195
+        echo "<p><b>Response by application:</b><br/></p>";
196
+        var_dump($response);
197
+        echo "<p><b>Going to send following to client:</b><br/></p>";
198
+        SendResponse($response);
199
+
200
+    ?>
201
+    </body>
202
+</html>
... ...
@@ -0,0 +1,108 @@
1
+<?php
2
+/*********************************************/
3
+/* PHP Line Counter                          */
4
+/* Devin Smith ([email protected])             */
5
+/* 2004-02-01 http://www.arzynik.com         */
6
+/*********************************************/
7
+
8
+/* Config */
9
+$dontscandirs = array("./logs","./files","./images","./db","./debugImages","./examples","./extern","./ezcMail","./nbProject","./phpseclib");
10
+
11
+
12
+$dir = "./";
13
+count_main($dir);
14
+
15
+
16
+function count_main($dir) {
17
+  global $content, $dirs, $totallines, $totalfiles, $totaldirs, $dontscandirs, $totalbytes, $dontscandirs;
18
+
19
+
20
+  echo "<html><head><title>Counting lines of '$dir'</title></head><body bgcolor=#FFFFFF>\n"
21
+      ."<font face=arial,verdana,helvetica size=2 color=black>\n"
22
+      .countlines($dir)
23
+      ."</font><p align=right><font face=arial,verdana,helvetica size=2 color=black><b>Copyright &copy; 2004 \n"
24
+      ."<a href=http://www.arzynik.com><font color=blue>Arzynik.com</font></a></b></font></p>\n"
25
+      ."</body></html>\n";
26
+}
27
+
28
+
29
+function countlines($dir) {
30
+  global $content, $dirs, $totallines, $totalfiles, $totaldirs, $dontscandirs, $totalbytes;
31
+  listdir($dir);
32
+  return "The directory '<b>".$dir."</b>' contains <b>".getfilesize($totalbytes)."</b> of <b>".addcomma($totallines)."</b> lines of code in <b>".addcomma($totalfiles)."</b> files within <b>".addcomma($totaldirs)."</b> subdirectories.";
33
+}
34
+
35
+
36
+function listdir($dir, $level_count = 0) {
37
+  global $content, $dirs, $totallines, $totalfiles, $totaldirs, $dontscandirs, $totalbytes;
38
+  if (!@($thisdir = opendir($dir))) return;
39
+  while ($item = readdir($thisdir) ) {
40
+    if (is_dir("$dir/$item") && (substr("$item", 0, 1) != '.') && !in_array($dir.$item,$dontscandirs)) {
41
+      listdir("$dir/$item", $level_count + 1);
42
+    }
43
+  }
44
+  if ($level_count > 0) {
45
+    $dir = ereg_replace("[/][/]", "/", $dir);
46
+    $handle=opendir($dir);
47
+    while ($file = readdir($handle)) $filelist[] = $file;
48
+    asort($filelist);
49
+    while (list ($key, $file) = each ($filelist)) {
50
+      if ($file != "." && $file != ".." && !is_dir($file) && iswebtype($file)) {
51
+        $linecount = count(file($dir."/".$file));
52
+        $totallines = $totallines + $linecount;
53
+        $totalfiles++;
54
+        $totalbytes = $totalbytes + filesize($dir."/".$file);
55
+      }
56
+    }
57
+    $totaldirs++;
58
+  }
59
+}
60
+
61
+
62
+function iswebtype($file) {
63
+  $filetypes = array("php","php4","php3","phtml","html","htm","js","asp","xml","css","bml","cgi","cfm","apm","jhtml","xhtml","aspx");
64
+  foreach ($filetypes as $type) if (substr($file,strlen($file)-strlen($type)-1) == ".".$type) return TRUE;
65
+  return FALSE;
66
+}
67
+
68
+
69
+function getfilesize($size) {
70
+  if ($size != 0) {
71
+    if ($size>=1099511627776) {
72
+      $size = round($size / 1024 / 1024 / 1024 / 1024, 2);
73
+      $suff = "TB";
74
+    } elseif ($size>=1073741824) {
75
+      $size = round($size / 1024 / 1024 / 1024, 2);
76
+      $suff = "GB";
77
+    } elseif ($size>=1048576) {
78
+      $size = round($size / 1024 / 1024, 2);
79
+      $suff = "MB";
80
+    } elseif ($size>=1024) {
81
+      $size = round($size / 1024, 2);
82
+      $suff = "KB";
83
+    } elseif ($size<1024) {
84
+      $size = round($size / 1024, 2);
85
+      $suff = "Byte";
86
+    }
87
+  } else {
88
+    $suff = "Byte";
89
+  }
90
+  if ($size == 1 || $size == 0) $size = $size." ".$suff;
91
+  else $size = "<b>".$size."</b> ".$suff."s";
92
+  return $size;
93
+}
94
+
95
+
96
+function addcomma($int) {
97
+    $retval ='';
98
+    $intarray = array();
99
+  while(strlen($int)>3) {
100
+    $intarray[] = substr($int,-3,3);
101
+    $int = substr($int,0,strlen($int)-3);
102
+  }
103
+  foreach ($intarray as $item) {
104
+    $retval .= ",".$item;
105
+  }
106
+  return $int.$retval;
107
+}
108
+?>
0 109
\ No newline at end of file
... ...
@@ -0,0 +1,8 @@
1
+copy.src.files=false
2
+copy.src.target=
3
+index.file=index.php
4
+remote.connection=devghai.com-8e590d
5
+remote.directory=/vroom360
6
+remote.upload=MANUALLY
7
+run.as=REMOTE
8
+url=http://localhost:4096/vroom360/
... ...
@@ -0,0 +1,4 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
3
+    <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
4
+</project-private>
... ...
@@ -0,0 +1,7 @@
1
+include.path=${php.global.include.path}
2
+php.version=PHP_5
3
+source.encoding=UTF-8
4
+src.dir=.
5
+tags.asp=false
6
+tags.short=true
7
+web.root=.
... ...
@@ -0,0 +1,9 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project xmlns="http://www.netbeans.org/ns/project/1">
3
+    <type>org.netbeans.modules.php.project</type>
4
+    <configuration>
5
+        <data xmlns="http://www.netbeans.org/ns/php-project/1">
6
+            <name>vroom360</name>
7
+        </data>
8
+    </configuration>
9
+</project>
... ...
@@ -0,0 +1,594 @@
1
+<?php
2
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
3
+
4
+/**
5
+ * Pure-PHP implementation of AES.
6
+ *
7
+ * Uses mcrypt, if available, and an internal implementation, otherwise.
8
+ *
9
+ * PHP versions 4 and 5
10
+ *
11
+ * If {@link Crypt_AES::setKeyLength() setKeyLength()} isn't called, it'll be calculated from
12
+ * {@link Crypt_AES::setKey() setKey()}.  ie. if the key is 128-bits, the key length will be 128-bits.  If it's 136-bits
13
+ * it'll be null-padded to 160-bits and 160 bits will be the key length until {@link Crypt_Rijndael::setKey() setKey()}
14
+ * is called, again, at which point, it'll be recalculated.
15
+ *
16
+ * Since Crypt_AES extends Crypt_Rijndael, some functions are available to be called that, in the context of AES, don't
17
+ * make a whole lot of sense.  {@link Crypt_AES::setBlockLength() setBlockLength()}, for instance.  Calling that function,
18
+ * however possible, won't do anything (AES has a fixed block length whereas Rijndael has a variable one).
19
+ *
20
+ * Here's a short example of how to use this library:
21
+ * <code>
22
+ * <?php
23
+ *    include('Crypt/AES.php');
24
+ *
25
+ *    $aes = new Crypt_AES();
26
+ *
27
+ *    $aes->setKey('abcdefghijklmnop');
28
+ *
29
+ *    $size = 10 * 1024;
30
+ *    $plaintext = '';
31
+ *    for ($i = 0; $i < $size; $i++) {
32
+ *        $plaintext.= 'a';
33
+ *    }
34
+ *
35
+ *    echo $aes->decrypt($aes->encrypt($plaintext));
36
+ * ?>
37
+ * </code>
38
+ *
39
+ * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy
40
+ * of this software and associated documentation files (the "Software"), to deal
41
+ * in the Software without restriction, including without limitation the rights
42
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
43
+ * copies of the Software, and to permit persons to whom the Software is
44
+ * furnished to do so, subject to the following conditions:
45
+ * 
46
+ * The above copyright notice and this permission notice shall be included in
47
+ * all copies or substantial portions of the Software.
48
+ * 
49
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
50
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
51
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
52
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
53
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
54
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
55
+ * THE SOFTWARE.
56
+ *
57
+ * @category   Crypt
58
+ * @package    Crypt_AES
59
+ * @author     Jim Wigginton <[email protected]>
60
+ * @copyright  MMVIII Jim Wigginton
61
+ * @license    http://www.opensource.org/licenses/mit-license.html  MIT License
62
+ * @version    $Id: AES.php,v 1.7 2010/02/09 06:10:25 terrafrost Exp $
63
+ * @link       http://phpseclib.sourceforge.net
64
+ */
65
+
66
+/**
67
+ * Include Crypt_Rijndael
68
+ */
69
+require_once 'Rijndael.php';
70
+
71
+/**#@+
72
+ * @access public
73
+ * @see Crypt_AES::encrypt()
74
+ * @see Crypt_AES::decrypt()
75
+ */
76
+/**
77
+ * Encrypt / decrypt using the Counter mode.
78
+ *
79
+ * Set to -1 since that's what Crypt/Random.php uses to index the CTR mode.
80
+ *
81
+ * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29
82
+ */
83
+define('CRYPT_AES_MODE_CTR', -1);
84
+/**
85
+ * Encrypt / decrypt using the Electronic Code Book mode.
86
+ *
87
+ * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29
88
+ */
89
+define('CRYPT_AES_MODE_ECB', 1);
90
+/**
91
+ * Encrypt / decrypt using the Code Book Chaining mode.
92
+ *
93
+ * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29
94
+ */
95
+define('CRYPT_AES_MODE_CBC', 2);
96
+/**
97
+ * Encrypt / decrypt using the Cipher Feedback mode.
98
+ *
99
+ * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29
100
+ */
101
+define('CRYPT_AES_MODE_CFB', 3);
102
+/**
103
+ * Encrypt / decrypt using the Cipher Feedback mode.
104
+ *
105
+ * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29
106
+ */
107
+define('CRYPT_AES_MODE_OFB', 4);
108
+/**#@-*/
109
+
110
+/**#@+
111
+ * @access private
112
+ * @see Crypt_AES::Crypt_AES()
113
+ */
114
+/**
115
+ * Toggles the internal implementation
116
+ */
117
+define('CRYPT_AES_MODE_INTERNAL', 1);
118
+/**
119
+ * Toggles the mcrypt implementation
120
+ */
121
+define('CRYPT_AES_MODE_MCRYPT', 2);
122
+/**#@-*/
123
+
124
+/**
125
+ * Pure-PHP implementation of AES.
126
+ *
127
+ * @author  Jim Wigginton <[email protected]>
128
+ * @version 0.1.0
129
+ * @access  public
130
+ * @package Crypt_AES
131
+ */
132
+class Crypt_AES extends Crypt_Rijndael {
133
+    /**
134
+     * mcrypt resource for encryption
135
+     *
136
+     * The mcrypt resource can be recreated every time something needs to be created or it can be created just once.
137
+     * Since mcrypt operates in continuous mode, by default, it'll need to be recreated when in non-continuous mode.
138
+     *
139
+     * @see Crypt_AES::encrypt()
140
+     * @var String
141
+     * @access private
142
+     */
143
+    var $enmcrypt;
144
+
145
+    /**
146
+     * mcrypt resource for decryption
147
+     *
148
+     * The mcrypt resource can be recreated every time something needs to be created or it can be created just once.
149
+     * Since mcrypt operates in continuous mode, by default, it'll need to be recreated when in non-continuous mode.
150
+     *
151
+     * @see Crypt_AES::decrypt()
152
+     * @var String
153
+     * @access private
154
+     */
155
+    var $demcrypt;
156
+
157
+    /**
158
+     * mcrypt resource for CFB mode
159
+     *
160
+     * @see Crypt_AES::encrypt()
161
+     * @see Crypt_AES::decrypt()
162
+     * @var String
163
+     * @access private
164
+     */
165
+    var $ecb;
166
+
167
+    /**
168
+     * Default Constructor.
169
+     *
170
+     * Determines whether or not the mcrypt extension should be used.  $mode should only, at present, be
171
+     * CRYPT_AES_MODE_ECB or CRYPT_AES_MODE_CBC.  If not explictly set, CRYPT_AES_MODE_CBC will be used.
172
+     *
173
+     * @param optional Integer $mode
174
+     * @return Crypt_AES
175
+     * @access public
176
+     */
177
+    function Crypt_AES($mode = CRYPT_AES_MODE_CBC)
178
+    {
179
+        if ( !defined('CRYPT_AES_MODE') ) {
180
+            switch (true) {
181
+                case extension_loaded('mcrypt'):
182
+                    // i'd check to see if aes was supported, by doing in_array('des', mcrypt_list_algorithms('')),
183
+                    // but since that can be changed after the object has been created, there doesn't seem to be
184
+                    // a lot of point...
185
+                    define('CRYPT_AES_MODE', CRYPT_AES_MODE_MCRYPT);
186
+                    break;
187
+                default:
188
+                    define('CRYPT_AES_MODE', CRYPT_AES_MODE_INTERNAL);
189
+            }
190
+        }
191
+
192
+        switch ( CRYPT_AES_MODE ) {
193
+            case CRYPT_AES_MODE_MCRYPT:
194
+                switch ($mode) {
195
+                    case CRYPT_AES_MODE_ECB:
196
+                        $this->paddable = true;
197
+                        $this->mode = MCRYPT_MODE_ECB;
198
+                        break;
199
+                    case CRYPT_AES_MODE_CTR:
200
+                        // ctr doesn't have a constant associated with it even though it appears to be fairly widely
201
+                        // supported.  in lieu of knowing just how widely supported it is, i've, for now, opted not to
202
+                        // include a compatibility layer.  the layer has been implemented but, for now, is commented out.
203
+                        $this->mode = 'ctr';
204
+                        //$this->mode = in_array('ctr', mcrypt_list_modes()) ? 'ctr' : CRYPT_AES_MODE_CTR;
205
+                        break;
206
+                    case CRYPT_AES_MODE_CFB:
207
+                        $this->mode = 'ncfb';
208
+                        break;
209
+                    case CRYPT_AES_MODE_OFB:
210
+                        $this->mode = MCRYPT_MODE_NOFB;
211
+                        break;
212
+                    case CRYPT_AES_MODE_CBC:
213
+                    default:
214
+                        $this->paddable = true;
215
+                        $this->mode = MCRYPT_MODE_CBC;
216
+                }
217
+
218
+                $this->debuffer = $this->enbuffer = '';
219
+
220
+                break;
221
+            default:
222
+                switch ($mode) {
223
+                    case CRYPT_AES_MODE_ECB:
224
+                        $this->paddable = true;
225
+                        $this->mode = CRYPT_RIJNDAEL_MODE_ECB;
226
+                        break;
227
+                    case CRYPT_AES_MODE_CTR:
228
+                        $this->mode = CRYPT_RIJNDAEL_MODE_CTR;
229
+                        break;
230
+                    case CRYPT_AES_MODE_CFB:
231
+                        $this->mode = CRYPT_RIJNDAEL_MODE_CFB;
232
+                        break;
233
+                    case CRYPT_AES_MODE_OFB:
234
+                        $this->mode = CRYPT_RIJNDAEL_MODE_OFB;
235
+                        break;
236
+                    case CRYPT_AES_MODE_CBC:
237
+                    default:
238
+                        $this->paddable = true;
239
+                        $this->mode = CRYPT_RIJNDAEL_MODE_CBC;
240
+                }
241
+        }
242
+
243
+        if (CRYPT_AES_MODE == CRYPT_AES_MODE_INTERNAL) {
244
+            parent::Crypt_Rijndael($this->mode);
245
+        }
246
+    }
247
+
248
+    /**
249
+     * Dummy function
250
+     *
251
+     * Since Crypt_AES extends Crypt_Rijndael, this function is, technically, available, but it doesn't do anything.
252
+     *
253
+     * @access public
254
+     * @param Integer $length
255
+     */
256
+    function setBlockLength($length)
257
+    {
258
+        return;
259
+    }
260
+
261
+    /**
262
+     * Encrypts a message.
263
+     *
264
+     * $plaintext will be padded with up to 16 additional bytes.  Other AES implementations may or may not pad in the
265
+     * same manner.  Other common approaches to padding and the reasons why it's necessary are discussed in the following
266
+     * URL:
267
+     *
268
+     * {@link http://www.di-mgt.com.au/cryptopad.html http://www.di-mgt.com.au/cryptopad.html}
269
+     *
270
+     * An alternative to padding is to, separately, send the length of the file.  This is what SSH, in fact, does.
271
+     * strlen($plaintext) will still need to be a multiple of 16, however, arbitrary values can be added to make it that
272
+     * length.
273
+     *
274
+     * @see Crypt_AES::decrypt()
275
+     * @access public
276
+     * @param String $plaintext
277
+     */
278
+    function encrypt($plaintext)
279
+    {
280
+        if ( CRYPT_AES_MODE == CRYPT_AES_MODE_MCRYPT ) {
281
+            $changed = $this->changed;
282
+            $this->_mcryptSetup();
283
+            /*
284
+            if ($this->mode == CRYPT_AES_MODE_CTR) {
285
+                $iv = $this->encryptIV;
286
+                $xor = mcrypt_generic($this->enmcrypt, $this->_generate_xor(strlen($plaintext), $iv));
287
+                $ciphertext = $plaintext ^ $xor;
288
+                if ($this->continuousBuffer) {
289
+                    $this->encryptIV = $iv;
290
+                }
291
+                return $ciphertext;
292
+            }
293
+            */
294
+            // re: http://phpseclib.sourceforge.net/cfb-demo.phps
295
+            // using mcrypt's default handing of CFB the above would output two different things.  using phpseclib's
296
+            // rewritten CFB implementation the above outputs the same thing twice.
297
+            if ($this->mode == 'ncfb') {
298
+                if ($changed) {
299
+                    $this->ecb = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');
300
+                    mcrypt_generic_init($this->ecb, $this->key, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");
301
+                }
302
+
303
+                if (strlen($this->enbuffer)) {
304
+                    $ciphertext = $plaintext ^ substr($this->encryptIV, strlen($this->enbuffer));
305
+                    $this->enbuffer.= $ciphertext;
306
+                    if (strlen($this->enbuffer) == 16) {
307
+                        $this->encryptIV = $this->enbuffer;
308
+                        $this->enbuffer = '';
309
+                        mcrypt_generic_init($this->enmcrypt, $this->key, $this->encryptIV);
310
+                    }
311
+                    $plaintext = substr($plaintext, strlen($ciphertext));
312
+                } else {
313
+                    $ciphertext = '';
314
+                }
315
+
316
+                $last_pos = strlen($plaintext) & 0xFFFFFFF0;
317
+                $ciphertext.= $last_pos ? mcrypt_generic($this->enmcrypt, substr($plaintext, 0, $last_pos)) : '';
318
+
319
+                if (strlen($plaintext) & 0xF) {
320
+                    if (strlen($ciphertext)) {
321
+                        $this->encryptIV = substr($ciphertext, -16);
322
+                    }
323
+                    $this->encryptIV = mcrypt_generic($this->ecb, $this->encryptIV);
324
+                    $this->enbuffer = substr($plaintext, $last_pos) ^ $this->encryptIV;
325
+                    $ciphertext.= $this->enbuffer;
326
+                }
327
+
328
+                return $ciphertext;
329
+            }
330
+
331
+            if ($this->paddable) {
332
+                $plaintext = $this->_pad($plaintext);
333
+            }
334
+
335
+            $ciphertext = mcrypt_generic($this->enmcrypt, $plaintext);
336
+
337
+            if (!$this->continuousBuffer) {
338
+                mcrypt_generic_init($this->enmcrypt, $this->key, $this->iv);
339
+            }
340
+
341
+            return $ciphertext;
342
+        }
343
+
344
+        return parent::encrypt($plaintext);
345
+    }
346
+
347
+    /**
348
+     * Decrypts a message.
349
+     *
350
+     * If strlen($ciphertext) is not a multiple of 16, null bytes will be added to the end of the string until it is.
351
+     *
352
+     * @see Crypt_AES::encrypt()
353
+     * @access public
354
+     * @param String $ciphertext
355
+     */
356
+    function decrypt($ciphertext)
357
+    {
358
+        if ( CRYPT_AES_MODE == CRYPT_AES_MODE_MCRYPT ) {
359
+            $changed = $this->changed;
360
+            $this->_mcryptSetup();
361
+            /*
362
+            if ($this->mode == CRYPT_AES_MODE_CTR) {
363
+                $iv = $this->decryptIV;
364
+                $xor = mcrypt_generic($this->enmcrypt, $this->_generate_xor(strlen($ciphertext), $iv));
365
+                $plaintext = $ciphertext ^ $xor;
366
+                if ($this->continuousBuffer) {
367
+                    $this->decryptIV = $iv;
368
+                }
369
+                return $plaintext;
370
+            }
371
+            */
372
+            if ($this->mode == 'ncfb') {
373
+                if ($changed) {
374
+                    $this->ecb = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');
375
+                    mcrypt_generic_init($this->ecb, $this->key, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");
376
+                }
377
+
378
+                if (strlen($this->debuffer)) {
379
+                    $plaintext = $ciphertext ^ substr($this->decryptIV, strlen($this->debuffer));
380
+
381
+                    $this->debuffer.= substr($ciphertext, 0, strlen($plaintext));
382
+                    if (strlen($this->debuffer) == 16) {
383
+                        $this->decryptIV = $this->debuffer;
384
+                        $this->debuffer = '';
385
+                        mcrypt_generic_init($this->demcrypt, $this->key, $this->decryptIV);
386
+                    }
387
+                    $ciphertext = substr($ciphertext, strlen($plaintext));
388
+                } else {
389
+                    $plaintext = '';
390
+                }
391
+
392
+                $last_pos = strlen($ciphertext) & 0xFFFFFFF0;
393
+                $plaintext.= $last_pos ? mdecrypt_generic($this->demcrypt, substr($ciphertext, 0, $last_pos)) : '';
394
+
395
+                if (strlen($ciphertext) & 0xF) {
396
+                    if (strlen($plaintext)) {
397
+                        $this->decryptIV = substr($ciphertext, $last_pos - 16, 16);
398
+                    }
399
+                    $this->decryptIV = mcrypt_generic($this->ecb, $this->decryptIV);
400
+                    $this->debuffer = substr($ciphertext, $last_pos);
401
+                    $plaintext.= $this->debuffer ^ $this->decryptIV;
402
+                }
403
+
404
+                return $plaintext;
405
+            }
406
+
407
+            if ($this->paddable) {
408
+                // we pad with chr(0) since that's what mcrypt_generic does.  to quote from http://php.net/function.mcrypt-generic :
409
+                // "The data is padded with "\0" to make sure the length of the data is n * blocksize."
410
+                $ciphertext = str_pad($ciphertext, (strlen($ciphertext) + 15) & 0xFFFFFFF0, chr(0));
411
+            }
412
+
413
+            $plaintext = mdecrypt_generic($this->demcrypt, $ciphertext);
414
+
415
+            if (!$this->continuousBuffer) {
416
+                mcrypt_generic_init($this->demcrypt, $this->key, $this->iv);
417
+            }
418
+
419
+            return $this->paddable ? $this->_unpad($plaintext) : $plaintext;
420
+        }
421
+
422
+        return parent::decrypt($ciphertext);
423
+    }
424
+
425
+    /**
426
+     * Setup mcrypt
427
+     *
428
+     * Validates all the variables.
429
+     *
430
+     * @access private
431
+     */
432
+    function _mcryptSetup()
433
+    {
434
+        if (!$this->changed) {
435
+            return;
436
+        }
437
+
438
+        if (!$this->explicit_key_length) {
439
+            // this just copied from Crypt_Rijndael::_setup()
440
+            $length = strlen($this->key) >> 2;
441
+            if ($length > 8) {
442
+                $length = 8;
443
+            } else if ($length < 4) {
444
+                $length = 4;
445
+            }
446
+            $this->Nk = $length;
447
+            $this->key_size = $length << 2;
448
+        }
449
+
450
+        switch ($this->Nk) {
451
+            case 4: // 128
452
+                $this->key_size = 16;
453
+                break;
454
+            case 5: // 160
455
+            case 6: // 192
456
+                $this->key_size = 24;
457
+                break;
458
+            case 7: // 224
459
+            case 8: // 256
460
+                $this->key_size = 32;
461
+        }
462
+
463
+        $this->key = str_pad(substr($this->key, 0, $this->key_size), $this->key_size, chr(0));
464
+        $this->encryptIV = $this->decryptIV = $this->iv = str_pad(substr($this->iv, 0, 16), 16, chr(0));
465
+
466
+        if (!isset($this->enmcrypt)) {
467
+            $mode = $this->mode;
468
+            //$mode = $this->mode == CRYPT_AES_MODE_CTR ? MCRYPT_MODE_ECB : $this->mode;
469
+
470
+            $this->demcrypt = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', $mode, '');
471
+            $this->enmcrypt = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', $mode, '');
472
+        } // else should mcrypt_generic_deinit be called?
473
+
474
+        mcrypt_generic_init($this->demcrypt, $this->key, $this->iv);
475
+        mcrypt_generic_init($this->enmcrypt, $this->key, $this->iv);
476
+
477
+        $this->changed = false;
478
+    }
479
+
480
+    /**
481
+     * Encrypts a block
482
+     *
483
+     * Optimized over Crypt_Rijndael's implementation by means of loop unrolling.
484
+     *
485
+     * @see Crypt_Rijndael::_encryptBlock()
486
+     * @access private
487
+     * @param String $in
488
+     * @return String
489
+     */
490
+    function _encryptBlock($in)
491
+    {
492
+        $state = unpack('N*word', $in);
493
+
494
+        $Nr = $this->Nr;
495
+        $w = $this->w;
496
+        $t0 = $this->t0;
497
+        $t1 = $this->t1;
498
+        $t2 = $this->t2;
499
+        $t3 = $this->t3;
500
+
501
+        // addRoundKey and reindex $state
502
+        $state = array(
503
+            $state['word1'] ^ $w[0][0],
504
+            $state['word2'] ^ $w[0][1],
505
+            $state['word3'] ^ $w[0][2],
506
+            $state['word4'] ^ $w[0][3]
507
+        );
508
+
509
+        // shiftRows + subWord + mixColumns + addRoundKey
510
+        // we could loop unroll this and use if statements to do more rounds as necessary, but, in my tests, that yields
511
+        // only a marginal improvement.  since that also, imho, hinders the readability of the code, i've opted not to do it.
512
+        for ($round = 1; $round < $this->Nr; $round++) {
513
+            $state = array(
514
+                $t0[$state[0] & 0xFF000000] ^ $t1[$state[1] & 0x00FF0000] ^ $t2[$state[2] & 0x0000FF00] ^ $t3[$state[3] & 0x000000FF] ^ $w[$round][0],
515
+                $t0[$state[1] & 0xFF000000] ^ $t1[$state[2] & 0x00FF0000] ^ $t2[$state[3] & 0x0000FF00] ^ $t3[$state[0] & 0x000000FF] ^ $w[$round][1],
516
+                $t0[$state[2] & 0xFF000000] ^ $t1[$state[3] & 0x00FF0000] ^ $t2[$state[0] & 0x0000FF00] ^ $t3[$state[1] & 0x000000FF] ^ $w[$round][2],
517
+                $t0[$state[3] & 0xFF000000] ^ $t1[$state[0] & 0x00FF0000] ^ $t2[$state[1] & 0x0000FF00] ^ $t3[$state[2] & 0x000000FF] ^ $w[$round][3]
518
+            );
519
+
520
+        }
521
+
522
+        // subWord
523
+        $state = array(
524
+            $this->_subWord($state[0]),
525
+            $this->_subWord($state[1]),
526
+            $this->_subWord($state[2]),
527
+            $this->_subWord($state[3])
528
+        );
529
+
530
+        // shiftRows + addRoundKey
531
+        $state = array(
532
+            ($state[0] & 0xFF000000) ^ ($state[1] & 0x00FF0000) ^ ($state[2] & 0x0000FF00) ^ ($state[3] & 0x000000FF) ^ $this->w[$this->Nr][0],
533
+            ($state[1] & 0xFF000000) ^ ($state[2] & 0x00FF0000) ^ ($state[3] & 0x0000FF00) ^ ($state[0] & 0x000000FF) ^ $this->w[$this->Nr][1],
534
+            ($state[2] & 0xFF000000) ^ ($state[3] & 0x00FF0000) ^ ($state[0] & 0x0000FF00) ^ ($state[1] & 0x000000FF) ^ $this->w[$this->Nr][2],
535
+            ($state[3] & 0xFF000000) ^ ($state[0] & 0x00FF0000) ^ ($state[1] & 0x0000FF00) ^ ($state[2] & 0x000000FF) ^ $this->w[$this->Nr][3]
536
+        );
537
+
538
+        return pack('N*', $state[0], $state[1], $state[2], $state[3]);
539
+    }
540
+
541
+    /**
542
+     * Decrypts a block
543
+     *
544
+     * Optimized over Crypt_Rijndael's implementation by means of loop unrolling.
545
+     *
546
+     * @see Crypt_Rijndael::_decryptBlock()
547
+     * @access private
548
+     * @param String $in
549
+     * @return String
550
+     */
551
+    function _decryptBlock($in)
552
+    {
553
+        $state = unpack('N*word', $in);
554
+
555
+        $Nr = $this->Nr;
556
+        $dw = $this->dw;
557
+        $dt0 = $this->dt0;
558
+        $dt1 = $this->dt1;
559
+        $dt2 = $this->dt2;
560
+        $dt3 = $this->dt3;
561
+
562
+        // addRoundKey and reindex $state
563
+        $state = array(
564
+            $state['word1'] ^ $dw[$this->Nr][0],
565
+            $state['word2'] ^ $dw[$this->Nr][1],
566
+            $state['word3'] ^ $dw[$this->Nr][2],
567
+            $state['word4'] ^ $dw[$this->Nr][3]
568
+        );
569
+
570
+
571
+        // invShiftRows + invSubBytes + invMixColumns + addRoundKey
572
+        for ($round = $this->Nr - 1; $round > 0; $round--) {
573
+            $state = array(
574
+                $dt0[$state[0] & 0xFF000000] ^ $dt1[$state[3] & 0x00FF0000] ^ $dt2[$state[2] & 0x0000FF00] ^ $dt3[$state[1] & 0x000000FF] ^ $dw[$round][0],
575
+                $dt0[$state[1] & 0xFF000000] ^ $dt1[$state[0] & 0x00FF0000] ^ $dt2[$state[3] & 0x0000FF00] ^ $dt3[$state[2] & 0x000000FF] ^ $dw[$round][1],
576
+                $dt0[$state[2] & 0xFF000000] ^ $dt1[$state[1] & 0x00FF0000] ^ $dt2[$state[0] & 0x0000FF00] ^ $dt3[$state[3] & 0x000000FF] ^ $dw[$round][2],
577
+                $dt0[$state[3] & 0xFF000000] ^ $dt1[$state[2] & 0x00FF0000] ^ $dt2[$state[1] & 0x0000FF00] ^ $dt3[$state[0] & 0x000000FF] ^ $dw[$round][3]
578
+            );
579
+        }
580
+
581
+        // invShiftRows + invSubWord + addRoundKey
582
+        $state = array(
583
+            $this->_invSubWord(($state[0] & 0xFF000000) ^ ($state[3] & 0x00FF0000) ^ ($state[2] & 0x0000FF00) ^ ($state[1] & 0x000000FF)) ^ $dw[0][0],
584
+            $this->_invSubWord(($state[1] & 0xFF000000) ^ ($state[0] & 0x00FF0000) ^ ($state[3] & 0x0000FF00) ^ ($state[2] & 0x000000FF)) ^ $dw[0][1],
585
+            $this->_invSubWord(($state[2] & 0xFF000000) ^ ($state[1] & 0x00FF0000) ^ ($state[0] & 0x0000FF00) ^ ($state[3] & 0x000000FF)) ^ $dw[0][2],
586
+            $this->_invSubWord(($state[3] & 0xFF000000) ^ ($state[2] & 0x00FF0000) ^ ($state[1] & 0x0000FF00) ^ ($state[0] & 0x000000FF)) ^ $dw[0][3]
587
+        );
588
+
589
+        return pack('N*', $state[0], $state[1], $state[2], $state[3]);
590
+    }
591
+}
592
+
593
+// vim: ts=4:sw=4:et:
594
+// vim6: fdl=1:
0 595
\ No newline at end of file
... ...
@@ -0,0 +1,1245 @@
1
+<?php
2
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
3
+
4
+/**
5
+ * Pure-PHP implementation of DES.
6
+ *
7
+ * Uses mcrypt, if available, and an internal implementation, otherwise.
8
+ *
9
+ * PHP versions 4 and 5
10
+ *
11
+ * Useful resources are as follows:
12
+ *
13
+ *  - {@link http://en.wikipedia.org/wiki/DES_supplementary_material Wikipedia: DES supplementary material}
14
+ *  - {@link http://www.itl.nist.gov/fipspubs/fip46-2.htm FIPS 46-2 - (DES), Data Encryption Standard}
15
+ *  - {@link http://www.cs.eku.edu/faculty/styer/460/Encrypt/JS-DES.html JavaScript DES Example}
16
+ *
17
+ * Here's a short example of how to use this library:
18
+ * <code>
19
+ * <?php
20
+ *    include('Crypt/DES.php');
21
+ *
22
+ *    $des = new Crypt_DES();
23
+ *
24
+ *    $des->setKey('abcdefgh');
25
+ *
26
+ *    $size = 10 * 1024;
27
+ *    $plaintext = '';
28
+ *    for ($i = 0; $i < $size; $i++) {
29
+ *        $plaintext.= 'a';
30
+ *    }
31
+ *
32
+ *    echo $des->decrypt($des->encrypt($plaintext));
33
+ * ?>
34
+ * </code>
35
+ *
36
+ * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy
37
+ * of this software and associated documentation files (the "Software"), to deal
38
+ * in the Software without restriction, including without limitation the rights
39
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
40
+ * copies of the Software, and to permit persons to whom the Software is
41
+ * furnished to do so, subject to the following conditions:
42
+ * 
43
+ * The above copyright notice and this permission notice shall be included in
44
+ * all copies or substantial portions of the Software.
45
+ * 
46
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
47
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
48
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
49
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
50
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
51
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
52
+ * THE SOFTWARE.
53
+ *
54
+ * @category   Crypt
55
+ * @package    Crypt_DES
56
+ * @author     Jim Wigginton <[email protected]>
57
+ * @copyright  MMVII Jim Wigginton
58
+ * @license    http://www.opensource.org/licenses/mit-license.html  MIT License
59
+ * @version    $Id: DES.php,v 1.12 2010/02/09 06:10:26 terrafrost Exp $
60
+ * @link       http://phpseclib.sourceforge.net
61
+ */
62
+
63
+/**#@+
64
+ * @access private
65
+ * @see Crypt_DES::_prepareKey()
66
+ * @see Crypt_DES::_processBlock()
67
+ */
68
+/**
69
+ * Contains array_reverse($keys[CRYPT_DES_DECRYPT])
70
+ */
71
+define('CRYPT_DES_ENCRYPT', 0);
72
+/**
73
+ * Contains array_reverse($keys[CRYPT_DES_ENCRYPT])
74
+ */
75
+define('CRYPT_DES_DECRYPT', 1);
76
+/**#@-*/
77
+
78
+/**#@+
79
+ * @access public
80
+ * @see Crypt_DES::encrypt()
81
+ * @see Crypt_DES::decrypt()
82
+ */
83
+/**
84
+ * Encrypt / decrypt using the Counter mode.
85
+ *
86
+ * Set to -1 since that's what Crypt/Random.php uses to index the CTR mode.
87
+ *
88
+ * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29
89
+ */
90
+define('CRYPT_DES_MODE_CTR', -1);
91
+/**
92
+ * Encrypt / decrypt using the Electronic Code Book mode.
93
+ *
94
+ * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29
95
+ */
96
+define('CRYPT_DES_MODE_ECB', 1);
97
+/**
98
+ * Encrypt / decrypt using the Code Book Chaining mode.
99
+ *
100
+ * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29
101
+ */
102
+define('CRYPT_DES_MODE_CBC', 2);
103
+/**
104
+ * Encrypt / decrypt using the Cipher Feedback mode.
105
+ *
106
+ * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29
107
+ */
108
+define('CRYPT_DES_MODE_CFB', 3);
109
+/**
110
+ * Encrypt / decrypt using the Cipher Feedback mode.
111
+ *
112
+ * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29
113
+ */
114
+define('CRYPT_DES_MODE_OFB', 4);
115
+/**#@-*/
116
+
117
+/**#@+
118
+ * @access private
119
+ * @see Crypt_DES::Crypt_DES()
120
+ */
121
+/**
122
+ * Toggles the internal implementation
123
+ */
124
+define('CRYPT_DES_MODE_INTERNAL', 1);
125
+/**
126
+ * Toggles the mcrypt implementation
127
+ */
128
+define('CRYPT_DES_MODE_MCRYPT', 2);
129
+/**#@-*/
130
+
131
+/**
132
+ * Pure-PHP implementation of DES.
133
+ *
134
+ * @author  Jim Wigginton <[email protected]>
135
+ * @version 0.1.0
136
+ * @access  public
137
+ * @package Crypt_DES
138
+ */
139
+class Crypt_DES {
140
+    /**
141
+     * The Key Schedule
142
+     *
143
+     * @see Crypt_DES::setKey()
144
+     * @var Array
145
+     * @access private
146
+     */
147
+    var $keys = "\0\0\0\0\0\0\0\0";
148
+
149
+    /**
150
+     * The Encryption Mode
151
+     *
152
+     * @see Crypt_DES::Crypt_DES()
153
+     * @var Integer
154
+     * @access private
155
+     */
156
+    var $mode;
157
+
158
+    /**
159
+     * Continuous Buffer status
160
+     *
161
+     * @see Crypt_DES::enableContinuousBuffer()
162
+     * @var Boolean
163
+     * @access private
164
+     */
165
+    var $continuousBuffer = false;
166
+
167
+    /**
168
+     * Padding status
169
+     *
170
+     * @see Crypt_DES::enablePadding()
171
+     * @var Boolean
172
+     * @access private
173
+     */
174
+    var $padding = true;
175
+
176
+    /**
177
+     * The Initialization Vector
178
+     *
179
+     * @see Crypt_DES::setIV()
180
+     * @var String
181
+     * @access private
182
+     */
183
+    var $iv = "\0\0\0\0\0\0\0\0";
184
+
185
+    /**
186
+     * A "sliding" Initialization Vector
187
+     *
188
+     * @see Crypt_DES::enableContinuousBuffer()
189
+     * @var String
190
+     * @access private
191
+     */
192
+    var $encryptIV = "\0\0\0\0\0\0\0\0";
193
+
194
+    /**
195
+     * A "sliding" Initialization Vector
196
+     *
197
+     * @see Crypt_DES::enableContinuousBuffer()
198
+     * @var String
199
+     * @access private
200
+     */
201
+    var $decryptIV = "\0\0\0\0\0\0\0\0";
202
+
203
+    /**
204
+     * mcrypt resource for encryption
205
+     *
206
+     * The mcrypt resource can be recreated every time something needs to be created or it can be created just once.
207
+     * Since mcrypt operates in continuous mode, by default, it'll need to be recreated when in non-continuous mode.
208
+     *
209
+     * @see Crypt_DES::encrypt()
210
+     * @var String
211
+     * @access private
212
+     */
213
+    var $enmcrypt;
214
+
215
+    /**
216
+     * mcrypt resource for decryption
217
+     *
218
+     * The mcrypt resource can be recreated every time something needs to be created or it can be created just once.
219
+     * Since mcrypt operates in continuous mode, by default, it'll need to be recreated when in non-continuous mode.
220
+     *
221
+     * @see Crypt_DES::decrypt()
222
+     * @var String
223
+     * @access private
224
+     */
225
+    var $demcrypt;
226
+
227
+    /**
228
+     * Does the enmcrypt resource need to be (re)initialized?
229
+     *
230
+     * @see Crypt_DES::setKey()
231
+     * @see Crypt_DES::setIV()
232
+     * @var Boolean
233
+     * @access private
234
+     */
235
+    var $enchanged = true;
236
+
237
+    /**
238
+     * Does the demcrypt resource need to be (re)initialized?
239
+     *
240
+     * @see Crypt_DES::setKey()
241
+     * @see Crypt_DES::setIV()
242
+     * @var Boolean
243
+     * @access private
244
+     */
245
+    var $dechanged = true;
246
+
247
+    /**
248
+     * Is the mode one that is paddable?
249
+     *
250
+     * @see Crypt_DES::Crypt_DES()
251
+     * @var Boolean
252
+     * @access private
253
+     */
254
+    var $paddable = false;
255
+
256
+    /**
257
+     * Encryption buffer for CTR, OFB and CFB modes
258
+     *
259
+     * @see Crypt_DES::encrypt()
260
+     * @var String
261
+     * @access private
262
+     */
263
+    var $enbuffer = '';
264
+
265
+    /**
266
+     * Decryption buffer for CTR, OFB and CFB modes
267
+     *
268
+     * @see Crypt_DES::decrypt()
269
+     * @var String
270
+     * @access private
271
+     */
272
+    var $debuffer = '';
273
+
274
+    /**
275
+     * mcrypt resource for CFB mode
276
+     *
277
+     * @see Crypt_DES::encrypt()
278
+     * @see Crypt_DES::decrypt()
279
+     * @var String
280
+     * @access private
281
+     */
282
+    var $ecb;
283
+
284
+    /**
285
+     * Default Constructor.
286
+     *
287
+     * Determines whether or not the mcrypt extension should be used.  $mode should only, at present, be
288
+     * CRYPT_DES_MODE_ECB or CRYPT_DES_MODE_CBC.  If not explictly set, CRYPT_DES_MODE_CBC will be used.
289
+     *
290
+     * @param optional Integer $mode
291
+     * @return Crypt_DES
292
+     * @access public
293
+     */
294
+    function Crypt_DES($mode = CRYPT_MODE_DES_CBC)
295
+    {
296
+        if ( !defined('CRYPT_DES_MODE') ) {
297
+            switch (true) {
298
+                case extension_loaded('mcrypt'):
299
+                    // i'd check to see if des was supported, by doing in_array('des', mcrypt_list_algorithms('')),
300
+                    // but since that can be changed after the object has been created, there doesn't seem to be
301
+                    // a lot of point...
302
+                    define('CRYPT_DES_MODE', CRYPT_DES_MODE_MCRYPT);
303
+                    break;
304
+                default:
305
+                    define('CRYPT_DES_MODE', CRYPT_DES_MODE_INTERNAL);
306
+            }
307
+        }
308
+
309
+        switch ( CRYPT_DES_MODE ) {
310
+            case CRYPT_DES_MODE_MCRYPT:
311
+                switch ($mode) {
312
+                    case CRYPT_DES_MODE_ECB:
313
+                        $this->paddable = true;
314
+                        $this->mode = MCRYPT_MODE_ECB;
315
+                        break;
316
+                    case CRYPT_DES_MODE_CTR:
317
+                        $this->mode = 'ctr';
318
+                        //$this->mode = in_array('ctr', mcrypt_list_modes()) ? 'ctr' : CRYPT_DES_MODE_CTR;
319
+                        break;
320
+                    case CRYPT_DES_MODE_CFB:
321
+                        $this->mode = 'ncfb';
322
+                        break;
323
+                    case CRYPT_DES_MODE_OFB:
324
+                        $this->mode = MCRYPT_MODE_NOFB;
325
+                        break;
326
+                    case CRYPT_DES_MODE_CBC:
327
+                    default:
328
+                        $this->paddable = true;
329
+                        $this->mode = MCRYPT_MODE_CBC;
330
+                }
331
+
332
+                break;
333
+            default:
334
+                switch ($mode) {
335
+                    case CRYPT_DES_MODE_ECB:
336
+                    case CRYPT_DES_MODE_CBC:
337
+                        $this->paddable = true;
338
+                        $this->mode = $mode;
339
+                        break;
340
+                    case CRYPT_DES_MODE_CTR:
341
+                    case CRYPT_DES_MODE_CFB:
342
+                    case CRYPT_DES_MODE_OFB:
343
+                        $this->mode = $mode;
344
+                        break;
345
+                    default:
346
+                        $this->paddable = true;
347
+                        $this->mode = CRYPT_DES_MODE_CBC;
348
+                }
349
+        }
350
+    }
351
+
352
+    /**
353
+     * Sets the key.
354
+     *
355
+     * Keys can be of any length.  DES, itself, uses 64-bit keys (eg. strlen($key) == 8), however, we
356
+     * only use the first eight, if $key has more then eight characters in it, and pad $key with the
357
+     * null byte if it is less then eight characters long.
358
+     *
359
+     * DES also requires that every eighth bit be a parity bit, however, we'll ignore that.
360
+     *
361
+     * If the key is not explicitly set, it'll be assumed to be all zero's.
362
+     *
363
+     * @access public
364
+     * @param String $key
365
+     */
366
+    function setKey($key)
367
+    {
368
+        $this->keys = ( CRYPT_DES_MODE == CRYPT_DES_MODE_MCRYPT ) ? str_pad(substr($key, 0, 8), 8, chr(0)) : $this->_prepareKey($key);
369
+        $this->changed = true;
370
+    }
371
+
372
+    /**
373
+     * Sets the initialization vector. (optional)
374
+     *
375
+     * SetIV is not required when CRYPT_DES_MODE_ECB is being used.  If not explictly set, it'll be assumed
376
+     * to be all zero's.
377
+     *
378
+     * @access public
379
+     * @param String $iv
380
+     */
381
+    function setIV($iv)
382
+    {
383
+        $this->encryptIV = $this->decryptIV = $this->iv = str_pad(substr($iv, 0, 8), 8, chr(0));
384
+        $this->changed = true;
385
+    }
386
+
387
+    /**
388
+     * Generate CTR XOR encryption key
389
+     *
390
+     * Encrypt the output of this and XOR it against the ciphertext / plaintext to get the
391
+     * plaintext / ciphertext in CTR mode.
392
+     *
393
+     * @see Crypt_DES::decrypt()
394
+     * @see Crypt_DES::encrypt()
395
+     * @access public
396
+     * @param Integer $length
397
+     * @param String $iv
398
+     */
399
+    function _generate_xor($length, &$iv)
400
+    {
401
+        $xor = '';
402
+        $num_blocks = ($length + 7) >> 3;
403
+        for ($i = 0; $i < $num_blocks; $i++) {
404
+            $xor.= $iv;
405
+            for ($j = 4; $j <= 8; $j+=4) {
406
+                $temp = substr($iv, -$j, 4);
407
+                switch ($temp) {
408
+                    case "\xFF\xFF\xFF\xFF":
409
+                        $iv = substr_replace($iv, "\x00\x00\x00\x00", -$j, 4);
410
+                        break;
411
+                    case "\x7F\xFF\xFF\xFF":
412
+                        $iv = substr_replace($iv, "\x80\x00\x00\x00", -$j, 4);
413
+                        break 2;
414
+                    default:
415
+                        extract(unpack('Ncount', $temp));
416
+                        $iv = substr_replace($iv, pack('N', $count + 1), -$j, 4);
417
+                        break 2;
418
+                }
419
+            }
420
+        }
421
+
422
+        return $xor;
423
+    }
424
+
425
+    /**
426
+     * Encrypts a message.
427
+     *
428
+     * $plaintext will be padded with up to 8 additional bytes.  Other DES implementations may or may not pad in the
429
+     * same manner.  Other common approaches to padding and the reasons why it's necessary are discussed in the following
430
+     * URL:
431
+     *
432
+     * {@link http://www.di-mgt.com.au/cryptopad.html http://www.di-mgt.com.au/cryptopad.html}
433
+     *
434
+     * An alternative to padding is to, separately, send the length of the file.  This is what SSH, in fact, does.
435
+     * strlen($plaintext) will still need to be a multiple of 8, however, arbitrary values can be added to make it that
436
+     * length.
437
+     *
438
+     * @see Crypt_DES::decrypt()
439
+     * @access public
440
+     * @param String $plaintext
441
+     */
442
+    function encrypt($plaintext)
443
+    {
444
+        if ($this->paddable) {
445
+            $plaintext = $this->_pad($plaintext);
446
+        }
447
+
448
+        if ( CRYPT_DES_MODE == CRYPT_DES_MODE_MCRYPT ) {
449
+            if ($this->enchanged) {
450
+                if (!isset($this->enmcrypt)) {
451
+                    $this->enmcrypt = mcrypt_module_open(MCRYPT_DES, '', $this->mode, '');
452
+                }
453
+                mcrypt_generic_init($this->enmcrypt, $this->keys, $this->encryptIV);
454
+                if ($this->mode != 'ncfb') {
455
+                    $this->enchanged = false;
456
+                }
457
+            }
458
+
459
+            if ($this->mode != 'ncfb') {
460
+                $ciphertext = mcrypt_generic($this->enmcrypt, $plaintext);
461
+            } else {
462
+                if ($this->enchanged) {
463
+                    $this->ecb = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, '');
464
+                    mcrypt_generic_init($this->ecb, $this->keys, "\0\0\0\0\0\0\0\0");
465
+                    $this->enchanged = false;
466
+                }
467
+
468
+                if (strlen($this->enbuffer)) {
469
+                    $ciphertext = $plaintext ^ substr($this->encryptIV, strlen($this->enbuffer));
470
+                    $this->enbuffer.= $ciphertext;
471
+                    if (strlen($this->enbuffer) == 8) {
472
+                        $this->encryptIV = $this->enbuffer;
473
+                        $this->enbuffer = '';
474
+                        mcrypt_generic_init($this->enmcrypt, $this->keys, $this->encryptIV);
475
+                    }
476
+                    $plaintext = substr($plaintext, strlen($ciphertext));
477
+                } else {
478
+                    $ciphertext = '';
479
+                }
480
+
481
+                $last_pos = strlen($plaintext) & 0xFFFFFFF8;
482
+                $ciphertext.= $last_pos ? mcrypt_generic($this->enmcrypt, substr($plaintext, 0, $last_pos)) : '';
483
+
484
+                if (strlen($plaintext) & 0x7) {
485
+                    if (strlen($ciphertext)) {
486
+                        $this->encryptIV = substr($ciphertext, -8);
487
+                    }
488
+                    $this->encryptIV = mcrypt_generic($this->ecb, $this->encryptIV);
489
+                    $this->enbuffer = substr($plaintext, $last_pos) ^ $this->encryptIV;
490
+                    $ciphertext.= $this->enbuffer;
491
+                }
492
+            }
493
+
494
+            if (!$this->continuousBuffer) {
495
+                mcrypt_generic_init($this->enmcrypt, $this->keys, $this->encryptIV);
496
+            }
497
+
498
+            return $ciphertext;
499
+        }
500
+
501
+        if (!is_array($this->keys)) {
502
+            $this->keys = $this->_prepareKey("\0\0\0\0\0\0\0\0");
503
+        }
504
+
505
+        $buffer = &$this->enbuffer;
506
+        $continuousBuffer = $this->continuousBuffer;
507
+        $ciphertext = '';
508
+        switch ($this->mode) {
509
+            case CRYPT_DES_MODE_ECB:
510
+                for ($i = 0; $i < strlen($plaintext); $i+=8) {
511
+                    $ciphertext.= $this->_processBlock(substr($plaintext, $i, 8), CRYPT_DES_ENCRYPT);
512
+                }
513
+                break;
514
+            case CRYPT_DES_MODE_CBC:
515
+                $xor = $this->encryptIV;
516
+                for ($i = 0; $i < strlen($plaintext); $i+=8) {
517
+                    $block = substr($plaintext, $i, 8);
518
+                    $block = $this->_processBlock($block ^ $xor, CRYPT_DES_ENCRYPT);
519
+                    $xor = $block;
520
+                    $ciphertext.= $block;
521
+                }
522
+                if ($this->continuousBuffer) {
523
+                    $this->encryptIV = $xor;
524
+                }
525
+                break;
526
+            case CRYPT_DES_MODE_CTR:
527
+                $xor = $this->encryptIV;
528
+                if (strlen($buffer)) {
529
+                    for ($i = 0; $i < strlen($plaintext); $i+=8) {
530
+                        $block = substr($plaintext, $i, 8);
531
+                        $buffer.= $this->_processBlock($this->_generate_xor(8, $xor), CRYPT_DES_ENCRYPT);
532
+                        $key = $this->_string_shift($buffer, 8);
533
+                        $ciphertext.= $block ^ $key;
534
+                    }
535
+                } else {
536
+                    for ($i = 0; $i < strlen($plaintext); $i+=8) {
537
+                        $block = substr($plaintext, $i, 8);
538
+                        $key = $this->_processBlock($this->_generate_xor(8, $xor), CRYPT_DES_ENCRYPT);
539
+                        $ciphertext.= $block ^ $key;
540
+                    }
541
+                }
542
+                if ($this->continuousBuffer) {
543
+                    $this->encryptIV = $xor;
544
+                    if ($start = strlen($plaintext) & 7) {
545
+                        $buffer = substr($key, $start) . $buffer;
546
+                    }
547
+                }
548
+                break;
549
+            case CRYPT_DES_MODE_CFB:
550
+                if (!empty($buffer['xor'])) {
551
+                    $ciphertext = $plaintext ^ $buffer['xor'];
552
+                    $iv = $buffer['encrypted'] . $ciphertext;
553
+                    $start = strlen($ciphertext);
554
+                    $buffer['encrypted'].= $ciphertext;
555
+                    $buffer['xor'] = substr($buffer['xor'], strlen($ciphertext));
556
+                } else {
557
+                    $ciphertext = '';
558
+                    $iv = $this->encryptIV;
559
+                    $start = 0;
560
+                }
561
+
562
+                for ($i = $start; $i < strlen($plaintext); $i+=8) {
563
+                    $block = substr($plaintext, $i, 8);
564
+                    $xor = $this->_processBlock($iv, CRYPT_DES_ENCRYPT);
565
+                    $iv = $block ^ $xor;
566
+                    if ($continuousBuffer && strlen($iv) != 8) {
567
+                        $buffer = array(
568
+                            'encrypted' => $iv,
569
+                            'xor' => substr($xor, strlen($iv))
570
+                        );
571
+                    }
572
+                    $ciphertext.= $iv;
573
+                }
574
+
575
+                if ($this->continuousBuffer) {
576
+                    $this->encryptIV = $iv;
577
+                }
578
+                break;
579
+            case CRYPT_DES_MODE_OFB:
580
+                $xor = $this->encryptIV;
581
+                if (strlen($buffer)) {
582
+                    for ($i = 0; $i < strlen($plaintext); $i+=8) {
583
+                        $xor = $this->_processBlock($xor, CRYPT_DES_ENCRYPT);
584
+                        $buffer.= $xor;
585
+                        $key = $this->_string_shift($buffer, 8);
586
+                        $ciphertext.= substr($plaintext, $i, 8) ^ $key;
587
+                    }
588
+                } else {
589
+                    for ($i = 0; $i < strlen($plaintext); $i+=8) {
590
+                        $xor = $this->_processBlock($xor, CRYPT_DES_ENCRYPT);
591
+                        $ciphertext.= substr($plaintext, $i, 8) ^ $xor;
592
+                    }
593
+                    $key = $xor;
594
+                }
595
+                if ($this->continuousBuffer) {
596
+                    $this->encryptIV = $xor;
597
+                    if ($start = strlen($plaintext) & 7) {
598
+                         $buffer = substr($key, $start) . $buffer;
599
+                    }
600
+                }
601
+        }
602
+
603
+        return $ciphertext;
604
+    }
605
+
606
+    /**
607
+     * Decrypts a message.
608
+     *
609
+     * If strlen($ciphertext) is not a multiple of 8, null bytes will be added to the end of the string until it is.
610
+     *
611
+     * @see Crypt_DES::encrypt()
612
+     * @access public
613
+     * @param String $ciphertext
614
+     */
615
+    function decrypt($ciphertext)
616
+    {
617
+        if ($this->paddable) {
618
+            // we pad with chr(0) since that's what mcrypt_generic does.  to quote from http://php.net/function.mcrypt-generic :
619
+            // "The data is padded with "\0" to make sure the length of the data is n * blocksize."
620
+            $ciphertext = str_pad($ciphertext, (strlen($ciphertext) + 7) & 0xFFFFFFF8, chr(0));
621
+        }
622
+
623
+        if ( CRYPT_DES_MODE == CRYPT_DES_MODE_MCRYPT ) {
624
+            if ($this->dechanged) {
625
+                if (!isset($this->demcrypt)) {
626
+                    $this->demcrypt = mcrypt_module_open(MCRYPT_DES, '', $this->mode, '');
627
+                }
628
+                mcrypt_generic_init($this->demcrypt, $this->keys, $this->decryptIV);
629
+                if ($this->mode != 'ncfb') {
630
+                    $this->dechanged = false;
631
+                }
632
+            }
633
+
634
+            if ($this->mode != 'ncfb') {
635
+                $plaintext = mdecrypt_generic($this->demcrypt, $ciphertext);
636
+            } else {
637
+                if ($this->dechanged) {
638
+                    $this->ecb = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, '');
639
+                    mcrypt_generic_init($this->ecb, $this->keys, "\0\0\0\0\0\0\0\0");
640
+                    $this->dechanged = false;
641
+                }
642
+
643
+                if (strlen($this->debuffer)) {
644
+                    $plaintext = $ciphertext ^ substr($this->decryptIV, strlen($this->debuffer));
645
+
646
+                    $this->debuffer.= substr($ciphertext, 0, strlen($plaintext));
647
+                    if (strlen($this->debuffer) == 8) {
648
+                        $this->decryptIV = $this->debuffer;
649
+                        $this->debuffer = '';
650
+                        mcrypt_generic_init($this->demcrypt, $this->keys, $this->decryptIV);
651
+                    }
652
+                    $ciphertext = substr($ciphertext, strlen($plaintext));
653
+                } else {
654
+                    $plaintext = '';
655
+                }
656
+
657
+                $last_pos = strlen($ciphertext) & 0xFFFFFFF8;
658
+                $plaintext.= $last_pos ? mdecrypt_generic($this->demcrypt, substr($ciphertext, 0, $last_pos)) : '';
659
+
660
+                if (strlen($ciphertext) & 0x7) {
661
+                    if (strlen($plaintext)) {
662
+                        $this->decryptIV = substr($ciphertext, $last_pos - 8, 8);
663
+                    }
664
+                    $this->decryptIV = mcrypt_generic($this->ecb, $this->decryptIV);
665
+                    $this->debuffer = substr($ciphertext, $last_pos);
666
+                    $plaintext.= $this->debuffer ^ $this->decryptIV;
667
+                }
668
+
669
+                return $plaintext;
670
+            }
671
+
672
+            if (!$this->continuousBuffer) {
673
+                mcrypt_generic_init($this->demcrypt, $this->keys, $this->decryptIV);
674
+            }
675
+
676
+            return $this->mode != 'ctr' ? $this->_unpad($plaintext) : $plaintext;
677
+        }
678
+
679
+        if (!is_array($this->keys)) {
680
+            $this->keys = $this->_prepareKey("\0\0\0\0\0\0\0\0");
681
+        }
682
+
683
+        $buffer = &$this->debuffer;
684
+        $continuousBuffer = $this->continuousBuffer;
685
+        $plaintext = '';
686
+        switch ($this->mode) {
687
+            case CRYPT_DES_MODE_ECB:
688
+                for ($i = 0; $i < strlen($ciphertext); $i+=8) {
689
+                    $plaintext.= $this->_processBlock(substr($ciphertext, $i, 8), CRYPT_DES_DECRYPT);
690
+                }
691
+                break;
692
+            case CRYPT_DES_MODE_CBC:
693
+                $xor = $this->decryptIV;
694
+                for ($i = 0; $i < strlen($ciphertext); $i+=8) {
695
+                    $block = substr($ciphertext, $i, 8);
696
+                    $plaintext.= $this->_processBlock($block, CRYPT_DES_DECRYPT) ^ $xor;
697
+                    $xor = $block;
698
+                }
699
+                if ($this->continuousBuffer) {
700
+                    $this->decryptIV = $xor;
701
+                }
702
+                break;
703
+            case CRYPT_DES_MODE_CTR:
704
+                $xor = $this->decryptIV;
705
+                if (strlen($buffer)) {
706
+                    for ($i = 0; $i < strlen($ciphertext); $i+=8) {
707
+                        $block = substr($ciphertext, $i, 8);
708
+                        $buffer.= $this->_processBlock($this->_generate_xor(8, $xor), CRYPT_DES_ENCRYPT);
709
+                        $key = $this->_string_shift($buffer, 8);
710
+                        $plaintext.= $block ^ $key;
711
+                    }
712
+                } else {
713
+                    for ($i = 0; $i < strlen($ciphertext); $i+=8) {
714
+                        $block = substr($ciphertext, $i, 8);
715
+                        $key = $this->_processBlock($this->_generate_xor(8, $xor), CRYPT_DES_ENCRYPT);
716
+                        $plaintext.= $block ^ $key;
717
+                    }
718
+                }
719
+                if ($this->continuousBuffer) {
720
+                    $this->decryptIV = $xor;
721
+                    if ($start = strlen($ciphertext) % 8) {
722
+                        $buffer = substr($key, $start) . $buffer;
723
+                    }
724
+                }
725
+                break;
726
+            case CRYPT_DES_MODE_CFB:
727
+                if (!empty($buffer['ciphertext'])) {
728
+                    $plaintext = $ciphertext ^ substr($this->decryptIV, strlen($buffer['ciphertext']));
729
+                    $buffer['ciphertext'].= substr($ciphertext, 0, strlen($plaintext));
730
+                    if (strlen($buffer['ciphertext']) == 8) {
731
+                        $xor = $this->_processBlock($buffer['ciphertext'], CRYPT_DES_ENCRYPT);
732
+                        $buffer['ciphertext'] = '';
733
+                    }
734
+                    $start = strlen($plaintext);
735
+                    $block = $this->decryptIV;
736
+                } else {
737
+                    $plaintext = '';
738
+                    $xor = $this->_processBlock($this->decryptIV, CRYPT_DES_ENCRYPT);
739
+                    $start = 0;
740
+                }
741
+
742
+                for ($i = $start; $i < strlen($ciphertext); $i+=8) {
743
+                    $block = substr($ciphertext, $i, 8);
744
+                    $plaintext.= $block ^ $xor;
745
+                    if ($continuousBuffer && strlen($block) != 8) {
746
+                        $buffer['ciphertext'].= $block;
747
+                        $block = $xor;
748
+                    } else if (strlen($block) == 8) {
749
+                        $xor = $this->_processBlock($block, CRYPT_DES_ENCRYPT);
750
+                    }
751
+                }
752
+                if ($this->continuousBuffer) {
753
+                    $this->decryptIV = $block;
754
+                }
755
+                break;
756
+            case CRYPT_DES_MODE_OFB:
757
+                $xor = $this->decryptIV;
758
+                if (strlen($buffer)) {
759
+                    for ($i = 0; $i < strlen($ciphertext); $i+=8) {
760
+                        $xor = $this->_processBlock($xor, CRYPT_DES_ENCRYPT);
761
+                        $buffer.= $xor;
762
+                        $key = $this->_string_shift($buffer, 8);
763
+                        $plaintext.= substr($ciphertext, $i, 8) ^ $key;
764
+                    }
765
+                } else {
766
+                    for ($i = 0; $i < strlen($ciphertext); $i+=8) {
767
+                        $xor = $this->_processBlock($xor, CRYPT_DES_ENCRYPT);
768
+                        $plaintext.= substr($ciphertext, $i, 8) ^ $xor;
769
+                    }
770
+                    $key = $xor;
771
+                }
772
+                if ($this->continuousBuffer) {
773
+                    $this->decryptIV = $xor;
774
+                    if ($start = strlen($ciphertext) % 8) {
775
+                         $buffer = substr($key, $start) . $buffer;
776
+                    }
777
+                }
778
+        }
779
+
780
+        return $this->paddable ? $this->_unpad($plaintext) : $plaintext;
781
+    }
782
+
783
+    /**
784
+     * Treat consecutive "packets" as if they are a continuous buffer.
785
+     *
786
+     * Say you have a 16-byte plaintext $plaintext.  Using the default behavior, the two following code snippets
787
+     * will yield different outputs:
788
+     *
789
+     * <code>
790
+     *    echo $des->encrypt(substr($plaintext, 0, 8));
791
+     *    echo $des->encrypt(substr($plaintext, 8, 8));
792
+     * </code>
793
+     * <code>
794
+     *    echo $des->encrypt($plaintext);
795
+     * </code>
796
+     *
797
+     * The solution is to enable the continuous buffer.  Although this will resolve the above discrepancy, it creates
798
+     * another, as demonstrated with the following:
799
+     *
800
+     * <code>
801
+     *    $des->encrypt(substr($plaintext, 0, 8));
802
+     *    echo $des->decrypt($des->encrypt(substr($plaintext, 8, 8)));
803
+     * </code>
804
+     * <code>
805
+     *    echo $des->decrypt($des->encrypt(substr($plaintext, 8, 8)));
806
+     * </code>
807
+     *
808
+     * With the continuous buffer disabled, these would yield the same output.  With it enabled, they yield different
809
+     * outputs.  The reason is due to the fact that the initialization vector's change after every encryption /
810
+     * decryption round when the continuous buffer is enabled.  When it's disabled, they remain constant.
811
+     *
812
+     * Put another way, when the continuous buffer is enabled, the state of the Crypt_DES() object changes after each
813
+     * encryption / decryption round, whereas otherwise, it'd remain constant.  For this reason, it's recommended that
814
+     * continuous buffers not be used.  They do offer better security and are, in fact, sometimes required (SSH uses them),
815
+     * however, they are also less intuitive and more likely to cause you problems.
816
+     *
817
+     * @see Crypt_DES::disableContinuousBuffer()
818
+     * @access public
819
+     */
820
+    function enableContinuousBuffer()
821
+    {
822
+        $this->continuousBuffer = true;
823
+    }
824
+
825
+    /**
826
+     * Treat consecutive packets as if they are a discontinuous buffer.
827
+     *
828
+     * The default behavior.
829
+     *
830
+     * @see Crypt_DES::enableContinuousBuffer()
831
+     * @access public
832
+     */
833
+    function disableContinuousBuffer()
834
+    {
835
+        $this->continuousBuffer = false;
836
+        $this->encryptIV = $this->iv;
837
+        $this->decryptIV = $this->iv;
838
+    }
839
+
840
+    /**
841
+     * Pad "packets".
842
+     *
843
+     * DES works by encrypting eight bytes at a time.  If you ever need to encrypt or decrypt something that's not
844
+     * a multiple of eight, it becomes necessary to pad the input so that it's length is a multiple of eight.
845
+     *
846
+     * Padding is enabled by default.  Sometimes, however, it is undesirable to pad strings.  Such is the case in SSH1,
847
+     * where "packets" are padded with random bytes before being encrypted.  Unpad these packets and you risk stripping
848
+     * away characters that shouldn't be stripped away. (SSH knows how many bytes are added because the length is
849
+     * transmitted separately)
850
+     *
851
+     * @see Crypt_DES::disablePadding()
852
+     * @access public
853
+     */
854
+    function enablePadding()
855
+    {
856
+        $this->padding = true;
857
+    }
858
+
859
+    /**
860
+     * Do not pad packets.
861
+     *
862
+     * @see Crypt_DES::enablePadding()
863
+     * @access public
864
+     */
865
+    function disablePadding()
866
+    {
867
+        $this->padding = false;
868
+    }
869
+
870
+    /**
871
+     * Pads a string
872
+     *
873
+     * Pads a string using the RSA PKCS padding standards so that its length is a multiple of the blocksize (8).
874
+     * 8 - (strlen($text) & 7) bytes are added, each of which is equal to chr(8 - (strlen($text) & 7)
875
+     *
876
+     * If padding is disabled and $text is not a multiple of the blocksize, the string will be padded regardless
877
+     * and padding will, hence forth, be enabled.
878
+     *
879
+     * @see Crypt_DES::_unpad()
880
+     * @access private
881
+     */
882
+    function _pad($text)
883
+    {
884
+        $length = strlen($text);
885
+
886
+        if (!$this->padding) {
887
+            if (($length & 7) == 0) {
888
+                return $text;
889
+            } else {
890
+                user_error("The plaintext's length ($length) is not a multiple of the block size (8)", E_USER_NOTICE);
891
+                $this->padding = true;
892
+            }
893
+        }
894
+
895
+        $pad = 8 - ($length & 7);
896
+        return str_pad($text, $length + $pad, chr($pad));
897
+    }
898
+
899
+    /**
900
+     * Unpads a string
901
+     *
902
+     * If padding is enabled and the reported padding length is invalid the encryption key will be assumed to be wrong
903
+     * and false will be returned.
904
+     *
905
+     * @see Crypt_DES::_pad()
906
+     * @access private
907
+     */
908
+    function _unpad($text)
909
+    {
910
+        if (!$this->padding) {
911
+            return $text;
912
+        }
913
+
914
+        $length = ord($text[strlen($text) - 1]);
915
+
916
+        if (!$length || $length > 8) {
917
+            return false;
918
+        }
919
+
920
+        return substr($text, 0, -$length);
921
+    }
922
+
923
+    /**
924
+     * Encrypts or decrypts a 64-bit block
925
+     *
926
+     * $mode should be either CRYPT_DES_ENCRYPT or CRYPT_DES_DECRYPT.  See
927
+     * {@link http://en.wikipedia.org/wiki/Image:Feistel.png Feistel.png} to get a general
928
+     * idea of what this function does.
929
+     *
930
+     * @access private
931
+     * @param String $block
932
+     * @param Integer $mode
933
+     * @return String
934
+     */
935
+    function _processBlock($block, $mode)
936
+    {
937
+        // s-boxes.  in the official DES docs, they're described as being matrices that
938
+        // one accesses by using the first and last bits to determine the row and the
939
+        // middle four bits to determine the column.  in this implementation, they've
940
+        // been converted to vectors
941
+        static $sbox = array(
942
+            array(
943
+                14,  0,  4, 15, 13,  7,  1,  4,  2, 14, 15,  2, 11, 13,  8,  1,
944
+                 3, 10 ,10,  6,  6, 12, 12, 11,  5,  9,  9,  5,  0,  3,  7,  8,
945
+                 4, 15,  1, 12, 14,  8,  8,  2, 13,  4,  6,  9,  2,  1, 11,  7,
946
+                15,  5, 12, 11,  9,  3,  7, 14,  3, 10, 10,  0,  5,  6,  0, 13
947
+            ),
948
+            array(
949
+                15,  3,  1, 13,  8,  4, 14,  7,  6, 15, 11,  2,  3,  8,  4, 14,
950
+                 9, 12,  7,  0,  2,  1, 13, 10, 12,  6,  0,  9,  5, 11, 10,  5,
951
+                 0, 13, 14,  8,  7, 10, 11,  1, 10,  3,  4, 15, 13,  4,  1,  2,
952
+                 5, 11,  8,  6, 12,  7,  6, 12,  9,  0,  3,  5,  2, 14, 15,  9
953
+            ),
954
+            array(
955
+                10, 13,  0,  7,  9,  0, 14,  9,  6,  3,  3,  4, 15,  6,  5, 10,
956
+                 1,  2, 13,  8, 12,  5,  7, 14, 11, 12,  4, 11,  2, 15,  8,  1,
957
+                13,  1,  6, 10,  4, 13,  9,  0,  8,  6, 15,  9,  3,  8,  0,  7,
958
+                11,  4,  1, 15,  2, 14, 12,  3,  5, 11, 10,  5, 14,  2,  7, 12
959
+            ),
960
+            array(
961
+                 7, 13, 13,  8, 14, 11,  3,  5,  0,  6,  6, 15,  9,  0, 10,  3,
962
+                 1,  4,  2,  7,  8,  2,  5, 12, 11,  1, 12, 10,  4, 14, 15,  9,
963
+                10,  3,  6, 15,  9,  0,  0,  6, 12, 10, 11,  1,  7, 13, 13,  8,
964
+                15,  9,  1,  4,  3,  5, 14, 11,  5, 12,  2,  7,  8,  2,  4, 14
965
+            ),
966
+            array(
967
+                 2, 14, 12, 11,  4,  2,  1, 12,  7,  4, 10,  7, 11, 13,  6,  1,
968
+                 8,  5,  5,  0,  3, 15, 15, 10, 13,  3,  0,  9, 14,  8,  9,  6,
969
+                 4, 11,  2,  8,  1, 12, 11,  7, 10,  1, 13, 14,  7,  2,  8, 13,
970
+                15,  6,  9, 15, 12,  0,  5,  9,  6, 10,  3,  4,  0,  5, 14,  3
971
+            ),
972
+            array(
973
+                12, 10,  1, 15, 10,  4, 15,  2,  9,  7,  2, 12,  6,  9,  8,  5,
974
+                 0,  6, 13,  1,  3, 13,  4, 14, 14,  0,  7, 11,  5,  3, 11,  8,
975
+                 9,  4, 14,  3, 15,  2,  5, 12,  2,  9,  8,  5, 12, 15,  3, 10,
976
+                 7, 11,  0, 14,  4,  1, 10,  7,  1,  6, 13,  0, 11,  8,  6, 13
977
+            ),
978
+            array(
979
+                 4, 13, 11,  0,  2, 11, 14,  7, 15,  4,  0,  9,  8,  1, 13, 10,
980
+                 3, 14, 12,  3,  9,  5,  7, 12,  5,  2, 10, 15,  6,  8,  1,  6,
981
+                 1,  6,  4, 11, 11, 13, 13,  8, 12,  1,  3,  4,  7, 10, 14,  7,
982
+                10,  9, 15,  5,  6,  0,  8, 15,  0, 14,  5,  2,  9,  3,  2, 12
983
+            ),
984
+            array(
985
+                13,  1,  2, 15,  8, 13,  4,  8,  6, 10, 15,  3, 11,  7,  1,  4,
986
+                10, 12,  9,  5,  3,  6, 14, 11,  5,  0,  0, 14, 12,  9,  7,  2,
987
+                 7,  2, 11,  1,  4, 14,  1,  7,  9,  4, 12, 10, 14,  8,  2, 13,
988
+                 0, 15,  6, 12, 10,  9, 13,  0, 15,  3,  3,  5,  5,  6,  8, 11
989
+            )
990
+        );
991
+
992
+        $keys = $this->keys;
993
+
994
+        $temp = unpack('Na/Nb', $block);
995
+        $block = array($temp['a'], $temp['b']);
996
+
997
+        // because php does arithmetic right shifts, if the most significant bits are set, right
998
+        // shifting those into the correct position will add 1's - not 0's.  this will intefere
999
+        // with the | operation unless a second & is done.  so we isolate these bits and left shift
1000
+        // them into place.  we then & each block with 0x7FFFFFFF to prevennt 1's from being added
1001
+        // for any other shifts.
1002
+        $msb = array(
1003
+            ($block[0] >> 31) & 1,
1004
+            ($block[1] >> 31) & 1
1005
+        );
1006
+        $block[0] &= 0x7FFFFFFF;
1007
+        $block[1] &= 0x7FFFFFFF;
1008
+
1009
+        // we isolate the appropriate bit in the appropriate integer and shift as appropriate.  in
1010
+        // some cases, there are going to be multiple bits in the same integer that need to be shifted
1011
+        // in the same way.  we combine those into one shift operation.
1012
+        $block = array(
1013
+            (($block[1] & 0x00000040) << 25) | (($block[1] & 0x00004000) << 16) |
1014
+            (($block[1] & 0x00400001) <<  7) | (($block[1] & 0x40000100) >>  2) |
1015
+            (($block[0] & 0x00000040) << 21) | (($block[0] & 0x00004000) << 12) |
1016
+            (($block[0] & 0x00400001) <<  3) | (($block[0] & 0x40000100) >>  6) |
1017
+            (($block[1] & 0x00000010) << 19) | (($block[1] & 0x00001000) << 10) |
1018
+            (($block[1] & 0x00100000) <<  1) | (($block[1] & 0x10000000) >>  8) |
1019
+            (($block[0] & 0x00000010) << 15) | (($block[0] & 0x00001000) <<  6) |
1020
+            (($block[0] & 0x00100000) >>  3) | (($block[0] & 0x10000000) >> 12) |
1021
+            (($block[1] & 0x00000004) << 13) | (($block[1] & 0x00000400) <<  4) |
1022
+            (($block[1] & 0x00040000) >>  5) | (($block[1] & 0x04000000) >> 14) |
1023
+            (($block[0] & 0x00000004) <<  9) | ( $block[0] & 0x00000400       ) |
1024
+            (($block[0] & 0x00040000) >>  9) | (($block[0] & 0x04000000) >> 18) |
1025
+            (($block[1] & 0x00010000) >> 11) | (($block[1] & 0x01000000) >> 20) |
1026
+            (($block[0] & 0x00010000) >> 15) | (($block[0] & 0x01000000) >> 24)
1027
+        ,
1028
+            (($block[1] & 0x00000080) << 24) | (($block[1] & 0x00008000) << 15) |
1029
+            (($block[1] & 0x00800002) <<  6) | (($block[0] & 0x00000080) << 20) |
1030
+            (($block[0] & 0x00008000) << 11) | (($block[0] & 0x00800002) <<  2) |
1031
+            (($block[1] & 0x00000020) << 18) | (($block[1] & 0x00002000) <<  9) |
1032
+            ( $block[1] & 0x00200000       ) | (($block[1] & 0x20000000) >>  9) |
1033
+            (($block[0] & 0x00000020) << 14) | (($block[0] & 0x00002000) <<  5) |
1034
+            (($block[0] & 0x00200000) >>  4) | (($block[0] & 0x20000000) >> 13) |
1035
+            (($block[1] & 0x00000008) << 12) | (($block[1] & 0x00000800) <<  3) |
1036
+            (($block[1] & 0x00080000) >>  6) | (($block[1] & 0x08000000) >> 15) |
1037
+            (($block[0] & 0x00000008) <<  8) | (($block[0] & 0x00000800) >>  1) |
1038
+            (($block[0] & 0x00080000) >> 10) | (($block[0] & 0x08000000) >> 19) |
1039
+            (($block[1] & 0x00000200) >>  3) | (($block[0] & 0x00000200) >>  7) |
1040
+            (($block[1] & 0x00020000) >> 12) | (($block[1] & 0x02000000) >> 21) |
1041
+            (($block[0] & 0x00020000) >> 16) | (($block[0] & 0x02000000) >> 25) |
1042
+            ($msb[1] << 28) | ($msb[0] << 24)
1043
+        );
1044
+
1045
+        for ($i = 0; $i < 16; $i++) {
1046
+            // start of "the Feistel (F) function" - see the following URL:
1047
+            // http://en.wikipedia.org/wiki/Image:Data_Encryption_Standard_InfoBox_Diagram.png
1048
+            $temp = (($sbox[0][((($block[1] >> 27) & 0x1F) | (($block[1] & 1) << 5)) ^ $keys[$mode][$i][0]]) << 28)
1049
+                  | (($sbox[1][(($block[1] & 0x1F800000) >> 23) ^ $keys[$mode][$i][1]]) << 24)
1050
+                  | (($sbox[2][(($block[1] & 0x01F80000) >> 19) ^ $keys[$mode][$i][2]]) << 20)
1051
+                  | (($sbox[3][(($block[1] & 0x001F8000) >> 15) ^ $keys[$mode][$i][3]]) << 16)
1052
+                  | (($sbox[4][(($block[1] & 0x0001F800) >> 11) ^ $keys[$mode][$i][4]]) << 12)
1053
+                  | (($sbox[5][(($block[1] & 0x00001F80) >>  7) ^ $keys[$mode][$i][5]]) <<  8)
1054
+                  | (($sbox[6][(($block[1] & 0x000001F8) >>  3) ^ $keys[$mode][$i][6]]) <<  4)
1055
+                  | ( $sbox[7][((($block[1] & 0x1F) << 1) | (($block[1] >> 31) & 1)) ^ $keys[$mode][$i][7]]);
1056
+
1057
+            $msb = ($temp >> 31) & 1;
1058
+            $temp &= 0x7FFFFFFF;
1059
+            $newBlock = (($temp & 0x00010000) << 15) | (($temp & 0x02020120) <<  5)
1060
+                      | (($temp & 0x00001800) << 17) | (($temp & 0x01000000) >> 10)
1061
+                      | (($temp & 0x00000008) << 24) | (($temp & 0x00100000) <<  6)
1062
+                      | (($temp & 0x00000010) << 21) | (($temp & 0x00008000) <<  9)
1063
+                      | (($temp & 0x00000200) << 12) | (($temp & 0x10000000) >> 27)
1064
+                      | (($temp & 0x00000040) << 14) | (($temp & 0x08000000) >>  8)
1065
+                      | (($temp & 0x00004000) <<  4) | (($temp & 0x00000002) << 16)
1066
+                      | (($temp & 0x00442000) >>  6) | (($temp & 0x40800000) >> 15)
1067
+                      | (($temp & 0x00000001) << 11) | (($temp & 0x20000000) >> 20)
1068
+                      | (($temp & 0x00080000) >> 13) | (($temp & 0x00000004) <<  3)
1069
+                      | (($temp & 0x04000000) >> 22) | (($temp & 0x00000480) >>  7)
1070
+                      | (($temp & 0x00200000) >> 19) | ($msb << 23);
1071
+            // end of "the Feistel (F) function" - $newBlock is F's output
1072
+
1073
+            $temp = $block[1];
1074
+            $block[1] = $block[0] ^ $newBlock;
1075
+            $block[0] = $temp;
1076
+        }
1077
+
1078
+        $msb = array(
1079
+            ($block[0] >> 31) & 1,
1080
+            ($block[1] >> 31) & 1
1081
+        );
1082
+        $block[0] &= 0x7FFFFFFF;
1083
+        $block[1] &= 0x7FFFFFFF;
1084
+
1085
+        $block = array(
1086
+            (($block[0] & 0x01000004) <<  7) | (($block[1] & 0x01000004) <<  6) |
1087
+            (($block[0] & 0x00010000) << 13) | (($block[1] & 0x00010000) << 12) |
1088
+            (($block[0] & 0x00000100) << 19) | (($block[1] & 0x00000100) << 18) |
1089
+            (($block[0] & 0x00000001) << 25) | (($block[1] & 0x00000001) << 24) |
1090
+            (($block[0] & 0x02000008) >>  2) | (($block[1] & 0x02000008) >>  3) |
1091
+            (($block[0] & 0x00020000) <<  4) | (($block[1] & 0x00020000) <<  3) |
1092
+            (($block[0] & 0x00000200) << 10) | (($block[1] & 0x00000200) <<  9) |
1093
+            (($block[0] & 0x00000002) << 16) | (($block[1] & 0x00000002) << 15) |
1094
+            (($block[0] & 0x04000000) >> 11) | (($block[1] & 0x04000000) >> 12) |
1095
+            (($block[0] & 0x00040000) >>  5) | (($block[1] & 0x00040000) >>  6) |
1096
+            (($block[0] & 0x00000400) <<  1) | ( $block[1] & 0x00000400       ) |
1097
+            (($block[0] & 0x08000000) >> 20) | (($block[1] & 0x08000000) >> 21) |
1098
+            (($block[0] & 0x00080000) >> 14) | (($block[1] & 0x00080000) >> 15) |
1099
+            (($block[0] & 0x00000800) >>  8) | (($block[1] & 0x00000800) >>  9)
1100
+        ,
1101
+            (($block[0] & 0x10000040) <<  3) | (($block[1] & 0x10000040) <<  2) |
1102
+            (($block[0] & 0x00100000) <<  9) | (($block[1] & 0x00100000) <<  8) |
1103
+            (($block[0] & 0x00001000) << 15) | (($block[1] & 0x00001000) << 14) |
1104
+            (($block[0] & 0x00000010) << 21) | (($block[1] & 0x00000010) << 20) |
1105
+            (($block[0] & 0x20000080) >>  6) | (($block[1] & 0x20000080) >>  7) |
1106
+            ( $block[0] & 0x00200000       ) | (($block[1] & 0x00200000) >>  1) |
1107
+            (($block[0] & 0x00002000) <<  6) | (($block[1] & 0x00002000) <<  5) |
1108
+            (($block[0] & 0x00000020) << 12) | (($block[1] & 0x00000020) << 11) |
1109
+            (($block[0] & 0x40000000) >> 15) | (($block[1] & 0x40000000) >> 16) |
1110
+            (($block[0] & 0x00400000) >>  9) | (($block[1] & 0x00400000) >> 10) |
1111
+            (($block[0] & 0x00004000) >>  3) | (($block[1] & 0x00004000) >>  4) |
1112
+            (($block[0] & 0x00800000) >> 18) | (($block[1] & 0x00800000) >> 19) |
1113
+            (($block[0] & 0x00008000) >> 12) | (($block[1] & 0x00008000) >> 13) |
1114
+            ($msb[0] <<  7) | ($msb[1] <<  6)
1115
+        );
1116
+
1117
+        return pack('NN', $block[0], $block[1]);
1118
+    }
1119
+
1120
+    /**
1121
+     * Creates the key schedule.
1122
+     *
1123
+     * @access private
1124
+     * @param String $key
1125
+     * @return Array
1126
+     */
1127
+    function _prepareKey($key)
1128
+    {
1129
+        static $shifts = array( // number of key bits shifted per round
1130
+            1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1
1131
+        );
1132
+
1133
+        // pad the key and remove extra characters as appropriate.
1134
+        $key = str_pad(substr($key, 0, 8), 8, chr(0));
1135
+
1136
+        $temp = unpack('Na/Nb', $key);
1137
+        $key = array($temp['a'], $temp['b']);
1138
+        $msb = array(
1139
+            ($key[0] >> 31) & 1,
1140
+            ($key[1] >> 31) & 1
1141
+        );
1142
+        $key[0] &= 0x7FFFFFFF;
1143
+        $key[1] &= 0x7FFFFFFF;
1144
+
1145
+        $key = array(
1146
+            (($key[1] & 0x00000002) << 26) | (($key[1] & 0x00000204) << 17) |
1147
+            (($key[1] & 0x00020408) <<  8) | (($key[1] & 0x02040800) >>  1) |
1148
+            (($key[0] & 0x00000002) << 22) | (($key[0] & 0x00000204) << 13) |
1149
+            (($key[0] & 0x00020408) <<  4) | (($key[0] & 0x02040800) >>  5) |
1150
+            (($key[1] & 0x04080000) >> 10) | (($key[0] & 0x04080000) >> 14) |
1151
+            (($key[1] & 0x08000000) >> 19) | (($key[0] & 0x08000000) >> 23) |
1152
+            (($key[0] & 0x00000010) >>  1) | (($key[0] & 0x00001000) >> 10) |
1153
+            (($key[0] & 0x00100000) >> 19) | (($key[0] & 0x10000000) >> 28)
1154
+        ,
1155
+            (($key[1] & 0x00000080) << 20) | (($key[1] & 0x00008000) << 11) |
1156
+            (($key[1] & 0x00800000) <<  2) | (($key[0] & 0x00000080) << 16) |
1157
+            (($key[0] & 0x00008000) <<  7) | (($key[0] & 0x00800000) >>  2) |
1158
+            (($key[1] & 0x00000040) << 13) | (($key[1] & 0x00004000) <<  4) |
1159
+            (($key[1] & 0x00400000) >>  5) | (($key[1] & 0x40000000) >> 14) |
1160
+            (($key[0] & 0x00000040) <<  9) | ( $key[0] & 0x00004000       ) |
1161
+            (($key[0] & 0x00400000) >>  9) | (($key[0] & 0x40000000) >> 18) |
1162
+            (($key[1] & 0x00000020) <<  6) | (($key[1] & 0x00002000) >>  3) |
1163
+            (($key[1] & 0x00200000) >> 12) | (($key[1] & 0x20000000) >> 21) |
1164
+            (($key[0] & 0x00000020) <<  2) | (($key[0] & 0x00002000) >>  7) |
1165
+            (($key[0] & 0x00200000) >> 16) | (($key[0] & 0x20000000) >> 25) |
1166
+            (($key[1] & 0x00000010) >>  1) | (($key[1] & 0x00001000) >> 10) |
1167
+            (($key[1] & 0x00100000) >> 19) | (($key[1] & 0x10000000) >> 28) |
1168
+            ($msb[1] << 24) | ($msb[0] << 20)
1169
+        ); 
1170
+
1171
+        $keys = array();
1172
+        for ($i = 0; $i < 16; $i++) {
1173
+            $key[0] <<= $shifts[$i];
1174
+            $temp = ($key[0] & 0xF0000000) >> 28;
1175
+            $key[0] = ($key[0] | $temp) & 0x0FFFFFFF;
1176
+
1177
+            $key[1] <<= $shifts[$i];
1178
+            $temp = ($key[1] & 0xF0000000) >> 28;
1179
+            $key[1] = ($key[1] | $temp) & 0x0FFFFFFF;
1180
+
1181
+            $temp = array(
1182
+                (($key[1] & 0x00004000) >>  9) | (($key[1] & 0x00000800) >>  7) |
1183
+                (($key[1] & 0x00020000) >> 14) | (($key[1] & 0x00000010) >>  2) |
1184
+                (($key[1] & 0x08000000) >> 26) | (($key[1] & 0x00800000) >> 23)
1185
+            ,
1186
+                (($key[1] & 0x02400000) >> 20) | (($key[1] & 0x00000001) <<  4) |
1187
+                (($key[1] & 0x00002000) >> 10) | (($key[1] & 0x00040000) >> 18) |
1188
+                (($key[1] & 0x00000080) >>  6)
1189
+            ,
1190
+                ( $key[1] & 0x00000020       ) | (($key[1] & 0x00000200) >>  5) |
1191
+                (($key[1] & 0x00010000) >> 13) | (($key[1] & 0x01000000) >> 22) |
1192
+                (($key[1] & 0x00000004) >>  1) | (($key[1] & 0x00100000) >> 20)
1193
+            ,
1194
+                (($key[1] & 0x00001000) >>  7) | (($key[1] & 0x00200000) >> 17) |
1195
+                (($key[1] & 0x00000002) <<  2) | (($key[1] & 0x00000100) >>  6) |
1196
+                (($key[1] & 0x00008000) >> 14) | (($key[1] & 0x04000000) >> 26)
1197
+            ,
1198
+                (($key[0] & 0x00008000) >> 10) | ( $key[0] & 0x00000010       ) |
1199
+                (($key[0] & 0x02000000) >> 22) | (($key[0] & 0x00080000) >> 17) |
1200
+                (($key[0] & 0x00000200) >>  8) | (($key[0] & 0x00000002) >>  1)
1201
+            ,
1202
+                (($key[0] & 0x04000000) >> 21) | (($key[0] & 0x00010000) >> 12) |
1203
+                (($key[0] & 0x00000020) >>  2) | (($key[0] & 0x00000800) >>  9) |
1204
+                (($key[0] & 0x00800000) >> 22) | (($key[0] & 0x00000100) >>  8)
1205
+            ,
1206
+                (($key[0] & 0x00001000) >>  7) | (($key[0] & 0x00000088) >>  3) |
1207
+                (($key[0] & 0x00020000) >> 14) | (($key[0] & 0x00000001) <<  2) |
1208
+                (($key[0] & 0x00400000) >> 21)
1209
+            ,
1210
+                (($key[0] & 0x00000400) >>  5) | (($key[0] & 0x00004000) >> 10) |
1211
+                (($key[0] & 0x00000040) >>  3) | (($key[0] & 0x00100000) >> 18) |
1212
+                (($key[0] & 0x08000000) >> 26) | (($key[0] & 0x01000000) >> 24)
1213
+            );
1214
+
1215
+            $keys[] = $temp;
1216
+        }
1217
+
1218
+        $temp = array(
1219
+            CRYPT_DES_ENCRYPT => $keys,
1220
+            CRYPT_DES_DECRYPT => array_reverse($keys)
1221
+        );
1222
+
1223
+        return $temp;
1224
+    }
1225
+
1226
+    /**
1227
+     * String Shift
1228
+     *
1229
+     * Inspired by array_shift
1230
+     *
1231
+     * @param String $string
1232
+     * @param optional Integer $index
1233
+     * @return String
1234
+     * @access private
1235
+     */
1236
+    function _string_shift(&$string, $index = 1)
1237
+    {
1238
+        $substr = substr($string, 0, $index);
1239
+        $string = substr($string, $index);
1240
+        return $substr;
1241
+    }
1242
+}
1243
+
1244
+// vim: ts=4:sw=4:et:
1245
+// vim6: fdl=1:
0 1246
\ No newline at end of file
... ...
@@ -0,0 +1,824 @@
1
+<?php
2
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
3
+
4
+/**
5
+ * Pure-PHP implementations of keyed-hash message authentication codes (HMACs) and various cryptographic hashing functions.
6
+ *
7
+ * Uses hash() or mhash() if available and an internal implementation, otherwise.  Currently supports the following:
8
+ *
9
+ * md2, md5, md5-96, sha1, sha1-96, sha256, sha384, and sha512
10
+ *
11
+ * If {@link Crypt_Hash::setKey() setKey()} is called, {@link Crypt_Hash::hash() hash()} will return the HMAC as opposed to
12
+ * the hash.  If no valid algorithm is provided, sha1 will be used.
13
+ *
14
+ * PHP versions 4 and 5
15
+ *
16
+ * {@internal The variable names are the same as those in 
17
+ * {@link http://tools.ietf.org/html/rfc2104#section-2 RFC2104}.}}
18
+ *
19
+ * Here's a short example of how to use this library:
20
+ * <code>
21
+ * <?php
22
+ *    include('Crypt/Hash.php');
23
+ *
24
+ *    $hash = new Crypt_Hash('sha1');
25
+ *
26
+ *    $hash->setKey('abcdefg');
27
+ *
28
+ *    echo base64_encode($hash->hash('abcdefg'));
29
+ * ?>
30
+ * </code>
31
+ *
32
+ * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy
33
+ * of this software and associated documentation files (the "Software"), to deal
34
+ * in the Software without restriction, including without limitation the rights
35
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
36
+ * copies of the Software, and to permit persons to whom the Software is
37
+ * furnished to do so, subject to the following conditions:
38
+ * 
39
+ * The above copyright notice and this permission notice shall be included in
40
+ * all copies or substantial portions of the Software.
41
+ * 
42
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
43
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
44
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
45
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
46
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
47
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
48
+ * THE SOFTWARE.
49
+ *
50
+ * @category   Crypt
51
+ * @package    Crypt_Hash
52
+ * @author     Jim Wigginton <[email protected]>
53
+ * @copyright  MMVII Jim Wigginton
54
+ * @license    http://www.opensource.org/licenses/mit-license.html  MIT License
55
+ * @version    $Id: Hash.php,v 1.6 2009/11/23 23:37:07 terrafrost Exp $
56
+ * @link       http://phpseclib.sourceforge.net
57
+ */
58
+
59
+/**#@+
60
+ * @access private
61
+ * @see Crypt_Hash::Crypt_Hash()
62
+ */
63
+/**
64
+ * Toggles the internal implementation
65
+ */
66
+define('CRYPT_HASH_MODE_INTERNAL', 1);
67
+/**
68
+ * Toggles the mhash() implementation, which has been deprecated on PHP 5.3.0+.
69
+ */
70
+define('CRYPT_HASH_MODE_MHASH',    2);
71
+/**
72
+ * Toggles the hash() implementation, which works on PHP 5.1.2+.
73
+ */
74
+define('CRYPT_HASH_MODE_HASH',     3);
75
+/**#@-*/
76
+
77
+/**
78
+ * Pure-PHP implementations of keyed-hash message authentication codes (HMACs) and various cryptographic hashing functions.
79
+ *
80
+ * @author  Jim Wigginton <[email protected]>
81
+ * @version 0.1.0
82
+ * @access  public
83
+ * @package Crypt_Hash
84
+ */
85
+class Crypt_Hash {
86
+    /**
87
+     * Byte-length of compression blocks / key (Internal HMAC)
88
+     *
89
+     * @see Crypt_Hash::setAlgorithm()
90
+     * @var Integer
91
+     * @access private
92
+     */
93
+    var $b;
94
+
95
+    /**
96
+     * Byte-length of hash output (Internal HMAC)
97
+     *
98
+     * @see Crypt_Hash::setHash()
99
+     * @var Integer
100
+     * @access private
101
+     */
102
+    var $l = false;
103
+
104
+    /**
105
+     * Hash Algorithm
106
+     *
107
+     * @see Crypt_Hash::setHash()
108
+     * @var String
109
+     * @access private
110
+     */
111
+    var $hash;
112
+
113
+    /**
114
+     * Key
115
+     *
116
+     * @see Crypt_Hash::setKey()
117
+     * @var String
118
+     * @access private
119
+     */
120
+    var $key = '';
121
+
122
+    /**
123
+     * Outer XOR (Internal HMAC)
124
+     *
125
+     * @see Crypt_Hash::setKey()
126
+     * @var String
127
+     * @access private
128
+     */
129
+    var $opad;
130
+
131
+    /**
132
+     * Inner XOR (Internal HMAC)
133
+     *
134
+     * @see Crypt_Hash::setKey()
135
+     * @var String
136
+     * @access private
137
+     */
138
+    var $ipad;
139
+
140
+    /**
141
+     * Default Constructor.
142
+     *
143
+     * @param optional String $hash
144
+     * @return Crypt_Hash
145
+     * @access public
146
+     */
147
+    function Crypt_Hash($hash = 'sha1')
148
+    {
149
+        if ( !defined('CRYPT_HASH_MODE') ) {
150
+            switch (true) {
151
+                case extension_loaded('hash'):
152
+                    define('CRYPT_HASH_MODE', CRYPT_HASH_MODE_HASH);
153
+                    break;
154
+                case extension_loaded('mhash'):
155
+                    define('CRYPT_HASH_MODE', CRYPT_HASH_MODE_MHASH);
156
+                    break;
157
+                default:
158
+                    define('CRYPT_HASH_MODE', CRYPT_HASH_MODE_INTERNAL);
159
+            }
160
+        }
161
+
162
+        $this->setHash($hash);
163
+    }
164
+
165
+    /**
166
+     * Sets the key for HMACs
167
+     *
168
+     * Keys can be of any length.
169
+     *
170
+     * @access public
171
+     * @param String $key
172
+     */
173
+    function setKey($key)
174
+    {
175
+        $this->key = $key;
176
+    }
177
+
178
+    /**
179
+     * Sets the hash function.
180
+     *
181
+     * @access public
182
+     * @param String $hash
183
+     */
184
+    function setHash($hash)
185
+    {
186
+        switch ($hash) {
187
+            case 'md5-96':
188
+            case 'sha1-96':
189
+                $this->l = 12; // 96 / 8 = 12
190
+                break;
191
+            case 'md2':
192
+            case 'md5':
193
+                $this->l = 16;
194
+                break;
195
+            case 'sha1':
196
+                $this->l = 20;
197
+                break;
198
+            case 'sha256':
199
+                $this->l = 32;
200
+                break;
201
+            case 'sha384':
202
+                $this->l = 48;
203
+                break;
204
+            case 'sha512':
205
+                $this->l = 64;
206
+        }
207
+
208
+        switch ($hash) {
209
+            case 'md2':
210
+                $mode = CRYPT_HASH_MODE == CRYPT_HASH_MODE_HASH && in_array('md2', hash_algos()) ?
211
+                    CRYPT_HASH_MODE_HASH : CRYPT_HASH_MODE_INTERNAL;
212
+                break;
213
+            case 'sha384':
214
+            case 'sha512':
215
+                $mode = CRYPT_HASH_MODE == CRYPT_HASH_MODE_MHASH ? CRYPT_HASH_MODE_INTERNAL : CRYPT_HASH_MODE;
216
+                break;
217
+            default:
218
+                $mode = CRYPT_HASH_MODE;
219
+        }
220
+
221
+        switch ( $mode ) {
222
+            case CRYPT_HASH_MODE_MHASH:
223
+                switch ($hash) {
224
+                    case 'md5':
225
+                    case 'md5-96':
226
+                        $this->hash = MHASH_MD5;
227
+                        break;
228
+                    case 'sha256':
229
+                        $this->hash = MHASH_SHA256;
230
+                        break;
231
+                    case 'sha1':
232
+                    case 'sha1-96':
233
+                    default:
234
+                        $this->hash = MHASH_SHA1;
235
+                }
236
+                return;
237
+            case CRYPT_HASH_MODE_HASH:
238
+                switch ($hash) {
239
+                    case 'md5':
240
+                    case 'md5-96':
241
+                        $this->hash = 'md5';
242
+                        return;
243
+                    case 'md2':
244
+                    case 'sha256':
245
+                    case 'sha384':
246
+                    case 'sha512':
247
+                        $this->hash = $hash;
248
+                        return;
249
+                    case 'sha1':
250
+                    case 'sha1-96':
251
+                    default:
252
+                        $this->hash = 'sha1';
253
+                }
254
+                return;
255
+        }
256
+
257
+        switch ($hash) {
258
+            case 'md2':
259
+                 $this->b = 16;
260
+                 $this->hash = array($this, '_md2');
261
+                 break;
262
+            case 'md5':
263
+            case 'md5-96':
264
+                 $this->b = 64;
265
+                 $this->hash = array($this, '_md5');
266
+                 break;
267
+            case 'sha256':
268
+                 $this->b = 64;
269
+                 $this->hash = array($this, '_sha256');
270
+                 break;
271
+            case 'sha384':
272
+            case 'sha512':
273
+                 $this->b = 128;
274
+                 $this->hash = array($this, '_sha512');
275
+                 break;
276
+            case 'sha1':
277
+            case 'sha1-96':
278
+            default:
279
+                 $this->b = 64;
280
+                 $this->hash = array($this, '_sha1');
281
+        }
282
+
283
+        $this->ipad = str_repeat(chr(0x36), $this->b);
284
+        $this->opad = str_repeat(chr(0x5C), $this->b);
285
+    }
286
+
287
+    /**
288
+     * Compute the HMAC.
289
+     *
290
+     * @access public
291
+     * @param String $text
292
+     * @return String
293
+     */
294
+    function hash($text)
295
+    {
296
+        $mode = is_array($this->hash) ? CRYPT_HASH_MODE_INTERNAL : CRYPT_HASH_MODE;
297
+
298
+        if (!empty($this->key)) {
299
+            switch ( $mode ) {
300
+                case CRYPT_HASH_MODE_MHASH:
301
+                    $output = mhash($this->hash, $text, $this->key);
302
+                    break;
303
+                case CRYPT_HASH_MODE_HASH:
304
+                    $output = hash_hmac($this->hash, $text, $this->key, true);
305
+                    break;
306
+                case CRYPT_HASH_MODE_INTERNAL:
307
+                    /* "Applications that use keys longer than B bytes will first hash the key using H and then use the
308
+                        resultant L byte string as the actual key to HMAC."
309
+
310
+                        -- http://tools.ietf.org/html/rfc2104#section-2 */
311
+                    $key = strlen($this->key) > $this->b ? call_user_func($this->hash, $this->key) : $this->key;
312
+
313
+                    $key    = str_pad($key, $this->b, chr(0));      // step 1
314
+                    $temp   = $this->ipad ^ $key;                   // step 2
315
+                    $temp  .= $text;                                // step 3
316
+                    $temp   = call_user_func($this->hash, $temp);   // step 4
317
+                    $output = $this->opad ^ $key;                   // step 5
318
+                    $output.= $temp;                                // step 6
319
+                    $output = call_user_func($this->hash, $output); // step 7
320
+            }
321
+        } else {
322
+            switch ( $mode ) {
323
+                case CRYPT_HASH_MODE_MHASH:
324
+                    $output = mhash($this->hash, $text);
325
+                    break;
326
+                case CRYPT_HASH_MODE_HASH:
327
+                    $output = hash($this->hash, $text, true);
328
+                    break;
329
+                case CRYPT_HASH_MODE_INTERNAL:
330
+                    $output = call_user_func($this->hash, $text);
331
+            }
332
+        }
333
+
334
+        return substr($output, 0, $this->l);
335
+    }
336
+
337
+    /**
338
+     * Returns the hash length (in bytes)
339
+     *
340
+     * @access public
341
+     * @return Integer
342
+     */
343
+    function getLength()
344
+    {
345
+        return $this->l;
346
+    }
347
+
348
+    /**
349
+     * Wrapper for MD5
350
+     *
351
+     * @access private
352
+     * @param String $text
353
+     */
354
+    function _md5($m)
355
+    {
356
+        return pack('H*', md5($m));
357
+    }
358
+
359
+    /**
360
+     * Wrapper for SHA1
361
+     *
362
+     * @access private
363
+     * @param String $text
364
+     */
365
+    function _sha1($m)
366
+    {
367
+        return pack('H*', sha1($m));
368
+    }
369
+
370
+    /**
371
+     * Pure-PHP implementation of MD2
372
+     *
373
+     * See {@link http://tools.ietf.org/html/rfc1319 RFC1319}.
374
+     *
375
+     * @access private
376
+     * @param String $text
377
+     */
378
+    function _md2($m)
379
+    {
380
+        static $s = array(
381
+             41,  46,  67, 201, 162, 216, 124,   1,  61,  54,  84, 161, 236, 240, 6,
382
+             19,  98, 167,   5, 243, 192, 199, 115, 140, 152, 147,  43, 217, 188,
383
+             76, 130, 202,  30, 155,  87,  60, 253, 212, 224,  22, 103,  66, 111, 24,
384
+            138,  23, 229,  18, 190,  78, 196, 214, 218, 158, 222,  73, 160, 251,
385
+            245, 142, 187,  47, 238, 122, 169, 104, 121, 145,  21, 178,   7,  63,
386
+            148, 194,  16, 137,  11,  34,  95,  33, 128, 127,  93, 154,  90, 144, 50,
387
+             39,  53,  62, 204, 231, 191, 247, 151,   3, 255,  25,  48, 179,  72, 165,
388
+            181, 209, 215,  94, 146,  42, 172,  86, 170, 198,  79, 184,  56, 210,
389
+            150, 164, 125, 182, 118, 252, 107, 226, 156, 116,   4, 241,  69, 157,
390
+            112,  89, 100, 113, 135,  32, 134,  91, 207, 101, 230,  45, 168,   2, 27,
391
+             96,  37, 173, 174, 176, 185, 246,  28,  70,  97, 105,  52,  64, 126, 15,
392
+             85,  71, 163,  35, 221,  81, 175,  58, 195,  92, 249, 206, 186, 197,
393
+            234,  38,  44,  83,  13, 110, 133,  40, 132,   9, 211, 223, 205, 244, 65,
394
+            129,  77,  82, 106, 220,  55, 200, 108, 193, 171, 250,  36, 225, 123,
395
+              8,  12, 189, 177,  74, 120, 136, 149, 139, 227,  99, 232, 109, 233,
396
+            203, 213, 254,  59,   0,  29,  57, 242, 239, 183,  14, 102,  88, 208, 228,
397
+            166, 119, 114, 248, 235, 117,  75,  10,  49,  68,  80, 180, 143, 237,
398
+             31,  26, 219, 153, 141,  51, 159,  17, 131, 20
399
+        );
400
+
401
+        // Step 1. Append Padding Bytes
402
+        $pad = 16 - (strlen($m) & 0xF);
403
+        $m.= str_repeat(chr($pad), $pad);
404
+
405
+        $length = strlen($m);
406
+
407
+        // Step 2. Append Checksum
408
+        $c = str_repeat(chr(0), 16);
409
+        $l = chr(0);
410
+        for ($i = 0; $i < $length; $i+= 16) {
411
+            for ($j = 0; $j < 16; $j++) {
412
+                // RFC1319 incorrectly states that C[j] should be set to S[c xor L]
413
+                //$c[$j] = chr($s[ord($m[$i + $j] ^ $l)]);
414
+                // per <http://www.rfc-editor.org/errata_search.php?rfc=1319>, however, C[j] should be set to S[c xor L] xor C[j]
415
+                $c[$j] = chr($s[ord($m[$i + $j] ^ $l)] ^ ord($c[$j]));
416
+                $l = $c[$j];
417
+            }
418
+        }
419
+        $m.= $c;
420
+
421
+        $length+= 16;
422
+
423
+        // Step 3. Initialize MD Buffer
424
+        $x = str_repeat(chr(0), 48);
425
+
426
+        // Step 4. Process Message in 16-Byte Blocks
427
+        for ($i = 0; $i < $length; $i+= 16) {
428
+            for ($j = 0; $j < 16; $j++) {
429
+                $x[$j + 16] = $m[$i + $j];
430
+                $x[$j + 32] = $x[$j + 16] ^ $x[$j];
431
+            }
432
+            $t = chr(0);
433
+            for ($j = 0; $j < 18; $j++) {
434
+                for ($k = 0; $k < 48; $k++) {
435
+                    $x[$k] = $t = $x[$k] ^ chr($s[ord($t)]);
436
+                    //$t = $x[$k] = $x[$k] ^ chr($s[ord($t)]);
437
+                }
438
+                $t = chr(ord($t) + $j);
439
+            }
440
+        }
441
+
442
+        // Step 5. Output
443
+        return substr($x, 0, 16);
444
+    }
445
+
446
+    /**
447
+     * Pure-PHP implementation of SHA256
448
+     *
449
+     * See {@link http://en.wikipedia.org/wiki/SHA_hash_functions#SHA-256_.28a_SHA-2_variant.29_pseudocode SHA-256 (a SHA-2 variant) pseudocode - Wikipedia}.
450
+     *
451
+     * @access private
452
+     * @param String $text
453
+     */
454
+    function _sha256($m)
455
+    {
456
+        if (extension_loaded('suhosin')) {
457
+            return pack('H*', sha256($m));
458
+        }
459
+
460
+        // Initialize variables
461
+        $hash = array(
462
+            0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
463
+        );
464
+        // Initialize table of round constants
465
+        // (first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)
466
+        static $k = array(
467
+            0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
468
+            0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
469
+            0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
470
+            0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
471
+            0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
472
+            0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
473
+            0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
474
+            0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
475
+        );
476
+
477
+        // Pre-processing
478
+        $length = strlen($m);
479
+        // to round to nearest 56 mod 64, we'll add 64 - (length + (64 - 56)) % 64
480
+        $m.= str_repeat(chr(0), 64 - (($length + 8) & 0x3F));
481
+        $m[$length] = chr(0x80);
482
+        // we don't support hashing strings 512MB long
483
+        $m.= pack('N2', 0, $length << 3);
484
+
485
+        // Process the message in successive 512-bit chunks
486
+        $chunks = str_split($m, 64);
487
+        foreach ($chunks as $chunk) {
488
+            $w = array();
489
+            for ($i = 0; $i < 16; $i++) {
490
+                extract(unpack('Ntemp', $this->_string_shift($chunk, 4)));
491
+                $w[] = $temp;
492
+            }
493
+
494
+            // Extend the sixteen 32-bit words into sixty-four 32-bit words
495
+            for ($i = 16; $i < 64; $i++) {
496
+                $s0 = $this->_rightRotate($w[$i - 15],  7) ^
497
+                      $this->_rightRotate($w[$i - 15], 18) ^
498
+                      $this->_rightShift( $w[$i - 15],  3);
499
+                $s1 = $this->_rightRotate($w[$i - 2], 17) ^
500
+                      $this->_rightRotate($w[$i - 2], 19) ^
501
+                      $this->_rightShift( $w[$i - 2], 10);
502
+                $w[$i] = $this->_add($w[$i - 16], $s0, $w[$i - 7], $s1);
503
+
504
+            }
505
+
506
+            // Initialize hash value for this chunk
507
+            list($a, $b, $c, $d, $e, $f, $g, $h) = $hash;
508
+
509
+            // Main loop
510
+            for ($i = 0; $i < 64; $i++) {
511
+                $s0 = $this->_rightRotate($a,  2) ^
512
+                      $this->_rightRotate($a, 13) ^
513
+                      $this->_rightRotate($a, 22);
514
+                $maj = ($a & $b) ^
515
+                       ($a & $c) ^
516
+                       ($b & $c);
517
+                $t2 = $this->_add($s0, $maj);
518
+
519
+                $s1 = $this->_rightRotate($e,  6) ^
520
+                      $this->_rightRotate($e, 11) ^
521
+                      $this->_rightRotate($e, 25);
522
+                $ch = ($e & $f) ^
523
+                      ($this->_not($e) & $g);
524
+                $t1 = $this->_add($h, $s1, $ch, $k[$i], $w[$i]);
525
+
526
+                $h = $g;
527
+                $g = $f;
528
+                $f = $e;
529
+                $e = $this->_add($d, $t1);
530
+                $d = $c;
531
+                $c = $b;
532
+                $b = $a;
533
+                $a = $this->_add($t1, $t2);
534
+            }
535
+
536
+            // Add this chunk's hash to result so far
537
+            $hash = array(
538
+                $this->_add($hash[0], $a),
539
+                $this->_add($hash[1], $b),
540
+                $this->_add($hash[2], $c),
541
+                $this->_add($hash[3], $d),
542
+                $this->_add($hash[4], $e),
543
+                $this->_add($hash[5], $f),
544
+                $this->_add($hash[6], $g),
545
+                $this->_add($hash[7], $h)
546
+            );
547
+        }
548
+
549
+        // Produce the final hash value (big-endian)
550
+        return pack('N8', $hash[0], $hash[1], $hash[2], $hash[3], $hash[4], $hash[5], $hash[6], $hash[7]);
551
+    }
552
+
553
+    /**
554
+     * Pure-PHP implementation of SHA384 and SHA512
555
+     *
556
+     * @access private
557
+     * @param String $text
558
+     */
559
+    function _sha512($m)
560
+    {
561
+        if (!class_exists('Math_BigInteger')) {
562
+            require_once('Math/BigInteger.php');
563
+        }
564
+
565
+        static $init384, $init512, $k;
566
+
567
+        if (!isset($k)) {
568
+            // Initialize variables
569
+            $init384 = array( // initial values for SHA384
570
+                'cbbb9d5dc1059ed8', '629a292a367cd507', '9159015a3070dd17', '152fecd8f70e5939', 
571
+                '67332667ffc00b31', '8eb44a8768581511', 'db0c2e0d64f98fa7', '47b5481dbefa4fa4'
572
+            );
573
+            $init512 = array( // initial values for SHA512
574
+                '6a09e667f3bcc908', 'bb67ae8584caa73b', '3c6ef372fe94f82b', 'a54ff53a5f1d36f1', 
575
+                '510e527fade682d1', '9b05688c2b3e6c1f', '1f83d9abfb41bd6b', '5be0cd19137e2179'
576
+            );
577
+
578
+            for ($i = 0; $i < 8; $i++) {
579
+                $init384[$i] = new Math_BigInteger($init384[$i], 16);
580
+                $init384[$i]->setPrecision(64);
581
+                $init512[$i] = new Math_BigInteger($init512[$i], 16);
582
+                $init512[$i]->setPrecision(64);
583
+            }
584
+
585
+            // Initialize table of round constants
586
+            // (first 64 bits of the fractional parts of the cube roots of the first 80 primes 2..409)
587
+            $k = array(
588
+                '428a2f98d728ae22', '7137449123ef65cd', 'b5c0fbcfec4d3b2f', 'e9b5dba58189dbbc',
589
+                '3956c25bf348b538', '59f111f1b605d019', '923f82a4af194f9b', 'ab1c5ed5da6d8118',
590
+                'd807aa98a3030242', '12835b0145706fbe', '243185be4ee4b28c', '550c7dc3d5ffb4e2',
591
+                '72be5d74f27b896f', '80deb1fe3b1696b1', '9bdc06a725c71235', 'c19bf174cf692694',
592
+                'e49b69c19ef14ad2', 'efbe4786384f25e3', '0fc19dc68b8cd5b5', '240ca1cc77ac9c65',
593
+                '2de92c6f592b0275', '4a7484aa6ea6e483', '5cb0a9dcbd41fbd4', '76f988da831153b5',
594
+                '983e5152ee66dfab', 'a831c66d2db43210', 'b00327c898fb213f', 'bf597fc7beef0ee4',
595
+                'c6e00bf33da88fc2', 'd5a79147930aa725', '06ca6351e003826f', '142929670a0e6e70',
596
+                '27b70a8546d22ffc', '2e1b21385c26c926', '4d2c6dfc5ac42aed', '53380d139d95b3df',
597
+                '650a73548baf63de', '766a0abb3c77b2a8', '81c2c92e47edaee6', '92722c851482353b',
598
+                'a2bfe8a14cf10364', 'a81a664bbc423001', 'c24b8b70d0f89791', 'c76c51a30654be30',
599
+                'd192e819d6ef5218', 'd69906245565a910', 'f40e35855771202a', '106aa07032bbd1b8',
600
+                '19a4c116b8d2d0c8', '1e376c085141ab53', '2748774cdf8eeb99', '34b0bcb5e19b48a8',
601
+                '391c0cb3c5c95a63', '4ed8aa4ae3418acb', '5b9cca4f7763e373', '682e6ff3d6b2b8a3',
602
+                '748f82ee5defb2fc', '78a5636f43172f60', '84c87814a1f0ab72', '8cc702081a6439ec',
603
+                '90befffa23631e28', 'a4506cebde82bde9', 'bef9a3f7b2c67915', 'c67178f2e372532b',
604
+                'ca273eceea26619c', 'd186b8c721c0c207', 'eada7dd6cde0eb1e', 'f57d4f7fee6ed178',
605
+                '06f067aa72176fba', '0a637dc5a2c898a6', '113f9804bef90dae', '1b710b35131c471b',
606
+                '28db77f523047d84', '32caab7b40c72493', '3c9ebe0a15c9bebc', '431d67c49c100d4c',
607
+                '4cc5d4becb3e42b6', '597f299cfc657e2a', '5fcb6fab3ad6faec', '6c44198c4a475817'
608
+            );
609
+
610
+            for ($i = 0; $i < 80; $i++) {
611
+                $k[$i] = new Math_BigInteger($k[$i], 16);
612
+            }
613
+        }
614
+
615
+        $hash = $this->l == 48 ? $init384 : $init512;
616
+
617
+        // Pre-processing
618
+        $length = strlen($m);
619
+        // to round to nearest 112 mod 128, we'll add 128 - (length + (128 - 112)) % 128
620
+        $m.= str_repeat(chr(0), 128 - (($length + 16) & 0x7F));
621
+        $m[$length] = chr(0x80);
622
+        // we don't support hashing strings 512MB long
623
+        $m.= pack('N4', 0, 0, 0, $length << 3);
624
+
625
+        // Process the message in successive 1024-bit chunks
626
+        $chunks = str_split($m, 128);
627
+        foreach ($chunks as $chunk) {
628
+            $w = array();
629
+            for ($i = 0; $i < 16; $i++) {
630
+                $temp = new Math_BigInteger($this->_string_shift($chunk, 8), 256);
631
+                $temp->setPrecision(64);
632
+                $w[] = $temp;
633
+            }
634
+
635
+            // Extend the sixteen 32-bit words into eighty 32-bit words
636
+            for ($i = 16; $i < 80; $i++) {
637
+                $temp = array(
638
+                          $w[$i - 15]->bitwise_rightRotate(1),
639
+                          $w[$i - 15]->bitwise_rightRotate(8),
640
+                          $w[$i - 15]->bitwise_rightShift(7)
641
+                );
642
+                $s0 = $temp[0]->bitwise_xor($temp[1]);
643
+                $s0 = $s0->bitwise_xor($temp[2]);
644
+                $temp = array(
645
+                          $w[$i - 2]->bitwise_rightRotate(19),
646
+                          $w[$i - 2]->bitwise_rightRotate(61),
647
+                          $w[$i - 2]->bitwise_rightShift(6)
648
+                );
649
+                $s1 = $temp[0]->bitwise_xor($temp[1]);
650
+                $s1 = $s1->bitwise_xor($temp[2]);
651
+                $w[$i] = $w[$i - 16]->copy();
652
+                $w[$i] = $w[$i]->add($s0);
653
+                $w[$i] = $w[$i]->add($w[$i - 7]);
654
+                $w[$i] = $w[$i]->add($s1);
655
+            }
656
+
657
+            // Initialize hash value for this chunk
658
+            $a = $hash[0]->copy();
659
+            $b = $hash[1]->copy();
660
+            $c = $hash[2]->copy();
661
+            $d = $hash[3]->copy();
662
+            $e = $hash[4]->copy();
663
+            $f = $hash[5]->copy();
664
+            $g = $hash[6]->copy();
665
+            $h = $hash[7]->copy();
666
+
667
+            // Main loop
668
+            for ($i = 0; $i < 80; $i++) {
669
+                $temp = array(
670
+                    $a->bitwise_rightRotate(28),
671
+                    $a->bitwise_rightRotate(34),
672
+                    $a->bitwise_rightRotate(39)
673
+                );
674
+                $s0 = $temp[0]->bitwise_xor($temp[1]);
675
+                $s0 = $s0->bitwise_xor($temp[2]);
676
+                $temp = array(
677
+                    $a->bitwise_and($b),
678
+                    $a->bitwise_and($c),
679
+                    $b->bitwise_and($c)
680
+                );
681
+                $maj = $temp[0]->bitwise_xor($temp[1]);
682
+                $maj = $maj->bitwise_xor($temp[2]);
683
+                $t2 = $s0->add($maj);
684
+
685
+                $temp = array(
686
+                    $e->bitwise_rightRotate(14),
687
+                    $e->bitwise_rightRotate(18),
688
+                    $e->bitwise_rightRotate(41)
689
+                );
690
+                $s1 = $temp[0]->bitwise_xor($temp[1]);
691
+                $s1 = $s1->bitwise_xor($temp[2]);
692
+                $temp = array(
693
+                    $e->bitwise_and($f),
694
+                    $g->bitwise_and($e->bitwise_not())
695
+                );
696
+                $ch = $temp[0]->bitwise_xor($temp[1]);
697
+                $t1 = $h->add($s1);
698
+                $t1 = $t1->add($ch);
699
+                $t1 = $t1->add($k[$i]);
700
+                $t1 = $t1->add($w[$i]);
701
+
702
+                $h = $g->copy();
703
+                $g = $f->copy();
704
+                $f = $e->copy();
705
+                $e = $d->add($t1);
706
+                $d = $c->copy();
707
+                $c = $b->copy();
708
+                $b = $a->copy();
709
+                $a = $t1->add($t2);
710
+            }
711
+
712
+            // Add this chunk's hash to result so far
713
+            $hash = array(
714
+                $hash[0]->add($a),
715
+                $hash[1]->add($b),
716
+                $hash[2]->add($c),
717
+                $hash[3]->add($d),
718
+                $hash[4]->add($e),
719
+                $hash[5]->add($f),
720
+                $hash[6]->add($g),
721
+                $hash[7]->add($h)
722
+            );
723
+        }
724
+
725
+        // Produce the final hash value (big-endian)
726
+        // (Crypt_Hash::hash() trims the output for hashes but not for HMACs.  as such, we trim the output here)
727
+        $temp = $hash[0]->toBytes() . $hash[1]->toBytes() . $hash[2]->toBytes() . $hash[3]->toBytes() .
728
+                $hash[4]->toBytes() . $hash[5]->toBytes();
729
+        if ($this->l != 48) {
730
+            $temp.= $hash[6]->toBytes() . $hash[7]->toBytes();
731
+        }
732
+
733
+        return $temp;
734
+    }
735
+
736
+    /**
737
+     * Right Rotate
738
+     *
739
+     * @access private
740
+     * @param Integer $int
741
+     * @param Integer $amt
742
+     * @see _sha256()
743
+     * @return Integer
744
+     */
745
+    function _rightRotate($int, $amt)
746
+    {
747
+        $invamt = 32 - $amt;
748
+        $mask = (1 << $invamt) - 1;
749
+        return (($int << $invamt) & 0xFFFFFFFF) | (($int >> $amt) & $mask);
750
+    }
751
+
752
+    /**
753
+     * Right Shift
754
+     *
755
+     * @access private
756
+     * @param Integer $int
757
+     * @param Integer $amt
758
+     * @see _sha256()
759
+     * @return Integer
760
+     */
761
+    function _rightShift($int, $amt)
762
+    {
763
+        $mask = (1 << (32 - $amt)) - 1;
764
+        return ($int >> $amt) & $mask;
765
+    }
766
+
767
+    /**
768
+     * Not
769
+     *
770
+     * @access private
771
+     * @param Integer $int
772
+     * @see _sha256()
773
+     * @return Integer
774
+     */
775
+    function _not($int)
776
+    {
777
+        return ~$int & 0xFFFFFFFF;
778
+    }
779
+
780
+    /**
781
+     * Add
782
+     *
783
+     * _sha256() adds multiple unsigned 32-bit integers.  Since PHP doesn't support unsigned integers and since the
784
+     * possibility of overflow exists, care has to be taken.  Math_BigInteger() could be used but this should be faster.
785
+     *
786
+     * @param String $string
787
+     * @param optional Integer $index
788
+     * @return String
789
+     * @see _sha256()
790
+     * @access private
791
+     */
792
+    function _add()
793
+    {
794
+        static $mod;
795
+        if (!isset($mod)) {
796
+            $mod = pow(2, 32);
797
+        }
798
+
799
+        $result = 0;
800
+        $arguments = func_get_args();
801
+        foreach ($arguments as $argument) {
802
+            $result+= $argument < 0 ? ($argument & 0x7FFFFFFF) + 0x80000000 : $argument;
803
+        }
804
+
805
+        return fmod($result, $mod);
806
+    }
807
+
808
+    /**
809
+     * String Shift
810
+     *
811
+     * Inspired by array_shift
812
+     *
813
+     * @param String $string
814
+     * @param optional Integer $index
815
+     * @return String
816
+     * @access private
817
+     */
818
+    function _string_shift(&$string, $index = 1)
819
+    {
820
+        $substr = substr($string, 0, $index);
821
+        $string = substr($string, $index);
822
+        return $substr;
823
+    }
824
+}
0 825
\ No newline at end of file
... ...
@@ -0,0 +1,505 @@
1
+<?php
2
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
3
+
4
+/**
5
+ * Pure-PHP implementation of RC4.
6
+ *
7
+ * Uses mcrypt, if available, and an internal implementation, otherwise.
8
+ *
9
+ * PHP versions 4 and 5
10
+ *
11
+ * Useful resources are as follows:
12
+ *
13
+ *  - {@link http://www.mozilla.org/projects/security/pki/nss/draft-kaukonen-cipher-arcfour-03.txt ARCFOUR Algorithm}
14
+ *  - {@link http://en.wikipedia.org/wiki/RC4 - Wikipedia: RC4}
15
+ *
16
+ * RC4 is also known as ARCFOUR or ARC4.  The reason is elaborated upon at Wikipedia.  This class is named RC4 and not
17
+ * ARCFOUR or ARC4 because RC4 is how it is refered to in the SSH1 specification.
18
+ *
19
+ * Here's a short example of how to use this library:
20
+ * <code>
21
+ * <?php
22
+ *    include('Crypt/RC4.php');
23
+ *
24
+ *    $rc4 = new Crypt_RC4();
25
+ *
26
+ *    $rc4->setKey('abcdefgh');
27
+ *
28
+ *    $size = 10 * 1024;
29
+ *    $plaintext = '';
30
+ *    for ($i = 0; $i < $size; $i++) {
31
+ *        $plaintext.= 'a';
32
+ *    }
33
+ *
34
+ *    echo $rc4->decrypt($rc4->encrypt($plaintext));
35
+ * ?>
36
+ * </code>
37
+ *
38
+ * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy
39
+ * of this software and associated documentation files (the "Software"), to deal
40
+ * in the Software without restriction, including without limitation the rights
41
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
42
+ * copies of the Software, and to permit persons to whom the Software is
43
+ * furnished to do so, subject to the following conditions:
44
+ * 
45
+ * The above copyright notice and this permission notice shall be included in
46
+ * all copies or substantial portions of the Software.
47
+ * 
48
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
49
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
50
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
51
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
52
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
53
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
54
+ * THE SOFTWARE.
55
+ *
56
+ * @category   Crypt
57
+ * @package    Crypt_RC4
58
+ * @author     Jim Wigginton <[email protected]>
59
+ * @copyright  MMVII Jim Wigginton
60
+ * @license    http://www.opensource.org/licenses/mit-license.html  MIT License
61
+ * @version    $Id: RC4.php,v 1.8 2009/06/09 04:00:38 terrafrost Exp $
62
+ * @link       http://phpseclib.sourceforge.net
63
+ */
64
+
65
+/**#@+
66
+ * @access private
67
+ * @see Crypt_RC4::Crypt_RC4()
68
+ */
69
+/**
70
+ * Toggles the internal implementation
71
+ */
72
+define('CRYPT_RC4_MODE_INTERNAL', 1);
73
+/**
74
+ * Toggles the mcrypt implementation
75
+ */
76
+define('CRYPT_RC4_MODE_MCRYPT', 2);
77
+/**#@-*/
78
+
79
+/**#@+
80
+ * @access private
81
+ * @see Crypt_RC4::_crypt()
82
+ */
83
+define('CRYPT_RC4_ENCRYPT', 0);
84
+define('CRYPT_RC4_DECRYPT', 1);
85
+/**#@-*/
86
+
87
+/**
88
+ * Pure-PHP implementation of RC4.
89
+ *
90
+ * @author  Jim Wigginton <[email protected]>
91
+ * @version 0.1.0
92
+ * @access  public
93
+ * @package Crypt_RC4
94
+ */
95
+class Crypt_RC4 {
96
+    /**
97
+     * The Key
98
+     *
99
+     * @see Crypt_RC4::setKey()
100
+     * @var String
101
+     * @access private
102
+     */
103
+    var $key = "\0";
104
+
105
+    /**
106
+     * The Key Stream for encryption
107
+     *
108
+     * If CRYPT_RC4_MODE == CRYPT_RC4_MODE_MCRYPT, this will be equal to the mcrypt object
109
+     *
110
+     * @see Crypt_RC4::setKey()
111
+     * @var Array
112
+     * @access private
113
+     */
114
+    var $encryptStream = false;
115
+
116
+    /**
117
+     * The Key Stream for decryption
118
+     *
119
+     * If CRYPT_RC4_MODE == CRYPT_RC4_MODE_MCRYPT, this will be equal to the mcrypt object
120
+     *
121
+     * @see Crypt_RC4::setKey()
122
+     * @var Array
123
+     * @access private
124
+     */
125
+    var $decryptStream = false;
126
+
127
+    /**
128
+     * The $i and $j indexes for encryption
129
+     *
130
+     * @see Crypt_RC4::_crypt()
131
+     * @var Integer
132
+     * @access private
133
+     */
134
+    var $encryptIndex = 0;
135
+
136
+    /**
137
+     * The $i and $j indexes for decryption
138
+     *
139
+     * @see Crypt_RC4::_crypt()
140
+     * @var Integer
141
+     * @access private
142
+     */
143
+    var $decryptIndex = 0;
144
+
145
+    /**
146
+     * MCrypt parameters
147
+     *
148
+     * @see Crypt_RC4::setMCrypt()
149
+     * @var Array
150
+     * @access private
151
+     */
152
+    var $mcrypt = array('', '');
153
+
154
+    /**
155
+     * The Encryption Algorithm
156
+     *
157
+     * Only used if CRYPT_RC4_MODE == CRYPT_RC4_MODE_MCRYPT.  Only possible values are MCRYPT_RC4 or MCRYPT_ARCFOUR.
158
+     *
159
+     * @see Crypt_RC4::Crypt_RC4()
160
+     * @var Integer
161
+     * @access private
162
+     */
163
+    var $mode;
164
+
165
+    /**
166
+     * Continuous Buffer status
167
+     *
168
+     * @see Crypt_RC4::enableContinuousBuffer()
169
+     * @var Boolean
170
+     * @access private
171
+     */
172
+    var $continuousBuffer = false;
173
+
174
+    /**
175
+     * Default Constructor.
176
+     *
177
+     * Determines whether or not the mcrypt extension should be used.
178
+     *
179
+     * @param optional Integer $mode
180
+     * @return Crypt_RC4
181
+     * @access public
182
+     */
183
+    function Crypt_RC4()
184
+    {
185
+        if ( !defined('CRYPT_RC4_MODE') ) {
186
+            switch (true) {
187
+                case extension_loaded('mcrypt') && (defined('MCRYPT_ARCFOUR') || defined('MCRYPT_RC4')):
188
+                    // i'd check to see if rc4 was supported, by doing in_array('arcfour', mcrypt_list_algorithms('')),
189
+                    // but since that can be changed after the object has been created, there doesn't seem to be
190
+                    // a lot of point...
191
+                    define('CRYPT_RC4_MODE', CRYPT_RC4_MODE_MCRYPT);
192
+                    break;
193
+                default:
194
+                    define('CRYPT_RC4_MODE', CRYPT_RC4_MODE_INTERNAL);
195
+            }
196
+        }
197
+
198
+        switch ( CRYPT_RC4_MODE ) {
199
+            case CRYPT_RC4_MODE_MCRYPT:
200
+                switch (true) {
201
+                    case defined('MCRYPT_ARCFOUR'):
202
+                        $this->mode = MCRYPT_ARCFOUR;
203
+                        break;
204
+                    case defined('MCRYPT_RC4');
205
+                        $this->mode = MCRYPT_RC4;
206
+                }
207
+        }
208
+    }
209
+
210
+    /**
211
+     * Sets the key.
212
+     *
213
+     * Keys can be between 1 and 256 bytes long.  If they are longer then 256 bytes, the first 256 bytes will
214
+     * be used.  If no key is explicitly set, it'll be assumed to be a single null byte.
215
+     *
216
+     * @access public
217
+     * @param String $key
218
+     */
219
+    function setKey($key)
220
+    {
221
+        $this->key = $key;
222
+
223
+        if ( CRYPT_RC4_MODE == CRYPT_RC4_MODE_MCRYPT ) {
224
+            return;
225
+        }
226
+
227
+        $keyLength = strlen($key);
228
+        $keyStream = array();
229
+        for ($i = 0; $i < 256; $i++) {
230
+            $keyStream[$i] = $i;
231
+        }
232
+        $j = 0;
233
+        for ($i = 0; $i < 256; $i++) {
234
+            $j = ($j + $keyStream[$i] + ord($key[$i % $keyLength])) & 255;
235
+            $temp = $keyStream[$i];
236
+            $keyStream[$i] = $keyStream[$j];
237
+            $keyStream[$j] = $temp;
238
+        }
239
+
240
+        $this->encryptIndex = $this->decryptIndex = array(0, 0);
241
+        $this->encryptStream = $this->decryptStream = $keyStream;
242
+    }
243
+
244
+    /**
245
+     * Dummy function.
246
+     *
247
+     * Some protocols, such as WEP, prepend an "initialization vector" to the key, effectively creating a new key [1].
248
+     * If you need to use an initialization vector in this manner, feel free to prepend it to the key, yourself, before
249
+     * calling setKey().
250
+     *
251
+     * [1] WEP's initialization vectors (IV's) are used in a somewhat insecure way.  Since, in that protocol,
252
+     * the IV's are relatively easy to predict, an attack described by
253
+     * {@link http://www.drizzle.com/~aboba/IEEE/rc4_ksaproc.pdf Scott Fluhrer, Itsik Mantin, and Adi Shamir}
254
+     * can be used to quickly guess at the rest of the key.  The following links elaborate:
255
+     *
256
+     * {@link http://www.rsa.com/rsalabs/node.asp?id=2009 http://www.rsa.com/rsalabs/node.asp?id=2009}
257
+     * {@link http://en.wikipedia.org/wiki/Related_key_attack http://en.wikipedia.org/wiki/Related_key_attack}
258
+     *
259
+     * @param String $iv
260
+     * @see Crypt_RC4::setKey()
261
+     * @access public
262
+     */
263
+    function setIV($iv)
264
+    {
265
+    }
266
+
267
+    /**
268
+     * Sets MCrypt parameters. (optional)
269
+     *
270
+     * If MCrypt is being used, empty strings will be used, unless otherwise specified.
271
+     *
272
+     * @link http://php.net/function.mcrypt-module-open#function.mcrypt-module-open
273
+     * @access public
274
+     * @param optional Integer $algorithm_directory
275
+     * @param optional Integer $mode_directory
276
+     */
277
+    function setMCrypt($algorithm_directory = '', $mode_directory = '')
278
+    {
279
+        if ( CRYPT_RC4_MODE == CRYPT_RC4_MODE_MCRYPT ) {
280
+            $this->mcrypt = array($algorithm_directory, $mode_directory);
281
+            $this->_closeMCrypt();
282
+        }
283
+    }
284
+
285
+    /**
286
+     * Encrypts a message.
287
+     *
288
+     * @see Crypt_RC4::_crypt()
289
+     * @access public
290
+     * @param String $plaintext
291
+     */
292
+    function encrypt($plaintext)
293
+    {
294
+        return $this->_crypt($plaintext, CRYPT_RC4_ENCRYPT);
295
+    }
296
+
297
+    /**
298
+     * Decrypts a message.
299
+     *
300
+     * $this->decrypt($this->encrypt($plaintext)) == $this->encrypt($this->encrypt($plaintext)).
301
+     * Atleast if the continuous buffer is disabled.
302
+     *
303
+     * @see Crypt_RC4::_crypt()
304
+     * @access public
305
+     * @param String $ciphertext
306
+     */
307
+    function decrypt($ciphertext)
308
+    {
309
+        return $this->_crypt($ciphertext, CRYPT_RC4_DECRYPT);
310
+    }
311
+
312
+    /**
313
+     * Encrypts or decrypts a message.
314
+     *
315
+     * @see Crypt_RC4::encrypt()
316
+     * @see Crypt_RC4::decrypt()
317
+     * @access private
318
+     * @param String $text
319
+     * @param Integer $mode
320
+     */
321
+    function _crypt($text, $mode)
322
+    {
323
+        if ( CRYPT_RC4_MODE == CRYPT_RC4_MODE_MCRYPT ) {
324
+            $keyStream = $mode == CRYPT_RC4_ENCRYPT ? 'encryptStream' : 'decryptStream';
325
+
326
+            if ($this->$keyStream === false) {
327
+                $this->$keyStream = mcrypt_module_open($this->mode, $this->mcrypt[0], MCRYPT_MODE_STREAM, $this->mcrypt[1]);
328
+                mcrypt_generic_init($this->$keyStream, $this->key, '');
329
+            } else if (!$this->continuousBuffer) {
330
+                mcrypt_generic_init($this->$keyStream, $this->key, '');
331
+            }
332
+            $newText = mcrypt_generic($this->$keyStream, $text);
333
+            if (!$this->continuousBuffer) {
334
+                mcrypt_generic_deinit($this->$keyStream);
335
+            }
336
+
337
+            return $newText;
338
+        }
339
+
340
+        if ($this->encryptStream === false) {
341
+            $this->setKey($this->key);
342
+        }
343
+
344
+        switch ($mode) {
345
+            case CRYPT_RC4_ENCRYPT:
346
+                $keyStream = $this->encryptStream;
347
+                list($i, $j) = $this->encryptIndex;
348
+                break;
349
+            case CRYPT_RC4_DECRYPT:
350
+                $keyStream = $this->decryptStream;
351
+                list($i, $j) = $this->decryptIndex;
352
+        }
353
+
354
+        $newText = '';
355
+        for ($k = 0; $k < strlen($text); $k++) {
356
+            $i = ($i + 1) & 255;
357
+            $j = ($j + $keyStream[$i]) & 255;
358
+            $temp = $keyStream[$i];
359
+            $keyStream[$i] = $keyStream[$j];
360
+            $keyStream[$j] = $temp;
361
+            $temp = $keyStream[($keyStream[$i] + $keyStream[$j]) & 255];
362
+            $newText.= chr(ord($text[$k]) ^ $temp);
363
+        }
364
+
365
+        if ($this->continuousBuffer) {
366
+            switch ($mode) {
367
+                case CRYPT_RC4_ENCRYPT:
368
+                    $this->encryptStream = $keyStream;
369
+                    $this->encryptIndex = array($i, $j);
370
+                    break;
371
+                case CRYPT_RC4_DECRYPT:
372
+                    $this->decryptStream = $keyStream;
373
+                    $this->decryptIndex = array($i, $j);
374
+            }
375
+        }
376
+
377
+        return $newText;
378
+    }
379
+
380
+    /**
381
+     * Treat consecutive "packets" as if they are a continuous buffer.
382
+     *
383
+     * Say you have a 16-byte plaintext $plaintext.  Using the default behavior, the two following code snippets
384
+     * will yield different outputs:
385
+     *
386
+     * <code>
387
+     *    echo $rc4->encrypt(substr($plaintext, 0, 8));
388
+     *    echo $rc4->encrypt(substr($plaintext, 8, 8));
389
+     * </code>
390
+     * <code>
391
+     *    echo $rc4->encrypt($plaintext);
392
+     * </code>
393
+     *
394
+     * The solution is to enable the continuous buffer.  Although this will resolve the above discrepancy, it creates
395
+     * another, as demonstrated with the following:
396
+     *
397
+     * <code>
398
+     *    $rc4->encrypt(substr($plaintext, 0, 8));
399
+     *    echo $rc4->decrypt($des->encrypt(substr($plaintext, 8, 8)));
400
+     * </code>
401
+     * <code>
402
+     *    echo $rc4->decrypt($des->encrypt(substr($plaintext, 8, 8)));
403
+     * </code>
404
+     *
405
+     * With the continuous buffer disabled, these would yield the same output.  With it enabled, they yield different
406
+     * outputs.  The reason is due to the fact that the initialization vector's change after every encryption /
407
+     * decryption round when the continuous buffer is enabled.  When it's disabled, they remain constant.
408
+     *
409
+     * Put another way, when the continuous buffer is enabled, the state of the Crypt_DES() object changes after each
410
+     * encryption / decryption round, whereas otherwise, it'd remain constant.  For this reason, it's recommended that
411
+     * continuous buffers not be used.  They do offer better security and are, in fact, sometimes required (SSH uses them),
412
+     * however, they are also less intuitive and more likely to cause you problems.
413
+     *
414
+     * @see Crypt_RC4::disableContinuousBuffer()
415
+     * @access public
416
+     */
417
+    function enableContinuousBuffer()
418
+    {
419
+        $this->continuousBuffer = true;
420
+    }
421
+
422
+    /**
423
+     * Treat consecutive packets as if they are a discontinuous buffer.
424
+     *
425
+     * The default behavior.
426
+     *
427
+     * @see Crypt_RC4::enableContinuousBuffer()
428
+     * @access public
429
+     */
430
+    function disableContinuousBuffer()
431
+    {
432
+        if ( CRYPT_RC4_MODE == CRYPT_RC4_MODE_INTERNAL ) {
433
+            $this->encryptIndex = $this->decryptIndex = array(0, 0);
434
+            $this->setKey($this->key);
435
+        }
436
+
437
+        $this->continuousBuffer = false;
438
+    }
439
+
440
+    /**
441
+     * Dummy function.
442
+     *
443
+     * Since RC4 is a stream cipher and not a block cipher, no padding is necessary.  The only reason this function is
444
+     * included is so that you can switch between a block cipher and a stream cipher transparently.
445
+     *
446
+     * @see Crypt_RC4::disablePadding()
447
+     * @access public
448
+     */
449
+    function enablePadding()
450
+    {
451
+    }
452
+
453
+    /**
454
+     * Dummy function.
455
+     *
456
+     * @see Crypt_RC4::enablePadding()
457
+     * @access public
458
+     */
459
+    function disablePadding()
460
+    {
461
+    }
462
+
463
+    /**
464
+     * Class destructor.
465
+     *
466
+     * Will be called, automatically, if you're using PHP5.  If you're using PHP4, call it yourself.  Only really
467
+     * needs to be called if mcrypt is being used.
468
+     *
469
+     * @access public
470
+     */
471
+    function __destruct()
472
+    {
473
+        if ( CRYPT_RC4_MODE == CRYPT_RC4_MODE_MCRYPT ) {
474
+            $this->_closeMCrypt();
475
+        }
476
+    }
477
+
478
+    /**
479
+     * Properly close the MCrypt objects.
480
+     *
481
+     * @access prviate
482
+     */
483
+    function _closeMCrypt()
484
+    {
485
+        if ( $this->encryptStream !== false ) {
486
+            if ( $this->continuousBuffer ) {
487
+                mcrypt_generic_deinit($this->encryptStream);
488
+            }
489
+
490
+            mcrypt_module_close($this->encryptStream);
491
+
492
+            $this->encryptStream = false;
493
+        }
494
+
495
+        if ( $this->decryptStream !== false ) {
496
+            if ( $this->continuousBuffer ) {
497
+                mcrypt_generic_deinit($this->decryptStream);
498
+            }
499
+
500
+            mcrypt_module_close($this->decryptStream);
501
+
502
+            $this->decryptStream = false;
503
+        }
504
+    }
505
+}
0 506
\ No newline at end of file
... ...
@@ -0,0 +1,2356 @@
1
+<?php
2
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
3
+
4
+/**
5
+ * Pure-PHP PKCS#1 (v2.1) compliant implementation of RSA.
6
+ *
7
+ * PHP versions 4 and 5
8
+ *
9
+ * Here's an example of how to encrypt and decrypt text with this library:
10
+ * <code>
11
+ * <?php
12
+ *    include('Crypt/RSA.php');
13
+ *
14
+ *    $rsa = new Crypt_RSA();
15
+ *    extract($rsa->createKey());
16
+ *
17
+ *    $plaintext = 'terrafrost';
18
+ *
19
+ *    $rsa->loadKey($privatekey);
20
+ *    $ciphertext = $rsa->encrypt($plaintext);
21
+ *
22
+ *    $rsa->loadKey($publickey);
23
+ *    echo $rsa->decrypt($ciphertext);
24
+ * ?>
25
+ * </code>
26
+ *
27
+ * Here's an example of how to create signatures and verify signatures with this library:
28
+ * <code>
29
+ * <?php
30
+ *    include('Crypt/RSA.php');
31
+ *
32
+ *    $rsa = new Crypt_RSA();
33
+ *    extract($rsa->createKey());
34
+ *
35
+ *    $plaintext = 'terrafrost';
36
+ *
37
+ *    $rsa->loadKey($privatekey);
38
+ *    $signature = $rsa->sign($plaintext);
39
+ *
40
+ *    $rsa->loadKey($publickey);
41
+ *    echo $rsa->verify($plaintext, $signature) ? 'verified' : 'unverified';
42
+ * ?>
43
+ * </code>
44
+ *
45
+ * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy
46
+ * of this software and associated documentation files (the "Software"), to deal
47
+ * in the Software without restriction, including without limitation the rights
48
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
49
+ * copies of the Software, and to permit persons to whom the Software is
50
+ * furnished to do so, subject to the following conditions:
51
+ * 
52
+ * The above copyright notice and this permission notice shall be included in
53
+ * all copies or substantial portions of the Software.
54
+ * 
55
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
56
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
57
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
58
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
59
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
60
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
61
+ * THE SOFTWARE.
62
+ *
63
+ * @category   Crypt
64
+ * @package    Crypt_RSA
65
+ * @author     Jim Wigginton <[email protected]>
66
+ * @copyright  MMIX Jim Wigginton
67
+ * @license    http://www.opensource.org/licenses/mit-license.html  MIT License
68
+ * @version    $Id: RSA.php,v 1.19 2010/09/12 21:58:54 terrafrost Exp $
69
+ * @link       http://phpseclib.sourceforge.net
70
+ */
71
+
72
+/**
73
+ * Include Math_BigInteger
74
+ */
75
+require_once('Math/BigInteger.php');
76
+
77
+/**
78
+ * Include Crypt_Random
79
+ */
80
+require_once('Crypt/Random.php');
81
+
82
+/**
83
+ * Include Crypt_Hash
84
+ */
85
+require_once('Crypt/Hash.php');
86
+
87
+/**#@+
88
+ * @access public
89
+ * @see Crypt_RSA::encrypt()
90
+ * @see Crypt_RSA::decrypt()
91
+ */
92
+/**
93
+ * Use {@link http://en.wikipedia.org/wiki/Optimal_Asymmetric_Encryption_Padding Optimal Asymmetric Encryption Padding}
94
+ * (OAEP) for encryption / decryption.
95
+ *
96
+ * Uses sha1 by default.
97
+ *
98
+ * @see Crypt_RSA::setHash()
99
+ * @see Crypt_RSA::setMGFHash()
100
+ */
101
+define('CRYPT_RSA_ENCRYPTION_OAEP',  1);
102
+/**
103
+ * Use PKCS#1 padding.
104
+ *
105
+ * Although CRYPT_RSA_ENCRYPTION_OAEP offers more security, including PKCS#1 padding is necessary for purposes of backwards
106
+ * compatability with protocols (like SSH-1) written before OAEP's introduction.
107
+ */
108
+define('CRYPT_RSA_ENCRYPTION_PKCS1', 2);
109
+/**#@-*/
110
+
111
+/**#@+
112
+ * @access public
113
+ * @see Crypt_RSA::sign()
114
+ * @see Crypt_RSA::verify()
115
+ * @see Crypt_RSA::setHash()
116
+ */
117
+/**
118
+ * Use the Probabilistic Signature Scheme for signing
119
+ *
120
+ * Uses sha1 by default.
121
+ *
122
+ * @see Crypt_RSA::setSaltLength()
123
+ * @see Crypt_RSA::setMGFHash()
124
+ */
125
+define('CRYPT_RSA_SIGNATURE_PSS',  1);
126
+/**
127
+ * Use the PKCS#1 scheme by default.
128
+ *
129
+ * Although CRYPT_RSA_SIGNATURE_PSS offers more security, including PKCS#1 signing is necessary for purposes of backwards
130
+ * compatability with protocols (like SSH-2) written before PSS's introduction.
131
+ */
132
+define('CRYPT_RSA_SIGNATURE_PKCS1', 2);
133
+/**#@-*/
134
+
135
+/**#@+
136
+ * @access private
137
+ * @see Crypt_RSA::createKey()
138
+ */
139
+/**
140
+ * ASN1 Integer
141
+ */
142
+define('CRYPT_RSA_ASN1_INTEGER',   2);
143
+/**
144
+ * ASN1 Sequence (with the constucted bit set)
145
+ */
146
+define('CRYPT_RSA_ASN1_SEQUENCE', 48);
147
+/**#@-*/
148
+
149
+/**#@+
150
+ * @access private
151
+ * @see Crypt_RSA::Crypt_RSA()
152
+ */
153
+/**
154
+ * To use the pure-PHP implementation
155
+ */
156
+define('CRYPT_RSA_MODE_INTERNAL', 1);
157
+/**
158
+ * To use the OpenSSL library
159
+ *
160
+ * (if enabled; otherwise, the internal implementation will be used)
161
+ */
162
+define('CRYPT_RSA_MODE_OPENSSL', 2);
163
+/**#@-*/
164
+
165
+/**#@+
166
+ * @access public
167
+ * @see Crypt_RSA::createKey()
168
+ * @see Crypt_RSA::setPrivateKeyFormat()
169
+ */
170
+/**
171
+ * PKCS#1 formatted private key
172
+ *
173
+ * Used by OpenSSH
174
+ */
175
+define('CRYPT_RSA_PRIVATE_FORMAT_PKCS1', 0);
176
+/**
177
+ * PuTTY formatted private key
178
+ */
179
+define('CRYPT_RSA_PRIVATE_FORMAT_PUTTY', 1);
180
+/**
181
+ * XML formatted private key
182
+ */
183
+define('CRYPT_RSA_PRIVATE_FORMAT_XML', 2);
184
+/**#@-*/
185
+
186
+/**#@+
187
+ * @access public
188
+ * @see Crypt_RSA::createKey()
189
+ * @see Crypt_RSA::setPublicKeyFormat()
190
+ */
191
+/**
192
+ * Raw public key
193
+ *
194
+ * An array containing two Math_BigInteger objects.
195
+ *
196
+ * The exponent can be indexed with any of the following:
197
+ *
198
+ * 0, e, exponent, publicExponent
199
+ *
200
+ * The modulus can be indexed with any of the following:
201
+ *
202
+ * 1, n, modulo, modulus
203
+ */
204
+define('CRYPT_RSA_PUBLIC_FORMAT_RAW', 3);
205
+/**
206
+ * PKCS#1 formatted public key
207
+ */
208
+define('CRYPT_RSA_PUBLIC_FORMAT_PKCS1', 4);
209
+/**
210
+ * XML formatted public key
211
+ */
212
+define('CRYPT_RSA_PUBLIC_FORMAT_XML', 5);
213
+/**
214
+ * OpenSSH formatted public key
215
+ *
216
+ * Place in $HOME/.ssh/authorized_keys
217
+ */
218
+define('CRYPT_RSA_PUBLIC_FORMAT_OPENSSH', 6);
219
+/**#@-*/
220
+
221
+/**
222
+ * Pure-PHP PKCS#1 compliant implementation of RSA.
223
+ *
224
+ * @author  Jim Wigginton <[email protected]>
225
+ * @version 0.1.0
226
+ * @access  public
227
+ * @package Crypt_RSA
228
+ */
229
+class Crypt_RSA {
230
+    /**
231
+     * Precomputed Zero
232
+     *
233
+     * @var Array
234
+     * @access private
235
+     */
236
+    var $zero;
237
+
238
+    /**
239
+     * Precomputed One
240
+     *
241
+     * @var Array
242
+     * @access private
243
+     */
244
+    var $one;
245
+
246
+    /**
247
+     * Private Key Format
248
+     *
249
+     * @var Integer
250
+     * @access private
251
+     */
252
+    var $privateKeyFormat = CRYPT_RSA_PRIVATE_FORMAT_PKCS1;
253
+
254
+    /**
255
+     * Public Key Format
256
+     *
257
+     * @var Integer
258
+     * @access public
259
+     */
260
+    var $publicKeyFormat = CRYPT_RSA_PUBLIC_FORMAT_PKCS1;
261
+
262
+    /**
263
+     * Modulus (ie. n)
264
+     *
265
+     * @var Math_BigInteger
266
+     * @access private
267
+     */
268
+    var $modulus;
269
+
270
+    /**
271
+     * Modulus length
272
+     *
273
+     * @var Math_BigInteger
274
+     * @access private
275
+     */
276
+    var $k;
277
+
278
+    /**
279
+     * Exponent (ie. e or d)
280
+     *
281
+     * @var Math_BigInteger
282
+     * @access private
283
+     */
284
+    var $exponent;
285
+
286
+    /**
287
+     * Primes for Chinese Remainder Theorem (ie. p and q)
288
+     *
289
+     * @var Array
290
+     * @access private
291
+     */
292
+    var $primes;
293
+
294
+    /**
295
+     * Exponents for Chinese Remainder Theorem (ie. dP and dQ)
296
+     *
297
+     * @var Array
298
+     * @access private
299
+     */
300
+    var $exponents;
301
+
302
+    /**
303
+     * Coefficients for Chinese Remainder Theorem (ie. qInv)
304
+     *
305
+     * @var Array
306
+     * @access private
307
+     */
308
+    var $coefficients;
309
+
310
+    /**
311
+     * Hash name
312
+     *
313
+     * @var String
314
+     * @access private
315
+     */
316
+    var $hashName;
317
+
318
+    /**
319
+     * Hash function
320
+     *
321
+     * @var Crypt_Hash
322
+     * @access private
323
+     */
324
+    var $hash;
325
+
326
+    /**
327
+     * Length of hash function output
328
+     *
329
+     * @var Integer
330
+     * @access private
331
+     */
332
+    var $hLen;
333
+
334
+    /**
335
+     * Length of salt
336
+     *
337
+     * @var Integer
338
+     * @access private
339
+     */
340
+    var $sLen;
341
+
342
+    /**
343
+     * Hash function for the Mask Generation Function
344
+     *
345
+     * @var Crypt_Hash
346
+     * @access private
347
+     */
348
+    var $mgfHash;
349
+
350
+    /**
351
+     * Length of MGF hash function output
352
+     *
353
+     * @var Integer
354
+     * @access private
355
+     */
356
+    var $mgfHLen;
357
+
358
+    /**
359
+     * Encryption mode
360
+     *
361
+     * @var Integer
362
+     * @access private
363
+     */
364
+    var $encryptionMode = CRYPT_RSA_ENCRYPTION_OAEP;
365
+
366
+    /**
367
+     * Signature mode
368
+     *
369
+     * @var Integer
370
+     * @access private
371
+     */
372
+    var $signatureMode = CRYPT_RSA_SIGNATURE_PSS;
373
+
374
+    /**
375
+     * Public Exponent
376
+     *
377
+     * @var Mixed
378
+     * @access private
379
+     */
380
+    var $publicExponent = false;
381
+
382
+    /**
383
+     * Password
384
+     *
385
+     * @var String
386
+     * @access private
387
+     */
388
+    var $password = '';
389
+
390
+    /**
391
+     * Components
392
+     *
393
+     * For use with parsing XML formatted keys.  PHP's XML Parser functions use utilized - instead of PHP's DOM functions -
394
+     * because PHP's XML Parser functions work on PHP4 whereas PHP's DOM functions - although surperior - don't.
395
+     *
396
+     * @see Crypt_RSA::_start_element_handler()
397
+     * @var Array
398
+     * @access private
399
+     */
400
+    var $components = array();
401
+
402
+    /**
403
+     * Current String
404
+     *
405
+     * For use with parsing XML formatted keys.
406
+     *
407
+     * @see Crypt_RSA::_character_handler()
408
+     * @see Crypt_RSA::_stop_element_handler()
409
+     * @var Mixed
410
+     * @access private
411
+     */
412
+    var $current;
413
+
414
+    /**
415
+     * The constructor
416
+     *
417
+     * If you want to make use of the openssl extension, you'll need to set the mode manually, yourself.  The reason
418
+     * Crypt_RSA doesn't do it is because OpenSSL doesn't fail gracefully.  openssl_pkey_new(), in particular, requires
419
+     * openssl.cnf be present somewhere and, unfortunately, the only real way to find out is too late.
420
+     *
421
+     * @return Crypt_RSA
422
+     * @access public
423
+     */
424
+    function Crypt_RSA()
425
+    {
426
+        if ( !defined('CRYPT_RSA_MODE') ) {
427
+            switch (true) {
428
+                //case extension_loaded('openssl') && version_compare(PHP_VERSION, '4.2.0', '>='):
429
+                //    define('CRYPT_RSA_MODE', CRYPT_RSA_MODE_OPENSSL);
430
+                //    break;
431
+                default:
432
+                    define('CRYPT_RSA_MODE', CRYPT_RSA_MODE_INTERNAL);
433
+            }
434
+        }
435
+
436
+        $this->zero = new Math_BigInteger();
437
+        $this->one = new Math_BigInteger(1);
438
+
439
+        $this->hash = new Crypt_Hash('sha1');
440
+        $this->hLen = $this->hash->getLength();
441
+        $this->hashName = 'sha1';
442
+        $this->mgfHash = new Crypt_Hash('sha1');
443
+        $this->mgfHLen = $this->mgfHash->getLength();
444
+    }
445
+
446
+    /**
447
+     * Create public / private key pair
448
+     *
449
+     * Returns an array with the following three elements:
450
+     *  - 'privatekey': The private key.
451
+     *  - 'publickey':  The public key.
452
+     *  - 'partialkey': A partially computed key (if the execution time exceeded $timeout).
453
+     *                  Will need to be passed back to Crypt_RSA::createKey() as the third parameter for further processing.
454
+     *
455
+     * @access public
456
+     * @param optional Integer $bits
457
+     * @param optional Integer $timeout
458
+     * @param optional Math_BigInteger $p
459
+     */
460
+    function createKey($bits = 1024, $timeout = false, $partial = array())
461
+    {
462
+        if ( CRYPT_RSA_MODE == CRYPT_RSA_MODE_OPENSSL ) {
463
+            $rsa = openssl_pkey_new(array('private_key_bits' => $bits));
464
+            openssl_pkey_export($rsa, $privatekey);
465
+            $publickey = openssl_pkey_get_details($rsa);
466
+            $publickey = $publickey['key'];
467
+
468
+            if ($this->privateKeyFormat != CRYPT_RSA_PRIVATE_FORMAT_PKCS1) {
469
+                $privatekey = call_user_func_array(array($this, '_convertPrivateKey'), array_values($this->_parseKey($privatekey, CRYPT_RSA_PRIVATE_FORMAT_PKCS1)));
470
+                $publickey = call_user_func_array(array($this, '_convertPublicKey'), array_values($this->_parseKey($publickey, CRYPT_RSA_PUBLIC_FORMAT_PKCS1)));
471
+            }
472
+
473
+            return array(
474
+                'privatekey' => $privatekey,
475
+                'publickey' => $publickey,
476
+                'partialkey' => false
477
+            );
478
+        }
479
+
480
+        static $e;
481
+        if (!isset($e)) {
482
+            if (!defined('CRYPT_RSA_EXPONENT')) {
483
+                // http://en.wikipedia.org/wiki/65537_%28number%29
484
+                define('CRYPT_RSA_EXPONENT', '65537');
485
+            }
486
+            if (!defined('CRYPT_RSA_COMMENT')) {
487
+                define('CRYPT_RSA_COMMENT', 'phpseclib-generated-key');
488
+            }
489
+            // per <http://cseweb.ucsd.edu/~hovav/dist/survey.pdf#page=5>, this number ought not result in primes smaller
490
+            // than 256 bits.
491
+            if (!defined('CRYPT_RSA_SMALLEST_PRIME')) {
492
+                define('CRYPT_RSA_SMALLEST_PRIME', 4096);
493
+            }
494
+
495
+            $e = new Math_BigInteger(CRYPT_RSA_EXPONENT);
496
+        }
497
+
498
+        extract($this->_generateMinMax($bits));
499
+        $absoluteMin = $min;
500
+        $temp = $bits >> 1;
501
+        if ($temp > CRYPT_RSA_SMALLEST_PRIME) {
502
+            $num_primes = floor($bits / CRYPT_RSA_SMALLEST_PRIME);
503
+            $temp = CRYPT_RSA_SMALLEST_PRIME;
504
+        } else {
505
+            $num_primes = 2;
506
+        }
507
+        extract($this->_generateMinMax($temp + $bits % $temp));
508
+        $finalMax = $max;
509
+        extract($this->_generateMinMax($temp));
510
+
511
+        $generator = new Math_BigInteger();
512
+        $generator->setRandomGenerator('crypt_random');
513
+
514
+        $n = $this->one->copy();
515
+        if (!empty($partial)) {
516
+            extract(unserialize($partial));
517
+        } else {
518
+            $exponents = $coefficients = $primes = array();
519
+            $lcm = array(
520
+                'top' => $this->one->copy(),
521
+                'bottom' => false
522
+            );
523
+        }
524
+
525
+        $start = time();
526
+        $i0 = count($primes) + 1;
527
+
528
+        do {
529
+            for ($i = $i0; $i <= $num_primes; $i++) {
530
+                if ($timeout !== false) {
531
+                    $timeout-= time() - $start;
532
+                    $start = time();
533
+                    if ($timeout <= 0) {
534
+                        return array(
535
+                            'privatekey' => '',
536
+                            'publickey'  => '',
537
+                            'partialkey' => serialize(array(
538
+                                'primes' => $primes,
539
+                                'coefficients' => $coefficients,
540
+                                'lcm' => $lcm,
541
+                                'exponents' => $exponents
542
+                            ))
543
+                        );
544
+                    }
545
+                }
546
+
547
+                if ($i == $num_primes) {
548
+                    list($min, $temp) = $absoluteMin->divide($n);
549
+                    if (!$temp->equals($this->zero)) {
550
+                        $min = $min->add($this->one); // ie. ceil()
551
+                    }
552
+                    $primes[$i] = $generator->randomPrime($min, $finalMax, $timeout);
553
+                } else {
554
+                    $primes[$i] = $generator->randomPrime($min, $max, $timeout);
555
+                }
556
+
557
+                if ($primes[$i] === false) { // if we've reached the timeout
558
+                    if (count($primes) > 1) {
559
+                        $partialkey = '';
560
+                    } else {
561
+                        array_pop($primes);
562
+                        $partialkey = serialize(array(
563
+                            'primes' => $primes,
564
+                            'coefficients' => $coefficients,
565
+                            'lcm' => $lcm,
566
+                            'exponents' => $exponents
567
+                        ));
568
+                    }
569
+
570
+                    return array(
571
+                        'privatekey' => '',
572
+                        'publickey'  => '',
573
+                        'partialkey' => $partialkey
574
+                    );
575
+                }
576
+
577
+                // the first coefficient is calculated differently from the rest
578
+                // ie. instead of being $primes[1]->modInverse($primes[2]), it's $primes[2]->modInverse($primes[1])
579
+                if ($i > 2) {
580
+                    $coefficients[$i] = $n->modInverse($primes[$i]);
581
+                }
582
+
583
+                $n = $n->multiply($primes[$i]);
584
+
585
+                $temp = $primes[$i]->subtract($this->one);
586
+
587
+                // textbook RSA implementations use Euler's totient function instead of the least common multiple.
588
+                // see http://en.wikipedia.org/wiki/Euler%27s_totient_function
589
+                $lcm['top'] = $lcm['top']->multiply($temp);
590
+                $lcm['bottom'] = $lcm['bottom'] === false ? $temp : $lcm['bottom']->gcd($temp);
591
+
592
+                $exponents[$i] = $e->modInverse($temp);
593
+            }
594
+
595
+            list($lcm) = $lcm['top']->divide($lcm['bottom']);
596
+            $gcd = $lcm->gcd($e);
597
+            $i0 = 1;
598
+        } while (!$gcd->equals($this->one));
599
+
600
+        $d = $e->modInverse($lcm);
601
+
602
+        $coefficients[2] = $primes[2]->modInverse($primes[1]);
603
+
604
+        // from <http://tools.ietf.org/html/rfc3447#appendix-A.1.2>:
605
+        // RSAPrivateKey ::= SEQUENCE {
606
+        //     version           Version,
607
+        //     modulus           INTEGER,  -- n
608
+        //     publicExponent    INTEGER,  -- e
609
+        //     privateExponent   INTEGER,  -- d
610
+        //     prime1            INTEGER,  -- p
611
+        //     prime2            INTEGER,  -- q
612
+        //     exponent1         INTEGER,  -- d mod (p-1)
613
+        //     exponent2         INTEGER,  -- d mod (q-1)
614
+        //     coefficient       INTEGER,  -- (inverse of q) mod p
615
+        //     otherPrimeInfos   OtherPrimeInfos OPTIONAL
616
+        // }
617
+
618
+        return array(
619
+            'privatekey' => $this->_convertPrivateKey($n, $e, $d, $primes, $exponents, $coefficients),
620
+            'publickey'  => $this->_convertPublicKey($n, $e),
621
+            'partialkey' => false
622
+        );
623
+    }
624
+
625
+    /**
626
+     * Convert a private key to the appropriate format.
627
+     *
628
+     * @access private
629
+     * @see setPrivateKeyFormat()
630
+     * @param String $RSAPrivateKey
631
+     * @return String
632
+     */
633
+    function _convertPrivateKey($n, $e, $d, $primes, $exponents, $coefficients)
634
+    {
635
+        $num_primes = count($primes);
636
+        $raw = array(
637
+            'version' => $num_primes == 2 ? chr(0) : chr(1), // two-prime vs. multi
638
+            'modulus' => $n->toBytes(true),
639
+            'publicExponent' => $e->toBytes(true),
640
+            'privateExponent' => $d->toBytes(true),
641
+            'prime1' => $primes[1]->toBytes(true),
642
+            'prime2' => $primes[2]->toBytes(true),
643
+            'exponent1' => $exponents[1]->toBytes(true),
644
+            'exponent2' => $exponents[2]->toBytes(true),
645
+            'coefficient' => $coefficients[2]->toBytes(true)
646
+        );
647
+
648
+        // if the format in question does not support multi-prime rsa and multi-prime rsa was used,
649
+        // call _convertPublicKey() instead.
650
+        switch ($this->privateKeyFormat) {
651
+            default: // eg. CRYPT_RSA_PRIVATE_FORMAT_PKCS1
652
+                $components = array();
653
+                foreach ($raw as $name => $value) {
654
+                    $components[$name] = pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($value)), $value);
655
+                }
656
+
657
+                $RSAPrivateKey = implode('', $components);
658
+
659
+                if ($num_primes > 2) {
660
+                    $OtherPrimeInfos = '';
661
+                    for ($i = 3; $i <= $num_primes; $i++) {
662
+                        // OtherPrimeInfos ::= SEQUENCE SIZE(1..MAX) OF OtherPrimeInfo
663
+                        //
664
+                        // OtherPrimeInfo ::= SEQUENCE {
665
+                        //     prime             INTEGER,  -- ri
666
+                        //     exponent          INTEGER,  -- di
667
+                        //     coefficient       INTEGER   -- ti
668
+                        // }
669
+                        $OtherPrimeInfo = pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($primes[$i]->toBytes(true))), $primes[$i]->toBytes(true));
670
+                        $OtherPrimeInfo.= pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($exponents[$i]->toBytes(true))), $exponents[$i]->toBytes(true));
671
+                        $OtherPrimeInfo.= pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($coefficients[$i]->toBytes(true))), $coefficients[$i]->toBytes(true));
672
+                        $OtherPrimeInfos.= pack('Ca*a*', CRYPT_RSA_ASN1_SEQUENCE, $this->_encodeLength(strlen($OtherPrimeInfo)), $OtherPrimeInfo);
673
+                    }
674
+                    $RSAPrivateKey.= pack('Ca*a*', CRYPT_RSA_ASN1_SEQUENCE, $this->_encodeLength(strlen($OtherPrimeInfos)), $OtherPrimeInfos);
675
+                }
676
+
677
+                $RSAPrivateKey = pack('Ca*a*', CRYPT_RSA_ASN1_SEQUENCE, $this->_encodeLength(strlen($RSAPrivateKey)), $RSAPrivateKey);
678
+
679
+                if (!empty($this->password)) {
680
+                    $iv = $this->_random(8);
681
+                    $symkey = pack('H*', md5($this->password . $iv)); // symkey is short for symmetric key
682
+                    $symkey.= substr(pack('H*', md5($symkey . $this->password . $iv)), 0, 8);
683
+                    if (!class_exists('Crypt_TripleDES')) {
684
+                        require_once('Crypt/TripleDES.php');
685
+                    }
686
+                    $des = new Crypt_TripleDES();
687
+                    $des->setKey($symkey);
688
+                    $des->setIV($iv);
689
+                    $iv = strtoupper(bin2hex($iv));
690
+                    $RSAPrivateKey = "-----BEGIN RSA PRIVATE KEY-----\r\n" .
691
+                                     "Proc-Type: 4,ENCRYPTED\r\n" .
692
+                                     "DEK-Info: DES-EDE3-CBC,$iv\r\n" .
693
+                                     "\r\n" .
694
+                                     chunk_split(base64_encode($des->encrypt($RSAPrivateKey))) .
695
+                                     '-----END RSA PRIVATE KEY-----';
696
+                } else {
697
+                    $RSAPrivateKey = "-----BEGIN RSA PRIVATE KEY-----\r\n" .
698
+                                     chunk_split(base64_encode($RSAPrivateKey)) .
699
+                                     '-----END RSA PRIVATE KEY-----';
700
+                }
701
+
702
+                return $RSAPrivateKey;
703
+        }
704
+    }
705
+
706
+    /**
707
+     * Convert a public key to the appropriate format
708
+     *
709
+     * @access private
710
+     * @see setPublicKeyFormat()
711
+     * @param String $RSAPrivateKey
712
+     * @return String
713
+     */
714
+    function _convertPublicKey($n, $e)
715
+    {
716
+        $modulus = $n->toBytes(true);
717
+        $publicExponent = $e->toBytes(true);
718
+
719
+        switch ($this->publicKeyFormat) {
720
+            case CRYPT_RSA_PUBLIC_FORMAT_RAW:
721
+                return array('e' => $e->copy(), 'n' => $n->copy());
722
+            case CRYPT_RSA_PUBLIC_FORMAT_OPENSSH:
723
+                // from <http://tools.ietf.org/html/rfc4253#page-15>:
724
+                // string    "ssh-rsa"
725
+                // mpint     e
726
+                // mpint     n
727
+                $RSAPublicKey = pack('Na*Na*Na*', strlen('ssh-rsa'), 'ssh-rsa', strlen($publicExponent), $publicExponent, strlen($modulus), $modulus);
728
+                $RSAPublicKey = 'ssh-rsa ' . base64_encode($RSAPublicKey) . ' ' . CRYPT_RSA_COMMENT;
729
+
730
+                return $RSAPublicKey;
731
+            default: // eg. CRYPT_RSA_PUBLIC_FORMAT_PKCS1
732
+                // from <http://tools.ietf.org/html/rfc3447#appendix-A.1.1>:
733
+                // RSAPublicKey ::= SEQUENCE {
734
+                //     modulus           INTEGER,  -- n
735
+                //     publicExponent    INTEGER   -- e
736
+                // }
737
+                $components = array(
738
+                    'modulus' => pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($modulus)), $modulus),
739
+                    'publicExponent' => pack('Ca*a*', CRYPT_RSA_ASN1_INTEGER, $this->_encodeLength(strlen($publicExponent)), $publicExponent)
740
+                );
741
+
742
+                $RSAPublicKey = pack('Ca*a*a*',
743
+                    CRYPT_RSA_ASN1_SEQUENCE, $this->_encodeLength(strlen($components['modulus']) + strlen($components['publicExponent'])),
744
+                    $components['modulus'], $components['publicExponent']
745
+                );
746
+
747
+                $RSAPublicKey = "-----BEGIN PUBLIC KEY-----\r\n" .
748
+                                 chunk_split(base64_encode($RSAPublicKey)) .
749
+                                 '-----END PUBLIC KEY-----';
750
+
751
+                return $RSAPublicKey;
752
+        }
753
+    }
754
+
755
+    /**
756
+     * Break a public or private key down into its constituant components
757
+     *
758
+     * @access private
759
+     * @see _convertPublicKey()
760
+     * @see _convertPrivateKey()
761
+     * @param String $key
762
+     * @param Integer $type
763
+     * @return Array
764
+     */
765
+    function _parseKey($key, $type)
766
+    {
767
+        switch ($type) {
768
+            case CRYPT_RSA_PUBLIC_FORMAT_RAW:
769
+                if (!is_array($key)) {
770
+                    return false;
771
+                }
772
+                $components = array();
773
+                switch (true) {
774
+                    case isset($key['e']):
775
+                        $components['publicExponent'] = $key['e']->copy();
776
+                        break;
777
+                    case isset($key['exponent']):
778
+                        $components['publicExponent'] = $key['exponent']->copy();
779
+                        break;
780
+                    case isset($key['publicExponent']):
781
+                        $components['publicExponent'] = $key['publicExponent']->copy();
782
+                        break;
783
+                    case isset($key[0]):
784
+                        $components['publicExponent'] = $key[0]->copy();
785
+                }
786
+                switch (true) {
787
+                    case isset($key['n']):
788
+                        $components['modulus'] = $key['n']->copy();
789
+                        break;
790
+                    case isset($key['modulo']):
791
+                        $components['modulus'] = $key['modulo']->copy();
792
+                        break;
793
+                    case isset($key['modulus']):
794
+                        $components['modulus'] = $key['modulus']->copy();
795
+                        break;
796
+                    case isset($key[1]):
797
+                        $components['modulus'] = $key[1]->copy();
798
+                }
799
+                return $components;
800
+            case CRYPT_RSA_PRIVATE_FORMAT_PKCS1:
801
+            case CRYPT_RSA_PUBLIC_FORMAT_PKCS1:
802
+                /* Although PKCS#1 proposes a format that public and private keys can use, encrypting them is
803
+                   "outside the scope" of PKCS#1.  PKCS#1 then refers you to PKCS#12 and PKCS#15 if you're wanting to
804
+                   protect private keys, however, that's not what OpenSSL* does.  OpenSSL protects private keys by adding
805
+                   two new "fields" to the key - DEK-Info and Proc-Type.  These fields are discussed here:
806
+
807
+                   http://tools.ietf.org/html/rfc1421#section-4.6.1.1
808
+                   http://tools.ietf.org/html/rfc1421#section-4.6.1.3
809
+
810
+                   DES-EDE3-CBC as an algorithm, however, is not discussed anywhere, near as I can tell.
811
+                   DES-CBC and DES-EDE are discussed in RFC1423, however, DES-EDE3-CBC isn't, nor is its key derivation
812
+                   function.  As is, the definitive authority on this encoding scheme isn't the IETF but rather OpenSSL's
813
+                   own implementation.  ie. the implementation *is* the standard and any bugs that may exist in that 
814
+                   implementation are part of the standard, as well.
815
+
816
+                   * OpenSSL is the de facto standard.  It's utilized by OpenSSH and other projects */
817
+                if (preg_match('#DEK-Info: (.+),(.+)#', $key, $matches)) {
818
+                    $iv = pack('H*', trim($matches[2]));
819
+                    $symkey = pack('H*', md5($this->password . substr($iv, 0, 8))); // symkey is short for symmetric key
820
+                    $symkey.= substr(pack('H*', md5($symkey . $this->password . $iv)), 0, 8);
821
+                    $ciphertext = preg_replace('#.+(\r|\n|\r\n)\1|[\r\n]|-.+-#s', '', $key);
822
+                    $ciphertext = preg_match('#^[a-zA-Z\d/+]*={0,2}$#', $ciphertext) ? base64_decode($ciphertext) : false;
823
+                    if ($ciphertext === false) {
824
+                        $ciphertext = $key;
825
+                    }
826
+                    switch ($matches[1]) {
827
+                        case 'AES-128-CBC':
828
+                            if (!class_exists('Crypt_AES')) {
829
+                                require_once('Crypt/AES.php');
830
+                            }
831
+                            $symkey = substr($symkey, 0, 16);
832
+                            $crypto = new Crypt_AES();
833
+                            break;
834
+                        case 'DES-EDE3-CFB':
835
+                            if (!class_exists('Crypt_TripleDES')) {
836
+                                require_once('Crypt/TripleDES.php');
837
+                            }
838
+                            $crypto = new Crypt_TripleDES(CRYPT_DES_MODE_CFB);
839
+                            break;
840
+                        case 'DES-EDE3-CBC':
841
+                            if (!class_exists('Crypt_TripleDES')) {
842
+                                require_once('Crypt/TripleDES.php');
843
+                            }
844
+                            $crypto = new Crypt_TripleDES();
845
+                            break;
846
+                        case 'DES-CBC':
847
+                            if (!class_exists('Crypt_DES')) {
848
+                                require_once('Crypt/DES.php');
849
+                            }
850
+                            $crypto = new Crypt_DES();
851
+                            break;
852
+                        default:
853
+                            return false;
854
+                    }
855
+                    $crypto->setKey($symkey);
856
+                    $crypto->setIV($iv);
857
+                    $decoded = $crypto->decrypt($ciphertext);
858
+                } else {
859
+                    $decoded = preg_replace('#-.+-|[\r\n]#', '', $key);
860
+                    $decoded = preg_match('#^[a-zA-Z\d/+]*={0,2}$#', $decoded) ? base64_decode($decoded) : false;
861
+                }
862
+
863
+                if ($decoded !== false) {
864
+                    $key = $decoded;
865
+                }
866
+
867
+                $components = array();
868
+
869
+                if (ord($this->_string_shift($key)) != CRYPT_RSA_ASN1_SEQUENCE) {
870
+                    return false;
871
+                }
872
+                if ($this->_decodeLength($key) != strlen($key)) {
873
+                    return false;
874
+                }
875
+
876
+                $tag = ord($this->_string_shift($key));
877
+                if ($tag == CRYPT_RSA_ASN1_SEQUENCE) {
878
+                    /* intended for keys for which OpenSSL's asn1parse returns the following:
879
+
880
+                        0:d=0  hl=4 l= 290 cons: SEQUENCE
881
+                        4:d=1  hl=2 l=  13 cons:  SEQUENCE
882
+                        6:d=2  hl=2 l=   9 prim:   OBJECT            :rsaEncryption
883
+                       17:d=2  hl=2 l=   0 prim:   NULL
884
+                       19:d=1  hl=4 l= 271 prim:  BIT STRING */
885
+                    $this->_string_shift($key, $this->_decodeLength($key));
886
+                    $this->_string_shift($key); // skip over the BIT STRING tag
887
+                    $this->_decodeLength($key); // skip over the BIT STRING length
888
+                    // "The initial octet shall encode, as an unsigned binary integer wtih bit 1 as the least significant bit, the number of
889
+                    //  unused bits in teh final subsequent octet. The number shall be in the range zero to seven."
890
+                    //  -- http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf (section 8.6.2.2)
891
+                    $this->_string_shift($key);
892
+                    if (ord($this->_string_shift($key)) != CRYPT_RSA_ASN1_SEQUENCE) {
893
+                        return false;
894
+                    }
895
+                    if ($this->_decodeLength($key) != strlen($key)) {
896
+                        return false;
897
+                    }
898
+                    $tag = ord($this->_string_shift($key));
899
+                }
900
+                if ($tag != CRYPT_RSA_ASN1_INTEGER) {
901
+                    return false;
902
+                }
903
+
904
+                $length = $this->_decodeLength($key);
905
+                $temp = $this->_string_shift($key, $length);
906
+                if (strlen($temp) != 1 || ord($temp) > 2) {
907
+                    $components['modulus'] = new Math_BigInteger($temp, -256);
908
+                    $this->_string_shift($key); // skip over CRYPT_RSA_ASN1_INTEGER
909
+                    $length = $this->_decodeLength($key);
910
+                    $components[$type == CRYPT_RSA_PUBLIC_FORMAT_PKCS1 ? 'publicExponent' : 'privateExponent'] = new Math_BigInteger($this->_string_shift($key, $length), -256);
911
+
912
+                    return $components;
913
+                }
914
+                if (ord($this->_string_shift($key)) != CRYPT_RSA_ASN1_INTEGER) {
915
+                    return false;
916
+                }
917
+                $length = $this->_decodeLength($key);
918
+                $components['modulus'] = new Math_BigInteger($this->_string_shift($key, $length), -256);
919
+                $this->_string_shift($key);
920
+                $length = $this->_decodeLength($key);
921
+                $components['publicExponent'] = new Math_BigInteger($this->_string_shift($key, $length), -256);
922
+                $this->_string_shift($key);
923
+                $length = $this->_decodeLength($key);
924
+                $components['privateExponent'] = new Math_BigInteger($this->_string_shift($key, $length), -256);
925
+                $this->_string_shift($key);
926
+                $length = $this->_decodeLength($key);
927
+                $components['primes'] = array(1 => new Math_BigInteger($this->_string_shift($key, $length), -256));
928
+                $this->_string_shift($key);
929
+                $length = $this->_decodeLength($key);
930
+                $components['primes'][] = new Math_BigInteger($this->_string_shift($key, $length), -256);
931
+                $this->_string_shift($key);
932
+                $length = $this->_decodeLength($key);
933
+                $components['exponents'] = array(1 => new Math_BigInteger($this->_string_shift($key, $length), -256));
934
+                $this->_string_shift($key);
935
+                $length = $this->_decodeLength($key);
936
+                $components['exponents'][] = new Math_BigInteger($this->_string_shift($key, $length), -256);
937
+                $this->_string_shift($key);
938
+                $length = $this->_decodeLength($key);
939
+                $components['coefficients'] = array(2 => new Math_BigInteger($this->_string_shift($key, $length), -256));
940
+
941
+                if (!empty($key)) {
942
+                    if (ord($this->_string_shift($key)) != CRYPT_RSA_ASN1_SEQUENCE) {
943
+                        return false;
944
+                    }
945
+                    $this->_decodeLength($key);
946
+                    while (!empty($key)) {
947
+                        if (ord($this->_string_shift($key)) != CRYPT_RSA_ASN1_SEQUENCE) {
948
+                            return false;
949
+                        }
950
+                        $this->_decodeLength($key);
951
+                        $key = substr($key, 1);
952
+                        $length = $this->_decodeLength($key);
953
+                        $components['primes'][] = new Math_BigInteger($this->_string_shift($key, $length), -256);
954
+                        $this->_string_shift($key);
955
+                        $length = $this->_decodeLength($key);
956
+                        $components['exponents'][] = new Math_BigInteger($this->_string_shift($key, $length), -256);
957
+                        $this->_string_shift($key);
958
+                        $length = $this->_decodeLength($key);
959
+                        $components['coefficients'][] = new Math_BigInteger($this->_string_shift($key, $length), -256);
960
+                    }
961
+                }
962
+
963
+                return $components;
964
+            case CRYPT_RSA_PUBLIC_FORMAT_OPENSSH:
965
+                $key = base64_decode(preg_replace('#^ssh-rsa | .+$#', '', $key));
966
+                if ($key === false) {
967
+                    return false;
968
+                }
969
+
970
+                $cleanup = substr($key, 0, 11) == "\0\0\0\7ssh-rsa";
971
+
972
+                extract(unpack('Nlength', $this->_string_shift($key, 4)));
973
+                $publicExponent = new Math_BigInteger($this->_string_shift($key, $length), -256);
974
+                extract(unpack('Nlength', $this->_string_shift($key, 4)));
975
+                $modulus = new Math_BigInteger($this->_string_shift($key, $length), -256);
976
+
977
+                if ($cleanup && strlen($key)) {
978
+                    extract(unpack('Nlength', $this->_string_shift($key, 4)));
979
+                    return array(
980
+                        'modulus' => new Math_BigInteger($this->_string_shift($key, $length), -256),
981
+                        'publicExponent' => $modulus
982
+                    );
983
+                } else {
984
+                    return array(
985
+                        'modulus' => $modulus,
986
+                        'publicExponent' => $publicExponent
987
+                    );
988
+                }
989
+            // http://www.w3.org/TR/xmldsig-core/#sec-RSAKeyValue
990
+            // http://en.wikipedia.org/wiki/XML_Signature
991
+            case CRYPT_RSA_PRIVATE_FORMAT_XML:
992
+            case CRYPT_RSA_PUBLIC_FORMAT_XML:
993
+                $this->components = array();
994
+
995
+                $xml = xml_parser_create('UTF-8');
996
+                xml_set_object($xml, $this);
997
+                xml_set_element_handler($xml, '_start_element_handler', '_stop_element_handler');
998
+                xml_set_character_data_handler($xml, '_data_handler');
999
+                if (!xml_parse($xml, $key)) {
1000
+                    return false;
1001
+                }
1002
+
1003
+                return $this->components;
1004
+            // from PuTTY's SSHPUBK.C
1005
+            case CRYPT_RSA_PRIVATE_FORMAT_PUTTY:
1006
+                $components = array();
1007
+                $key = preg_split('#\r\n|\r|\n#', $key);
1008
+                $type = trim(preg_replace('#PuTTY-User-Key-File-2: (.+)#', '$1', $key[0]));
1009
+                if ($type != 'ssh-rsa') {
1010
+                    return false;
1011
+                }
1012
+                $encryption = trim(preg_replace('#Encryption: (.+)#', '$1', $key[1]));
1013
+
1014
+                $publicLength = trim(preg_replace('#Public-Lines: (\d+)#', '$1', $key[3]));
1015
+                $public = base64_decode(implode('', array_map('trim', array_slice($key, 4, $publicLength))));
1016
+                $public = substr($public, 11);
1017
+                extract(unpack('Nlength', $this->_string_shift($public, 4)));
1018
+                $components['publicExponent'] = new Math_BigInteger($this->_string_shift($public, $length), -256);
1019
+                extract(unpack('Nlength', $this->_string_shift($public, 4)));
1020
+                $components['modulus'] = new Math_BigInteger($this->_string_shift($public, $length), -256);
1021
+
1022
+                $privateLength = trim(preg_replace('#Private-Lines: (\d+)#', '$1', $key[$publicLength + 4]));
1023
+                $private = base64_decode(implode('', array_map('trim', array_slice($key, $publicLength + 5, $privateLength))));
1024
+
1025
+                switch ($encryption) {
1026
+                    case 'aes256-cbc':
1027
+                        if (!class_exists('Crypt_AES')) {
1028
+                            require_once('Crypt/AES.php');
1029
+                        }
1030
+                        $symkey = '';
1031
+                        $sequence = 0;
1032
+                        while (strlen($symkey) < 32) {
1033
+                            $temp = pack('Na*', $sequence++, $this->password);
1034
+                            $symkey.= pack('H*', sha1($temp));
1035
+                        }
1036
+                        $symkey = substr($symkey, 0, 32);
1037
+                        $crypto = new Crypt_AES();
1038
+                }
1039
+
1040
+                if ($encryption != 'none') {
1041
+                    $crypto->setKey($symkey);
1042
+                    $crypto->disablePadding();
1043
+                    $private = $crypto->decrypt($private);
1044
+                    if ($private === false) {
1045
+                        return false;
1046
+                    }
1047
+                }
1048
+
1049
+                extract(unpack('Nlength', $this->_string_shift($private, 4)));
1050
+                $components['privateExponent'] = new Math_BigInteger($this->_string_shift($private, $length), -256);
1051
+                extract(unpack('Nlength', $this->_string_shift($private, 4)));
1052
+                $components['primes'] = array(1 => new Math_BigInteger($this->_string_shift($private, $length), -256));
1053
+                extract(unpack('Nlength', $this->_string_shift($private, 4)));
1054
+                $components['primes'][] = new Math_BigInteger($this->_string_shift($private, $length), -256);
1055
+
1056
+                $temp = $components['primes'][1]->subtract($this->one);
1057
+                $components['exponents'] = array(1 => $components['publicExponent']->modInverse($temp));
1058
+                $temp = $components['primes'][2]->subtract($this->one);
1059
+                $components['exponents'][] = $components['publicExponent']->modInverse($temp);
1060
+
1061
+                extract(unpack('Nlength', $this->_string_shift($private, 4)));
1062
+                $components['coefficients'] = array(2 => new Math_BigInteger($this->_string_shift($private, $length), -256));
1063
+
1064
+                return $components;
1065
+        }
1066
+    }
1067
+
1068
+    /**
1069
+     * Start Element Handler
1070
+     *
1071
+     * Called by xml_set_element_handler()
1072
+     *
1073
+     * @access private
1074
+     * @param Resource $parser
1075
+     * @param String $name
1076
+     * @param Array $attribs
1077
+     */
1078
+    function _start_element_handler($parser, $name, $attribs)
1079
+    {
1080
+        //$name = strtoupper($name);
1081
+        switch ($name) {
1082
+            case 'MODULUS':
1083
+                $this->current = &$this->components['modulus'];
1084
+                break;
1085
+            case 'EXPONENT':
1086
+                $this->current = &$this->components['publicExponent'];
1087
+                break;
1088
+            case 'P':
1089
+                $this->current = &$this->components['primes'][1];
1090
+                break;
1091
+            case 'Q':
1092
+                $this->current = &$this->components['primes'][2];
1093
+                break;
1094
+            case 'DP':
1095
+                $this->current = &$this->components['exponents'][1];
1096
+                break;
1097
+            case 'DQ':
1098
+                $this->current = &$this->components['exponents'][2];
1099
+                break;
1100
+            case 'INVERSEQ':
1101
+                $this->current = &$this->components['coefficients'][2];
1102
+                break;
1103
+            case 'D':
1104
+                $this->current = &$this->components['privateExponent'];
1105
+                break;
1106
+            default:
1107
+                unset($this->current);
1108
+        }
1109
+        $this->current = '';
1110
+    }
1111
+
1112
+    /**
1113
+     * Stop Element Handler
1114
+     *
1115
+     * Called by xml_set_element_handler()
1116
+     *
1117
+     * @access private
1118
+     * @param Resource $parser
1119
+     * @param String $name
1120
+     */
1121
+    function _stop_element_handler($parser, $name)
1122
+    {
1123
+        //$name = strtoupper($name);
1124
+        if ($name == 'RSAKEYVALUE') {
1125
+            return;
1126
+        }
1127
+        $this->current = new Math_BigInteger(base64_decode($this->current), 256);
1128
+    }
1129
+
1130
+    /**
1131
+     * Data Handler
1132
+     *
1133
+     * Called by xml_set_character_data_handler()
1134
+     *
1135
+     * @access private
1136
+     * @param Resource $parser
1137
+     * @param String $data
1138
+     */
1139
+    function _data_handler($parser, $data)
1140
+    {
1141
+        if (!isset($this->current) || is_object($this->current)) {
1142
+            return;
1143
+        }
1144
+        $this->current.= trim($data);
1145
+    }
1146
+
1147
+    /**
1148
+     * Loads a public or private key
1149
+     *
1150
+     * Returns true on success and false on failure (ie. an incorrect password was provided or the key was malformed)
1151
+     *
1152
+     * @access public
1153
+     * @param String $key
1154
+     * @param Integer $type optional
1155
+     */
1156
+    function loadKey($key, $type = false)
1157
+    {
1158
+        if ($type === false) {
1159
+            $types = array(
1160
+                CRYPT_RSA_PUBLIC_FORMAT_RAW,
1161
+                CRYPT_RSA_PRIVATE_FORMAT_PKCS1,
1162
+                CRYPT_RSA_PRIVATE_FORMAT_XML,
1163
+                CRYPT_RSA_PRIVATE_FORMAT_PUTTY,
1164
+                CRYPT_RSA_PUBLIC_FORMAT_OPENSSH
1165
+            );
1166
+            foreach ($types as $type) {
1167
+                $components = $this->_parseKey($key, $type);
1168
+                if ($components !== false) {
1169
+                    break;
1170
+                }
1171
+            }
1172
+            
1173
+        } else {
1174
+            $components = $this->_parseKey($key, $type);
1175
+        }
1176
+
1177
+        if ($components === false) {
1178
+            return false;
1179
+        }
1180
+
1181
+        $this->modulus = $components['modulus'];
1182
+        $this->k = strlen($this->modulus->toBytes());
1183
+        $this->exponent = isset($components['privateExponent']) ? $components['privateExponent'] : $components['publicExponent'];
1184
+        if (isset($components['primes'])) {
1185
+            $this->primes = $components['primes'];
1186
+            $this->exponents = $components['exponents'];
1187
+            $this->coefficients = $components['coefficients'];
1188
+            $this->publicExponent = $components['publicExponent'];
1189
+        } else {
1190
+            $this->primes = array();
1191
+            $this->exponents = array();
1192
+            $this->coefficients = array();
1193
+            $this->publicExponent = false;
1194
+        }
1195
+
1196
+        return true;
1197
+    }
1198
+
1199
+    /**
1200
+     * Sets the password
1201
+     *
1202
+     * Private keys can be encrypted with a password.  To unset the password, pass in the empty string or false.
1203
+     * Or rather, pass in $password such that empty($password) is true.
1204
+     *
1205
+     * @see createKey()
1206
+     * @see loadKey()
1207
+     * @access public
1208
+     * @param String $password
1209
+     */
1210
+    function setPassword($password)
1211
+    {
1212
+        $this->password = $password;
1213
+    }
1214
+
1215
+    /**
1216
+     * Defines the public key
1217
+     *
1218
+     * Some private key formats define the public exponent and some don't.  Those that don't define it are problematic when
1219
+     * used in certain contexts.  For example, in SSH-2, RSA authentication works by sending the public key along with a
1220
+     * message signed by the private key to the server.  The SSH-2 server looks the public key up in an index of public keys
1221
+     * and if it's present then proceeds to verify the signature.  Problem is, if your private key doesn't include the public
1222
+     * exponent this won't work unless you manually add the public exponent.
1223
+     *
1224
+     * Do note that when a new key is loaded the index will be cleared.
1225
+     *
1226
+     * Returns true on success, false on failure
1227
+     *
1228
+     * @see getPublicKey()
1229
+     * @access public
1230
+     * @param String $key
1231
+     * @param Integer $type optional
1232
+     * @return Boolean
1233
+     */
1234
+    function setPublicKey($key, $type = CRYPT_RSA_PUBLIC_FORMAT_PKCS1)
1235
+    {
1236
+        $components = $this->_parseKey($key, $type);
1237
+
1238
+        if (empty($this->modulus) || !$this->modulus->equals($components['modulus'])) {
1239
+            user_error('Trying to load a public key?  Use loadKey() instead.  It\'s called loadKey() and not loadPrivateKey() for a reason.', E_USER_NOTICE);
1240
+            return false;
1241
+        }
1242
+
1243
+        $this->publicExponent = $components['publicExponent'];
1244
+
1245
+        return true;
1246
+    }
1247
+
1248
+    /**
1249
+     * Returns the public key
1250
+     *
1251
+     * The public key is only returned under two circumstances - if the private key had the public key embedded within it
1252
+     * or if the public key was set via setPublicKey().  If the currently loaded key is supposed to be the public key this
1253
+     * function won't return it since this library, for the most part, doesn't distinguish between public and private keys.
1254
+     *
1255
+     * @see getPublicKey()
1256
+     * @access public
1257
+     * @param String $key
1258
+     * @param Integer $type optional
1259
+     */
1260
+    function getPublicKey($type = CRYPT_RSA_PUBLIC_FORMAT_PKCS1)
1261
+    {
1262
+        if (empty($this->modulus) || empty($this->publicExponent)) {
1263
+            return false;
1264
+        }
1265
+
1266
+        $oldFormat = $this->publicKeyFormat;
1267
+        $this->publicKeyFormat = $type;
1268
+        $temp = $this->_convertPublicKey($this->modulus, $this->publicExponent);
1269
+        $this->publicKeyFormat = $oldFormat;
1270
+        return $temp;
1271
+    }
1272
+
1273
+    /**
1274
+     * Generates the smallest and largest numbers requiring $bits bits
1275
+     *
1276
+     * @access private
1277
+     * @param Integer $bits
1278
+     * @return Array
1279
+     */
1280
+    function _generateMinMax($bits)
1281
+    {
1282
+        $bytes = $bits >> 3;
1283
+        $min = str_repeat(chr(0), $bytes);
1284
+        $max = str_repeat(chr(0xFF), $bytes);
1285
+        $msb = $bits & 7;
1286
+        if ($msb) {
1287
+            $min = chr(1 << ($msb - 1)) . $min;
1288
+            $max = chr((1 << $msb) - 1) . $max;
1289
+        } else {
1290
+            $min[0] = chr(0x80);
1291
+        }
1292
+
1293
+        return array(
1294
+            'min' => new Math_BigInteger($min, 256),
1295
+            'max' => new Math_BigInteger($max, 256)
1296
+        );
1297
+    }
1298
+
1299
+    /**
1300
+     * DER-decode the length
1301
+     *
1302
+     * DER supports lengths up to (2**8)**127, however, we'll only support lengths up to (2**8)**4.  See
1303
+     * {@link http://itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf#p=13 X.690 � 8.1.3} for more information.
1304
+     *
1305
+     * @access private
1306
+     * @param String $string
1307
+     * @return Integer
1308
+     */
1309
+    function _decodeLength(&$string)
1310
+    {
1311
+        $length = ord($this->_string_shift($string));
1312
+        if ( $length & 0x80 ) { // definite length, long form
1313
+            $length&= 0x7F;
1314
+            $temp = $this->_string_shift($string, $length);
1315
+            list(, $length) = unpack('N', substr(str_pad($temp, 4, chr(0), STR_PAD_LEFT), -4));
1316
+        }
1317
+        return $length;
1318
+    }
1319
+
1320
+    /**
1321
+     * DER-encode the length
1322
+     *
1323
+     * DER supports lengths up to (2**8)**127, however, we'll only support lengths up to (2**8)**4.  See
1324
+     * {@link http://itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf#p=13 X.690 � 8.1.3} for more information.
1325
+     *
1326
+     * @access private
1327
+     * @param Integer $length
1328
+     * @return String
1329
+     */
1330
+    function _encodeLength($length)
1331
+    {
1332
+        if ($length <= 0x7F) {
1333
+            return chr($length);
1334
+        }
1335
+
1336
+        $temp = ltrim(pack('N', $length), chr(0));
1337
+        return pack('Ca*', 0x80 | strlen($temp), $temp);
1338
+    }
1339
+
1340
+    /**
1341
+     * String Shift
1342
+     *
1343
+     * Inspired by array_shift
1344
+     *
1345
+     * @param String $string
1346
+     * @param optional Integer $index
1347
+     * @return String
1348
+     * @access private
1349
+     */
1350
+    function _string_shift(&$string, $index = 1)
1351
+    {
1352
+        $substr = substr($string, 0, $index);
1353
+        $string = substr($string, $index);
1354
+        return $substr;
1355
+    }
1356
+
1357
+    /**
1358
+     * Determines the private key format
1359
+     *
1360
+     * @see createKey()
1361
+     * @access public
1362
+     * @param Integer $format
1363
+     */
1364
+    function setPrivateKeyFormat($format)
1365
+    {
1366
+        $this->privateKeyFormat = $format;
1367
+    }
1368
+
1369
+    /**
1370
+     * Determines the public key format
1371
+     *
1372
+     * @see createKey()
1373
+     * @access public
1374
+     * @param Integer $format
1375
+     */
1376
+    function setPublicKeyFormat($format)
1377
+    {
1378
+        $this->publicKeyFormat = $format;
1379
+    }
1380
+
1381
+    /**
1382
+     * Determines which hashing function should be used
1383
+     *
1384
+     * Used with signature production / verification and (if the encryption mode is CRYPT_RSA_ENCRYPTION_OAEP) encryption and
1385
+     * decryption.  If $hash isn't supported, sha1 is used.
1386
+     *
1387
+     * @access public
1388
+     * @param String $hash
1389
+     */
1390
+    function setHash($hash)
1391
+    {
1392
+        // Crypt_Hash supports algorithms that PKCS#1 doesn't support.  md5-96 and sha1-96, for example.
1393
+        switch ($hash) {
1394
+            case 'md2':
1395
+            case 'md5':
1396
+            case 'sha1':
1397
+            case 'sha256':
1398
+            case 'sha384':
1399
+            case 'sha512':
1400
+                $this->hash = new Crypt_Hash($hash);
1401
+                $this->hashName = $hash;
1402
+                break;
1403
+            default:
1404
+                $this->hash = new Crypt_Hash('sha1');
1405
+                $this->hashName = 'sha1';
1406
+        }
1407
+        $this->hLen = $this->hash->getLength();
1408
+    }
1409
+
1410
+    /**
1411
+     * Determines which hashing function should be used for the mask generation function
1412
+     *
1413
+     * The mask generation function is used by CRYPT_RSA_ENCRYPTION_OAEP and CRYPT_RSA_SIGNATURE_PSS and although it's
1414
+     * best if Hash and MGFHash are set to the same thing this is not a requirement.
1415
+     *
1416
+     * @access public
1417
+     * @param String $hash
1418
+     */
1419
+    function setMGFHash($hash)
1420
+    {
1421
+        // Crypt_Hash supports algorithms that PKCS#1 doesn't support.  md5-96 and sha1-96, for example.
1422
+        switch ($hash) {
1423
+            case 'md2':
1424
+            case 'md5':
1425
+            case 'sha1':
1426
+            case 'sha256':
1427
+            case 'sha384':
1428
+            case 'sha512':
1429
+                $this->mgfHash = new Crypt_Hash($hash);
1430
+                break;
1431
+            default:
1432
+                $this->mgfHash = new Crypt_Hash('sha1');
1433
+        }
1434
+        $this->mgfHLen = $this->mgfHash->getLength();
1435
+    }
1436
+
1437
+    /**
1438
+     * Determines the salt length
1439
+     *
1440
+     * To quote from {@link http://tools.ietf.org/html/rfc3447#page-38 RFC3447#page-38}:
1441
+     *
1442
+     *    Typical salt lengths in octets are hLen (the length of the output
1443
+     *    of the hash function Hash) and 0.
1444
+     *
1445
+     * @access public
1446
+     * @param Integer $format
1447
+     */
1448
+    function setSaltLength($sLen)
1449
+    {
1450
+        $this->sLen = $sLen;
1451
+    }
1452
+
1453
+    /**
1454
+     * Generates a random string x bytes long
1455
+     *
1456
+     * @access public
1457
+     * @param Integer $bytes
1458
+     * @param optional Integer $nonzero
1459
+     * @return String
1460
+     */
1461
+    function _random($bytes, $nonzero = false)
1462
+    {
1463
+        $temp = '';
1464
+        if ($nonzero) {
1465
+            for ($i = 0; $i < $bytes; $i++) {
1466
+                $temp.= chr(crypt_random(1, 255));
1467
+            }
1468
+        } else {
1469
+            $ints = ($bytes + 1) >> 2;
1470
+            for ($i = 0; $i < $ints; $i++) {
1471
+                $temp.= pack('N', crypt_random());
1472
+            }
1473
+            $temp = substr($temp, 0, $bytes);
1474
+        }
1475
+        return $temp;
1476
+    }
1477
+
1478
+    /**
1479
+     * Integer-to-Octet-String primitive
1480
+     *
1481
+     * See {@link http://tools.ietf.org/html/rfc3447#section-4.1 RFC3447#section-4.1}.
1482
+     *
1483
+     * @access private
1484
+     * @param Math_BigInteger $x
1485
+     * @param Integer $xLen
1486
+     * @return String
1487
+     */
1488
+    function _i2osp($x, $xLen)
1489
+    {
1490
+        $x = $x->toBytes();
1491
+        if (strlen($x) > $xLen) {
1492
+            user_error('Integer too large', E_USER_NOTICE);
1493
+            return false;
1494
+        }
1495
+        return str_pad($x, $xLen, chr(0), STR_PAD_LEFT);
1496
+    }
1497
+
1498
+    /**
1499
+     * Octet-String-to-Integer primitive
1500
+     *
1501
+     * See {@link http://tools.ietf.org/html/rfc3447#section-4.2 RFC3447#section-4.2}.
1502
+     *
1503
+     * @access private
1504
+     * @param String $x
1505
+     * @return Math_BigInteger
1506
+     */
1507
+    function _os2ip($x)
1508
+    {
1509
+        return new Math_BigInteger($x, 256);
1510
+    }
1511
+
1512
+    /**
1513
+     * Exponentiate with or without Chinese Remainder Theorem
1514
+     *
1515
+     * See {@link http://tools.ietf.org/html/rfc3447#section-5.1.1 RFC3447#section-5.1.2}.
1516
+     *
1517
+     * @access private
1518
+     * @param Math_BigInteger $x
1519
+     * @return Math_BigInteger
1520
+     */
1521
+    function _exponentiate($x)
1522
+    {
1523
+        if (empty($this->primes) || empty($this->coefficients) || empty($this->exponents)) {
1524
+            return $x->modPow($this->exponent, $this->modulus);
1525
+        }
1526
+
1527
+        $num_primes = count($this->primes);
1528
+
1529
+        if (defined('CRYPT_RSA_DISABLE_BLINDING')) {
1530
+            $m_i = array(
1531
+                1 => $x->modPow($this->exponents[1], $this->primes[1]),
1532
+                2 => $x->modPow($this->exponents[2], $this->primes[2])
1533
+            );
1534
+            $h = $m_i[1]->subtract($m_i[2]);
1535
+            $h = $h->multiply($this->coefficients[2]);
1536
+            list(, $h) = $h->divide($this->primes[1]);
1537
+            $m = $m_i[2]->add($h->multiply($this->primes[2]));
1538
+
1539
+            $r = $this->primes[1];
1540
+            for ($i = 3; $i <= $num_primes; $i++) {
1541
+                $m_i = $x->modPow($this->exponents[$i], $this->primes[$i]);
1542
+
1543
+                $r = $r->multiply($this->primes[$i - 1]);
1544
+
1545
+                $h = $m_i->subtract($m);
1546
+                $h = $h->multiply($this->coefficients[$i]);
1547
+                list(, $h) = $h->divide($this->primes[$i]);
1548
+
1549
+                $m = $m->add($r->multiply($h));
1550
+            }
1551
+        } else {
1552
+            $smallest = $this->primes[1];
1553
+            for ($i = 2; $i <= $num_primes; $i++) {
1554
+                if ($smallest->compare($this->primes[$i]) > 0) {
1555
+                    $smallest = $this->primes[$i];
1556
+                }
1557
+            }
1558
+
1559
+            $one = new Math_BigInteger(1);
1560
+            $one->setRandomGenerator('crypt_random');
1561
+
1562
+            $r = $one->random($one, $smallest->subtract($one));
1563
+
1564
+            $m_i = array(
1565
+                1 => $this->_blind($x, $r, 1),
1566
+                2 => $this->_blind($x, $r, 2)
1567
+            );
1568
+            $h = $m_i[1]->subtract($m_i[2]);
1569
+            $h = $h->multiply($this->coefficients[2]);
1570
+            list(, $h) = $h->divide($this->primes[1]);
1571
+            $m = $m_i[2]->add($h->multiply($this->primes[2]));
1572
+
1573
+            $r = $this->primes[1];
1574
+            for ($i = 3; $i <= $num_primes; $i++) {
1575
+                $m_i = $this->_blind($x, $r, $i);
1576
+
1577
+                $r = $r->multiply($this->primes[$i - 1]);
1578
+
1579
+                $h = $m_i->subtract($m);
1580
+                $h = $h->multiply($this->coefficients[$i]);
1581
+                list(, $h) = $h->divide($this->primes[$i]);
1582
+
1583
+                $m = $m->add($r->multiply($h));
1584
+            }
1585
+        }
1586
+
1587
+        return $m;
1588
+    }
1589
+
1590
+    /**
1591
+     * Performs RSA Blinding
1592
+     *
1593
+     * Protects against timing attacks by employing RSA Blinding.
1594
+     * Returns $x->modPow($this->exponents[$i], $this->primes[$i])
1595
+     *
1596
+     * @access private
1597
+     * @param Math_BigInteger $x
1598
+     * @param Math_BigInteger $r
1599
+     * @param Integer $i
1600
+     * @return Math_BigInteger
1601
+     */
1602
+    function _blind($x, $r, $i)
1603
+    {
1604
+        $x = $x->multiply($r->modPow($this->publicExponent, $this->primes[$i]));
1605
+        $x = $x->modPow($this->exponents[$i], $this->primes[$i]);
1606
+
1607
+        $r = $r->modInverse($this->primes[$i]);
1608
+        $x = $x->multiply($r);
1609
+        list(, $x) = $x->divide($this->primes[$i]);
1610
+
1611
+        return $x;
1612
+    }
1613
+
1614
+    /**
1615
+     * RSAEP
1616
+     *
1617
+     * See {@link http://tools.ietf.org/html/rfc3447#section-5.1.1 RFC3447#section-5.1.1}.
1618
+     *
1619
+     * @access private
1620
+     * @param Math_BigInteger $m
1621
+     * @return Math_BigInteger
1622
+     */
1623
+    function _rsaep($m)
1624
+    {
1625
+        if ($m->compare($this->zero) < 0 || $m->compare($this->modulus) > 0) {
1626
+            user_error('Message representative out of range', E_USER_NOTICE);
1627
+            return false;
1628
+        }
1629
+        return $this->_exponentiate($m);
1630
+    }
1631
+
1632
+    /**
1633
+     * RSADP
1634
+     *
1635
+     * See {@link http://tools.ietf.org/html/rfc3447#section-5.1.2 RFC3447#section-5.1.2}.
1636
+     *
1637
+     * @access private
1638
+     * @param Math_BigInteger $c
1639
+     * @return Math_BigInteger
1640
+     */
1641
+    function _rsadp($c)
1642
+    {
1643
+        if ($c->compare($this->zero) < 0 || $c->compare($this->modulus) > 0) {
1644
+            user_error('Ciphertext representative out of range', E_USER_NOTICE);
1645
+            return false;
1646
+        }
1647
+        return $this->_exponentiate($c);
1648
+    }
1649
+
1650
+    /**
1651
+     * RSASP1
1652
+     *
1653
+     * See {@link http://tools.ietf.org/html/rfc3447#section-5.2.1 RFC3447#section-5.2.1}.
1654
+     *
1655
+     * @access private
1656
+     * @param Math_BigInteger $m
1657
+     * @return Math_BigInteger
1658
+     */
1659
+    function _rsasp1($m)
1660
+    {
1661
+        if ($m->compare($this->zero) < 0 || $m->compare($this->modulus) > 0) {
1662
+            user_error('Message representative out of range', E_USER_NOTICE);
1663
+            return false;
1664
+        }
1665
+        return $this->_exponentiate($m);
1666
+    }
1667
+
1668
+    /**
1669
+     * RSAVP1
1670
+     *
1671
+     * See {@link http://tools.ietf.org/html/rfc3447#section-5.2.2 RFC3447#section-5.2.2}.
1672
+     *
1673
+     * @access private
1674
+     * @param Math_BigInteger $s
1675
+     * @return Math_BigInteger
1676
+     */
1677
+    function _rsavp1($s)
1678
+    {
1679
+        if ($s->compare($this->zero) < 0 || $s->compare($this->modulus) > 0) {
1680
+            user_error('Signature representative out of range', E_USER_NOTICE);
1681
+            return false;
1682
+        }
1683
+        return $this->_exponentiate($s);
1684
+    }
1685
+
1686
+    /**
1687
+     * MGF1
1688
+     *
1689
+     * See {@link http://tools.ietf.org/html/rfc3447#appendix-B.2.1 RFC3447#appendix-B.2.1}.
1690
+     *
1691
+     * @access private
1692
+     * @param String $mgfSeed
1693
+     * @param Integer $mgfLen
1694
+     * @return String
1695
+     */
1696
+    function _mgf1($mgfSeed, $maskLen)
1697
+    {
1698
+        // if $maskLen would yield strings larger than 4GB, PKCS#1 suggests a "Mask too long" error be output.
1699
+
1700
+        $t = '';
1701
+        $count = ceil($maskLen / $this->mgfHLen);
1702
+        for ($i = 0; $i < $count; $i++) {
1703
+            $c = pack('N', $i);
1704
+            $t.= $this->mgfHash->hash($mgfSeed . $c);
1705
+        }
1706
+
1707
+        return substr($t, 0, $maskLen);
1708
+    }
1709
+
1710
+    /**
1711
+     * RSAES-OAEP-ENCRYPT
1712
+     *
1713
+     * See {@link http://tools.ietf.org/html/rfc3447#section-7.1.1 RFC3447#section-7.1.1} and
1714
+     * {http://en.wikipedia.org/wiki/Optimal_Asymmetric_Encryption_Padding OAES}.
1715
+     *
1716
+     * @access private
1717
+     * @param String $m
1718
+     * @param String $l
1719
+     * @return String
1720
+     */
1721
+    function _rsaes_oaep_encrypt($m, $l = '')
1722
+    {
1723
+        $mLen = strlen($m);
1724
+
1725
+        // Length checking
1726
+
1727
+        // if $l is larger than two million terrabytes and you're using sha1, PKCS#1 suggests a "Label too long" error
1728
+        // be output.
1729
+
1730
+        if ($mLen > $this->k - 2 * $this->hLen - 2) {
1731
+            user_error('Message too long', E_USER_NOTICE);
1732
+            return false;
1733
+        }
1734
+
1735
+        // EME-OAEP encoding
1736
+
1737
+        $lHash = $this->hash->hash($l);
1738
+        $ps = str_repeat(chr(0), $this->k - $mLen - 2 * $this->hLen - 2);
1739
+        $db = $lHash . $ps . chr(1) . $m;
1740
+        $seed = $this->_random($this->hLen);
1741
+        $dbMask = $this->_mgf1($seed, $this->k - $this->hLen - 1);
1742
+        $maskedDB = $db ^ $dbMask;
1743
+        $seedMask = $this->_mgf1($maskedDB, $this->hLen);
1744
+        $maskedSeed = $seed ^ $seedMask;
1745
+        $em = chr(0) . $maskedSeed . $maskedDB;
1746
+
1747
+        // RSA encryption
1748
+
1749
+        $m = $this->_os2ip($em);
1750
+        $c = $this->_rsaep($m);
1751
+        $c = $this->_i2osp($c, $this->k);
1752
+
1753
+        // Output the ciphertext C
1754
+
1755
+        return $c;
1756
+    }
1757
+
1758
+    /**
1759
+     * RSAES-OAEP-DECRYPT
1760
+     *
1761
+     * See {@link http://tools.ietf.org/html/rfc3447#section-7.1.2 RFC3447#section-7.1.2}.  The fact that the error
1762
+     * messages aren't distinguishable from one another hinders debugging, but, to quote from RFC3447#section-7.1.2:
1763
+     * 
1764
+     *    Note.  Care must be taken to ensure that an opponent cannot
1765
+     *    distinguish the different error conditions in Step 3.g, whether by
1766
+     *    error message or timing, or, more generally, learn partial
1767
+     *    information about the encoded message EM.  Otherwise an opponent may
1768
+     *    be able to obtain useful information about the decryption of the
1769
+     *    ciphertext C, leading to a chosen-ciphertext attack such as the one
1770
+     *    observed by Manger [36].
1771
+     *
1772
+     * As for $l...  to quote from {@link http://tools.ietf.org/html/rfc3447#page-17 RFC3447#page-17}:
1773
+     *
1774
+     *    Both the encryption and the decryption operations of RSAES-OAEP take
1775
+     *    the value of a label L as input.  In this version of PKCS #1, L is
1776
+     *    the empty string; other uses of the label are outside the scope of
1777
+     *    this document.
1778
+     *
1779
+     * @access private
1780
+     * @param String $c
1781
+     * @param String $l
1782
+     * @return String
1783
+     */
1784
+    function _rsaes_oaep_decrypt($c, $l = '')
1785
+    {
1786
+        // Length checking
1787
+
1788
+        // if $l is larger than two million terrabytes and you're using sha1, PKCS#1 suggests a "Label too long" error
1789
+        // be output.
1790
+
1791
+        if (strlen($c) != $this->k || $this->k < 2 * $this->hLen + 2) {
1792
+            user_error('Decryption error', E_USER_NOTICE);
1793
+            return false;
1794
+        }
1795
+
1796
+        // RSA decryption
1797
+
1798
+        $c = $this->_os2ip($c);
1799
+        $m = $this->_rsadp($c);
1800
+        if ($m === false) {
1801
+            user_error('Decryption error', E_USER_NOTICE);
1802
+            return false;
1803
+        }
1804
+        $em = $this->_i2osp($m, $this->k);
1805
+
1806
+        // EME-OAEP decoding
1807
+
1808
+        $lHash = $this->hash->hash($l);
1809
+        $y = ord($em[0]);
1810
+        $maskedSeed = substr($em, 1, $this->hLen);
1811
+        $maskedDB = substr($em, $this->hLen + 1);
1812
+        $seedMask = $this->_mgf1($maskedDB, $this->hLen);
1813
+        $seed = $maskedSeed ^ $seedMask;
1814
+        $dbMask = $this->_mgf1($seed, $this->k - $this->hLen - 1);
1815
+        $db = $maskedDB ^ $dbMask;
1816
+        $lHash2 = substr($db, 0, $this->hLen);
1817
+        $m = substr($db, $this->hLen);
1818
+        if ($lHash != $lHash2) {
1819
+            user_error('Decryption error', E_USER_NOTICE);
1820
+            return false;
1821
+        }
1822
+        $m = ltrim($m, chr(0));
1823
+        if (ord($m[0]) != 1) {
1824
+            user_error('Decryption error', E_USER_NOTICE);
1825
+            return false;
1826
+        }
1827
+
1828
+        // Output the message M
1829
+
1830
+        return substr($m, 1);
1831
+    }
1832
+
1833
+    /**
1834
+     * RSAES-PKCS1-V1_5-ENCRYPT
1835
+     *
1836
+     * See {@link http://tools.ietf.org/html/rfc3447#section-7.2.1 RFC3447#section-7.2.1}.
1837
+     *
1838
+     * @access private
1839
+     * @param String $m
1840
+     * @return String
1841
+     */
1842
+    function _rsaes_pkcs1_v1_5_encrypt($m)
1843
+    {
1844
+        $mLen = strlen($m);
1845
+
1846
+        // Length checking
1847
+
1848
+        if ($mLen > $this->k - 11) {
1849
+            user_error('Message too long', E_USER_NOTICE);
1850
+            return false;
1851
+        }
1852
+
1853
+        // EME-PKCS1-v1_5 encoding
1854
+
1855
+        $ps = $this->_random($this->k - $mLen - 3, true);
1856
+        $em = chr(0) . chr(2) . $ps . chr(0) . $m;
1857
+
1858
+        // RSA encryption
1859
+        $m = $this->_os2ip($em);
1860
+        $c = $this->_rsaep($m);
1861
+        $c = $this->_i2osp($c, $this->k);
1862
+
1863
+        // Output the ciphertext C
1864
+
1865
+        return $c;
1866
+    }
1867
+
1868
+    /**
1869
+     * RSAES-PKCS1-V1_5-DECRYPT
1870
+     *
1871
+     * See {@link http://tools.ietf.org/html/rfc3447#section-7.2.2 RFC3447#section-7.2.2}.
1872
+     *
1873
+     * For compatability purposes, this function departs slightly from the description given in RFC3447.
1874
+     * The reason being that RFC2313#section-8.1 (PKCS#1 v1.5) states that ciphertext's encrypted by the
1875
+     * private key should have the second byte set to either 0 or 1 and that ciphertext's encrypted by the
1876
+     * public key should have the second byte set to 2.  In RFC3447 (PKCS#1 v2.1), the second byte is supposed
1877
+     * to be 2 regardless of which key is used.  for compatability purposes, we'll just check to make sure the
1878
+     * second byte is 2 or less.  If it is, we'll accept the decrypted string as valid.
1879
+     *
1880
+     * As a consequence of this, a private key encrypted ciphertext produced with Crypt_RSA may not decrypt
1881
+     * with a strictly PKCS#1 v1.5 compliant RSA implementation.  Public key encrypted ciphertext's should but
1882
+     * not private key encrypted ciphertext's.
1883
+     *
1884
+     * @access private
1885
+     * @param String $c
1886
+     * @return String
1887
+     */
1888
+    function _rsaes_pkcs1_v1_5_decrypt($c)
1889
+    {
1890
+        // Length checking
1891
+
1892
+        if (strlen($c) != $this->k) { // or if k < 11
1893
+            user_error('Decryption error', E_USER_NOTICE);
1894
+            return false;
1895
+        }
1896
+
1897
+        // RSA decryption
1898
+
1899
+        $c = $this->_os2ip($c);
1900
+        $m = $this->_rsadp($c);
1901
+
1902
+        if ($m === false) {
1903
+            user_error('Decryption error', E_USER_NOTICE);
1904
+            return false;
1905
+        }
1906
+        $em = $this->_i2osp($m, $this->k);
1907
+
1908
+        // EME-PKCS1-v1_5 decoding
1909
+
1910
+        if (ord($em[0]) != 0 || ord($em[1]) > 2) {
1911
+            user_error('Decryption error', E_USER_NOTICE);
1912
+            return false;
1913
+        }
1914
+
1915
+        $ps = substr($em, 2, strpos($em, chr(0), 2) - 2);
1916
+        $m = substr($em, strlen($ps) + 3);
1917
+
1918
+        if (strlen($ps) < 8) {
1919
+            user_error('Decryption error', E_USER_NOTICE);
1920
+            return false;
1921
+        }
1922
+
1923
+        // Output M
1924
+
1925
+        return $m;
1926
+    }
1927
+
1928
+    /**
1929
+     * EMSA-PSS-ENCODE
1930
+     *
1931
+     * See {@link http://tools.ietf.org/html/rfc3447#section-9.1.1 RFC3447#section-9.1.1}.
1932
+     *
1933
+     * @access private
1934
+     * @param String $m
1935
+     * @param Integer $emBits
1936
+     */
1937
+    function _emsa_pss_encode($m, $emBits)
1938
+    {
1939
+        // if $m is larger than two million terrabytes and you're using sha1, PKCS#1 suggests a "Label too long" error
1940
+        // be output.
1941
+
1942
+        $emLen = ($emBits + 1) >> 3; // ie. ceil($emBits / 8)
1943
+        $sLen = $this->sLen == false ? $this->hLen : $this->sLen;
1944
+
1945
+        $mHash = $this->hash->hash($m);
1946
+        if ($emLen < $this->hLen + $sLen + 2) {
1947
+            user_error('Encoding error', E_USER_NOTICE);
1948
+            return false;
1949
+        }
1950
+
1951
+        $salt = $this->_random($sLen);
1952
+        $m2 = "\0\0\0\0\0\0\0\0" . $mHash . $salt;
1953
+        $h = $this->hash->hash($m2);
1954
+        $ps = str_repeat(chr(0), $emLen - $sLen - $this->hLen - 2);
1955
+        $db = $ps . chr(1) . $salt;
1956
+        $dbMask = $this->_mgf1($h, $emLen - $this->hLen - 1);
1957
+        $maskedDB = $db ^ $dbMask;
1958
+        $maskedDB[0] = ~chr(0xFF << ($emBits & 7)) & $maskedDB[0];
1959
+        $em = $maskedDB . $h . chr(0xBC);
1960
+
1961
+        return $em;
1962
+    }
1963
+
1964
+    /**
1965
+     * EMSA-PSS-VERIFY
1966
+     *
1967
+     * See {@link http://tools.ietf.org/html/rfc3447#section-9.1.2 RFC3447#section-9.1.2}.
1968
+     *
1969
+     * @access private
1970
+     * @param String $m
1971
+     * @param String $em
1972
+     * @param Integer $emBits
1973
+     * @return String
1974
+     */
1975
+    function _emsa_pss_verify($m, $em, $emBits)
1976
+    {
1977
+        // if $m is larger than two million terrabytes and you're using sha1, PKCS#1 suggests a "Label too long" error
1978
+        // be output.
1979
+
1980
+        $emLen = ($emBits + 1) >> 3; // ie. ceil($emBits / 8);
1981
+        $sLen = $this->sLen == false ? $this->hLen : $this->sLen;
1982
+
1983
+        $mHash = $this->hash->hash($m);
1984
+        if ($emLen < $this->hLen + $sLen + 2) {
1985
+            return false;
1986
+        }
1987
+
1988
+        if ($em[strlen($em) - 1] != chr(0xBC)) {
1989
+            return false;
1990
+        }
1991
+
1992
+        $maskedDB = substr($em, 0, -$this->hLen - 1);
1993
+        $h = substr($em, -$this->hLen - 1, $this->hLen);
1994
+        $temp = chr(0xFF << ($emBits & 7));
1995
+        if ((~$maskedDB[0] & $temp) != $temp) {
1996
+            return false;
1997
+        }
1998
+        $dbMask = $this->_mgf1($h, $emLen - $this->hLen - 1);
1999
+        $db = $maskedDB ^ $dbMask;
2000
+        $db[0] = ~chr(0xFF << ($emBits & 7)) & $db[0];
2001
+        $temp = $emLen - $this->hLen - $sLen - 2;
2002
+        if (substr($db, 0, $temp) != str_repeat(chr(0), $temp) || ord($db[$temp]) != 1) {
2003
+            return false;
2004
+        }
2005
+        $salt = substr($db, $temp + 1); // should be $sLen long
2006
+        $m2 = "\0\0\0\0\0\0\0\0" . $mHash . $salt;
2007
+        $h2 = $this->hash->hash($m2);
2008
+        return $h == $h2;
2009
+    }
2010
+
2011
+    /**
2012
+     * RSASSA-PSS-SIGN
2013
+     *
2014
+     * See {@link http://tools.ietf.org/html/rfc3447#section-8.1.1 RFC3447#section-8.1.1}.
2015
+     *
2016
+     * @access private
2017
+     * @param String $m
2018
+     * @return String
2019
+     */
2020
+    function _rsassa_pss_sign($m)
2021
+    {
2022
+        // EMSA-PSS encoding
2023
+
2024
+        $em = $this->_emsa_pss_encode($m, 8 * $this->k - 1);
2025
+
2026
+        // RSA signature
2027
+
2028
+        $m = $this->_os2ip($em);
2029
+        $s = $this->_rsasp1($m);
2030
+        $s = $this->_i2osp($s, $this->k);
2031
+
2032
+        // Output the signature S
2033
+
2034
+        return $s;
2035
+    }
2036
+
2037
+    /**
2038
+     * RSASSA-PSS-VERIFY
2039
+     *
2040
+     * See {@link http://tools.ietf.org/html/rfc3447#section-8.1.2 RFC3447#section-8.1.2}.
2041
+     *
2042
+     * @access private
2043
+     * @param String $m
2044
+     * @param String $s
2045
+     * @return String
2046
+     */
2047
+    function _rsassa_pss_verify($m, $s)
2048
+    {
2049
+        // Length checking
2050
+
2051
+        if (strlen($s) != $this->k) {
2052
+            user_error('Invalid signature', E_USER_NOTICE);
2053
+            return false;
2054
+        }
2055
+
2056
+        // RSA verification
2057
+
2058
+        $modBits = 8 * $this->k;
2059
+
2060
+        $s2 = $this->_os2ip($s);
2061
+        $m2 = $this->_rsavp1($s2);
2062
+        if ($m2 === false) {
2063
+            user_error('Invalid signature', E_USER_NOTICE);
2064
+            return false;
2065
+        }
2066
+        $em = $this->_i2osp($m2, $modBits >> 3);
2067
+        if ($em === false) {
2068
+            user_error('Invalid signature', E_USER_NOTICE);
2069
+            return false;
2070
+        }
2071
+
2072
+        // EMSA-PSS verification
2073
+
2074
+        return $this->_emsa_pss_verify($m, $em, $modBits - 1);
2075
+    }
2076
+
2077
+    /**
2078
+     * EMSA-PKCS1-V1_5-ENCODE
2079
+     *
2080
+     * See {@link http://tools.ietf.org/html/rfc3447#section-9.2 RFC3447#section-9.2}.
2081
+     *
2082
+     * @access private
2083
+     * @param String $m
2084
+     * @param Integer $emLen
2085
+     * @return String
2086
+     */
2087
+    function _emsa_pkcs1_v1_5_encode($m, $emLen)
2088
+    {
2089
+        $h = $this->hash->hash($m);
2090
+        if ($h === false) {
2091
+            return false;
2092
+        }
2093
+
2094
+        // see http://tools.ietf.org/html/rfc3447#page-43
2095
+        switch ($this->hashName) {
2096
+            case 'md2':
2097
+                $t = pack('H*', '3020300c06082a864886f70d020205000410');
2098
+                break;
2099
+            case 'md5':
2100
+                $t = pack('H*', '3020300c06082a864886f70d020505000410');
2101
+                break;
2102
+            case 'sha1':
2103
+                $t = pack('H*', '3021300906052b0e03021a05000414');
2104
+                break;
2105
+            case 'sha256':
2106
+                $t = pack('H*', '3031300d060960864801650304020105000420');
2107
+                break;
2108
+            case 'sha384':
2109
+                $t = pack('H*', '3041300d060960864801650304020205000430');
2110
+                break;
2111
+            case 'sha512':
2112
+                $t = pack('H*', '3051300d060960864801650304020305000440');
2113
+        }
2114
+        $t.= $h;
2115
+        $tLen = strlen($t);
2116
+
2117
+        if ($emLen < $tLen + 11) {
2118
+            user_error('Intended encoded message length too short', E_USER_NOTICE);
2119
+            return false;
2120
+        }
2121
+
2122
+        $ps = str_repeat(chr(0xFF), $emLen - $tLen - 3);
2123
+
2124
+        $em = "\0\1$ps\0$t";
2125
+
2126
+        return $em;
2127
+    }
2128
+
2129
+    /**
2130
+     * RSASSA-PKCS1-V1_5-SIGN
2131
+     *
2132
+     * See {@link http://tools.ietf.org/html/rfc3447#section-8.2.1 RFC3447#section-8.2.1}.
2133
+     *
2134
+     * @access private
2135
+     * @param String $m
2136
+     * @return String
2137
+     */
2138
+    function _rsassa_pkcs1_v1_5_sign($m)
2139
+    {
2140
+        // EMSA-PKCS1-v1_5 encoding
2141
+
2142
+        $em = $this->_emsa_pkcs1_v1_5_encode($m, $this->k);
2143
+        if ($em === false) {
2144
+            user_error('RSA modulus too short', E_USER_NOTICE);
2145
+            return false;
2146
+        }
2147
+
2148
+        // RSA signature
2149
+
2150
+        $m = $this->_os2ip($em);
2151
+        $s = $this->_rsasp1($m);
2152
+        $s = $this->_i2osp($s, $this->k);
2153
+
2154
+        // Output the signature S
2155
+
2156
+        return $s;
2157
+    }
2158
+
2159
+    /**
2160
+     * RSASSA-PKCS1-V1_5-VERIFY
2161
+     *
2162
+     * See {@link http://tools.ietf.org/html/rfc3447#section-8.2.2 RFC3447#section-8.2.2}.
2163
+     *
2164
+     * @access private
2165
+     * @param String $m
2166
+     * @return String
2167
+     */
2168
+    function _rsassa_pkcs1_v1_5_verify($m, $s)
2169
+    {
2170
+        // Length checking
2171
+
2172
+        if (strlen($s) != $this->k) {
2173
+            user_error('Invalid signature', E_USER_NOTICE);
2174
+            return false;
2175
+        }
2176
+
2177
+        // RSA verification
2178
+
2179
+        $s = $this->_os2ip($s);
2180
+        $m2 = $this->_rsavp1($s);
2181
+        if ($m2 === false) {
2182
+            user_error('Invalid signature', E_USER_NOTICE);
2183
+            return false;
2184
+        }
2185
+        $em = $this->_i2osp($m2, $this->k);
2186
+        if ($em === false) {
2187
+            user_error('Invalid signature', E_USER_NOTICE);
2188
+            return false;
2189
+        }
2190
+
2191
+        // EMSA-PKCS1-v1_5 encoding
2192
+
2193
+        $em2 = $this->_emsa_pkcs1_v1_5_encode($m, $this->k);
2194
+        if ($em2 === false) {
2195
+            user_error('RSA modulus too short', E_USER_NOTICE);
2196
+            return false;
2197
+        }
2198
+
2199
+        // Compare
2200
+
2201
+        return $em === $em2;
2202
+    }
2203
+
2204
+    /**
2205
+     * Set Encryption Mode
2206
+     *
2207
+     * Valid values include CRYPT_RSA_ENCRYPTION_OAEP and CRYPT_RSA_ENCRYPTION_PKCS1.
2208
+     *
2209
+     * @access public
2210
+     * @param Integer $mode
2211
+     */
2212
+    function setEncryptionMode($mode)
2213
+    {
2214
+        $this->encryptionMode = $mode;
2215
+    }
2216
+
2217
+    /**
2218
+     * Set Signature Mode
2219
+     *
2220
+     * Valid values include CRYPT_RSA_SIGNATURE_PSS and CRYPT_RSA_SIGNATURE_PKCS1
2221
+     *
2222
+     * @access public
2223
+     * @param Integer $mode
2224
+     */
2225
+    function setSignatureMode($mode)
2226
+    {
2227
+        $this->signatureMode = $mode;
2228
+    }
2229
+
2230
+    /**
2231
+     * Encryption
2232
+     *
2233
+     * Both CRYPT_RSA_ENCRYPTION_OAEP and CRYPT_RSA_ENCRYPTION_PKCS1 both place limits on how long $plaintext can be.
2234
+     * If $plaintext exceeds those limits it will be broken up so that it does and the resultant ciphertext's will
2235
+     * be concatenated together.
2236
+     *
2237
+     * @see decrypt()
2238
+     * @access public
2239
+     * @param String $plaintext
2240
+     * @return String
2241
+     */
2242
+    function encrypt($plaintext)
2243
+    {
2244
+        switch ($this->encryptionMode) {
2245
+            case CRYPT_RSA_ENCRYPTION_PKCS1:
2246
+                $length = $this->k - 11;
2247
+                if ($length <= 0) {
2248
+                    return false;
2249
+                }
2250
+
2251
+                $plaintext = str_split($plaintext, $length);
2252
+                $ciphertext = '';
2253
+                foreach ($plaintext as $m) {
2254
+                    $ciphertext.= $this->_rsaes_pkcs1_v1_5_encrypt($m);
2255
+                }
2256
+                return $ciphertext;
2257
+            //case CRYPT_RSA_ENCRYPTION_OAEP:
2258
+            default:
2259
+                $length = $this->k - 2 * $this->hLen - 2;
2260
+                if ($length <= 0) {
2261
+                    return false;
2262
+                }
2263
+
2264
+                $plaintext = str_split($plaintext, $length);
2265
+                $ciphertext = '';
2266
+                foreach ($plaintext as $m) {
2267
+                    $ciphertext.= $this->_rsaes_oaep_encrypt($m);
2268
+                }
2269
+                return $ciphertext;
2270
+        }
2271
+    }
2272
+
2273
+    /**
2274
+     * Decryption
2275
+     *
2276
+     * @see encrypt()
2277
+     * @access public
2278
+     * @param String $plaintext
2279
+     * @return String
2280
+     */
2281
+    function decrypt($ciphertext)
2282
+    {
2283
+        if ($this->k <= 0) {
2284
+            return false;
2285
+        }
2286
+
2287
+        $ciphertext = str_split($ciphertext, $this->k);
2288
+        $plaintext = '';
2289
+
2290
+        switch ($this->encryptionMode) {
2291
+            case CRYPT_RSA_ENCRYPTION_PKCS1:
2292
+                $decrypt = '_rsaes_pkcs1_v1_5_decrypt';
2293
+                break;
2294
+            //case CRYPT_RSA_ENCRYPTION_OAEP:
2295
+            default:
2296
+                $decrypt = '_rsaes_oaep_decrypt';
2297
+        }
2298
+
2299
+        foreach ($ciphertext as $c) {
2300
+            $temp = $this->$decrypt($c);
2301
+            if ($temp === false) {
2302
+                return false;
2303
+            }
2304
+            $plaintext.= $temp;
2305
+        }
2306
+
2307
+        return $plaintext;
2308
+    }
2309
+
2310
+    /**
2311
+     * Create a signature
2312
+     *
2313
+     * @see verify()
2314
+     * @access public
2315
+     * @param String $message
2316
+     * @return String
2317
+     */
2318
+    function sign($message)
2319
+    {
2320
+        if (empty($this->modulus) || empty($this->exponent)) {
2321
+            return false;
2322
+        }
2323
+
2324
+        switch ($this->signatureMode) {
2325
+            case CRYPT_RSA_SIGNATURE_PKCS1:
2326
+                return $this->_rsassa_pkcs1_v1_5_sign($message);
2327
+            //case CRYPT_RSA_SIGNATURE_PSS:
2328
+            default:
2329
+                return $this->_rsassa_pss_sign($message);
2330
+        }
2331
+    }
2332
+
2333
+    /**
2334
+     * Verifies a signature
2335
+     *
2336
+     * @see sign()
2337
+     * @access public
2338
+     * @param String $message
2339
+     * @param String $signature
2340
+     * @return Boolean
2341
+     */
2342
+    function verify($message, $signature)
2343
+    {
2344
+        if (empty($this->modulus) || empty($this->exponent)) {
2345
+            return false;
2346
+        }
2347
+
2348
+        switch ($this->signatureMode) {
2349
+            case CRYPT_RSA_SIGNATURE_PKCS1:
2350
+                return $this->_rsassa_pkcs1_v1_5_verify($message, $signature);
2351
+            //case CRYPT_RSA_SIGNATURE_PSS:
2352
+            default:
2353
+                return $this->_rsassa_pss_verify($message, $signature);
2354
+        }
2355
+    }
2356
+}
0 2357
\ No newline at end of file
... ...
@@ -0,0 +1,133 @@
1
+<?php
2
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
3
+
4
+/**
5
+ * Random Number Generator
6
+ *
7
+ * PHP versions 4 and 5
8
+ *
9
+ * Here's a short example of how to use this library:
10
+ * <code>
11
+ * <?php
12
+ *    include('Crypt/Random.php');
13
+ *
14
+ *    echo crypt_random();
15
+ * ?>
16
+ * </code>
17
+ *
18
+ * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy
19
+ * of this software and associated documentation files (the "Software"), to deal
20
+ * in the Software without restriction, including without limitation the rights
21
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
22
+ * copies of the Software, and to permit persons to whom the Software is
23
+ * furnished to do so, subject to the following conditions:
24
+ * 
25
+ * The above copyright notice and this permission notice shall be included in
26
+ * all copies or substantial portions of the Software.
27
+ * 
28
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
29
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
30
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
31
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
32
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
33
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
34
+ * THE SOFTWARE.
35
+ *
36
+ * @category   Crypt
37
+ * @package    Crypt_Random
38
+ * @author     Jim Wigginton <[email protected]>
39
+ * @copyright  MMVII Jim Wigginton
40
+ * @license    http://www.opensource.org/licenses/mit-license.html  MIT License
41
+ * @version    $Id: Random.php,v 1.9 2010/04/24 06:40:48 terrafrost Exp $
42
+ * @link       http://phpseclib.sourceforge.net
43
+ */
44
+
45
+/**
46
+ * Generate a random value.
47
+ *
48
+ * On 32-bit machines, the largest distance that can exist between $min and $max is 2**31.
49
+ * If $min and $max are farther apart than that then the last ($max - range) numbers.
50
+ *
51
+ * Depending on how this is being used, it may be worth while to write a replacement.  For example,
52
+ * a PHP-based web app that stores its data in an SQL database can collect more entropy than this function
53
+ * can.
54
+ *
55
+ * @param optional Integer $min
56
+ * @param optional Integer $max
57
+ * @return Integer
58
+ * @access public
59
+ */
60
+function crypt_random($min = 0, $max = 0x7FFFFFFF)
61
+{
62
+    if ($min == $max) {
63
+        return $min;
64
+    }
65
+
66
+    // see http://en.wikipedia.org/wiki//dev/random
67
+    static $urandom = true;
68
+    if ($urandom === true) {
69
+        // Warning's will be output unles the error suppression operator is used.  Errors such as
70
+        // "open_basedir restriction in effect", "Permission denied", "No such file or directory", etc.
71
+        $urandom = @fopen('/dev/urandom', 'rb');
72
+    }
73
+    if (!is_bool($urandom)) {
74
+        extract(unpack('Nrandom', fread($urandom, 4)));
75
+
76
+        // say $min = 0 and $max = 3.  if we didn't do abs() then we could have stuff like this:
77
+        // -4 % 3 + 0 = -1, even though -1 < $min
78
+        return abs($random) % ($max - $min) + $min;
79
+    }
80
+
81
+    /* Prior to PHP 4.2.0, mt_srand() had to be called before mt_rand() could be called.
82
+       Prior to PHP 5.2.6, mt_rand()'s automatic seeding was subpar, as elaborated here:
83
+
84
+       http://www.suspekt.org/2008/08/17/mt_srand-and-not-so-random-numbers/
85
+
86
+       The seeding routine is pretty much ripped from PHP's own internal GENERATE_SEED() macro:
87
+
88
+       http://svn.php.net/viewvc/php/php-src/branches/PHP_5_3_2/ext/standard/php_rand.h?view=markup */
89
+    if (version_compare(PHP_VERSION, '5.2.5', '<=')) { 
90
+        static $seeded;
91
+        if (!isset($seeded)) {
92
+            $seeded = true;
93
+            mt_srand(fmod(time() * getmypid(), 0x7FFFFFFF) ^ fmod(1000000 * lcg_value(), 0x7FFFFFFF));
94
+        }
95
+    }
96
+
97
+    static $crypto;
98
+
99
+    // The CSPRNG's Yarrow and Fortuna periodically reseed.  This function can be reseeded by hitting F5
100
+    // in the browser and reloading the page.
101
+
102
+    if (!isset($crypto)) {
103
+        $key = $iv = '';
104
+        for ($i = 0; $i < 8; $i++) {
105
+            $key.= pack('n', mt_rand(0, 0xFFFF));
106
+            $iv .= pack('n', mt_rand(0, 0xFFFF));
107
+        }
108
+        switch (true) {
109
+            case class_exists('Crypt_AES'):
110
+                $crypto = new Crypt_AES(CRYPT_AES_MODE_CTR);
111
+                break;
112
+            case class_exists('Crypt_TripleDES'):
113
+                $crypto = new Crypt_TripleDES(CRYPT_DES_MODE_CTR);
114
+                break;
115
+            case class_exists('Crypt_DES'):
116
+                $crypto = new Crypt_DES(CRYPT_DES_MODE_CTR);
117
+                break;
118
+            case class_exists('Crypt_RC4'):
119
+                $crypto = new Crypt_RC4();
120
+                break;
121
+            default:
122
+                extract(unpack('Nrandom', pack('H*', sha1(mt_rand(0, 0x7FFFFFFF)))));
123
+                return abs($random) % ($max - $min) + $min;
124
+        }
125
+        $crypto->setKey($key);
126
+        $crypto->setIV($iv);
127
+        $crypto->enableContinuousBuffer();
128
+    }
129
+
130
+    extract(unpack('Nrandom', $crypto->encrypt("\0\0\0\0")));
131
+    return abs($random) % ($max - $min) + $min;
132
+}
133
+?>
0 134
\ No newline at end of file
... ...
@@ -0,0 +1,1424 @@
1
+<?php
2
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
3
+
4
+/**
5
+ * Pure-PHP implementation of Rijndael.
6
+ *
7
+ * Does not use mcrypt, even when available, for reasons that are explained below.
8
+ *
9
+ * PHP versions 4 and 5
10
+ *
11
+ * If {@link Crypt_Rijndael::setBlockLength() setBlockLength()} isn't called, it'll be assumed to be 128 bits.  If 
12
+ * {@link Crypt_Rijndael::setKeyLength() setKeyLength()} isn't called, it'll be calculated from 
13
+ * {@link Crypt_Rijndael::setKey() setKey()}.  ie. if the key is 128-bits, the key length will be 128-bits.  If it's 
14
+ * 136-bits it'll be null-padded to 160-bits and 160 bits will be the key length until 
15
+ * {@link Crypt_Rijndael::setKey() setKey()} is called, again, at which point, it'll be recalculated.
16
+ *
17
+ * Not all Rijndael implementations may support 160-bits or 224-bits as the block length / key length.  mcrypt, for example,
18
+ * does not.  AES, itself, only supports block lengths of 128 and key lengths of 128, 192, and 256.
19
+ * {@link http://csrc.nist.gov/archive/aes/rijndael/Rijndael-ammended.pdf#page=10 Rijndael-ammended.pdf#page=10} defines the
20
+ * algorithm for block lengths of 192 and 256 but not for block lengths / key lengths of 160 and 224.  Indeed, 160 and 224
21
+ * are first defined as valid key / block lengths in 
22
+ * {@link http://csrc.nist.gov/archive/aes/rijndael/Rijndael-ammended.pdf#page=44 Rijndael-ammended.pdf#page=44}: 
23
+ * Extensions: Other block and Cipher Key lengths.
24
+ *
25
+ * {@internal The variable names are the same as those in 
26
+ * {@link http://www.csrc.nist.gov/publications/fips/fips197/fips-197.pdf#page=10 fips-197.pdf#page=10}.}}
27
+ *
28
+ * Here's a short example of how to use this library:
29
+ * <code>
30
+ * <?php
31
+ *    include('Crypt/Rijndael.php');
32
+ *
33
+ *    $rijndael = new Crypt_Rijndael();
34
+ *
35
+ *    $rijndael->setKey('abcdefghijklmnop');
36
+ *
37
+ *    $size = 10 * 1024;
38
+ *    $plaintext = '';
39
+ *    for ($i = 0; $i < $size; $i++) {
40
+ *        $plaintext.= 'a';
41
+ *    }
42
+ *
43
+ *    echo $rijndael->decrypt($rijndael->encrypt($plaintext));
44
+ * ?>
45
+ * </code>
46
+ *
47
+ * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy
48
+ * of this software and associated documentation files (the "Software"), to deal
49
+ * in the Software without restriction, including without limitation the rights
50
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
51
+ * copies of the Software, and to permit persons to whom the Software is
52
+ * furnished to do so, subject to the following conditions:
53
+ * 
54
+ * The above copyright notice and this permission notice shall be included in
55
+ * all copies or substantial portions of the Software.
56
+ * 
57
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
58
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
59
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
60
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
61
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
62
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
63
+ * THE SOFTWARE.
64
+ *
65
+ * @category   Crypt
66
+ * @package    Crypt_Rijndael
67
+ * @author     Jim Wigginton <[email protected]>
68
+ * @copyright  MMVIII Jim Wigginton
69
+ * @license    http://www.opensource.org/licenses/mit-license.html  MIT License
70
+ * @version    $Id: Rijndael.php,v 1.12 2010/02/09 06:10:26 terrafrost Exp $
71
+ * @link       http://phpseclib.sourceforge.net
72
+ */
73
+
74
+/**#@+
75
+ * @access public
76
+ * @see Crypt_Rijndael::encrypt()
77
+ * @see Crypt_Rijndael::decrypt()
78
+ */
79
+/**
80
+ * Encrypt / decrypt using the Counter mode.
81
+ *
82
+ * Set to -1 since that's what Crypt/Random.php uses to index the CTR mode.
83
+ *
84
+ * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29
85
+ */
86
+define('CRYPT_RIJNDAEL_MODE_CTR', -1);
87
+/**
88
+ * Encrypt / decrypt using the Electronic Code Book mode.
89
+ *
90
+ * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29
91
+ */
92
+define('CRYPT_RIJNDAEL_MODE_ECB', 1);
93
+/**
94
+ * Encrypt / decrypt using the Code Book Chaining mode.
95
+ *
96
+ * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29
97
+ */
98
+define('CRYPT_RIJNDAEL_MODE_CBC', 2);
99
+/**
100
+ * Encrypt / decrypt using the Cipher Feedback mode.
101
+ *
102
+ * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29
103
+ */
104
+define('CRYPT_RIJNDAEL_MODE_CFB', 3);
105
+/**
106
+ * Encrypt / decrypt using the Cipher Feedback mode.
107
+ *
108
+ * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29
109
+ */
110
+define('CRYPT_RIJNDAEL_MODE_OFB', 4);
111
+/**#@-*/
112
+
113
+/**#@+
114
+ * @access private
115
+ * @see Crypt_Rijndael::Crypt_Rijndael()
116
+ */
117
+/**
118
+ * Toggles the internal implementation
119
+ */
120
+define('CRYPT_RIJNDAEL_MODE_INTERNAL', 1);
121
+/**
122
+ * Toggles the mcrypt implementation
123
+ */
124
+define('CRYPT_RIJNDAEL_MODE_MCRYPT', 2);
125
+/**#@-*/
126
+
127
+/**
128
+ * Pure-PHP implementation of Rijndael.
129
+ *
130
+ * @author  Jim Wigginton <[email protected]>
131
+ * @version 0.1.0
132
+ * @access  public
133
+ * @package Crypt_Rijndael
134
+ */
135
+class Crypt_Rijndael {
136
+    /**
137
+     * The Encryption Mode
138
+     *
139
+     * @see Crypt_Rijndael::Crypt_Rijndael()
140
+     * @var Integer
141
+     * @access private
142
+     */
143
+    var $mode;
144
+
145
+    /**
146
+     * The Key
147
+     *
148
+     * @see Crypt_Rijndael::setKey()
149
+     * @var String
150
+     * @access private
151
+     */
152
+    var $key = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
153
+
154
+    /**
155
+     * The Initialization Vector
156
+     *
157
+     * @see Crypt_Rijndael::setIV()
158
+     * @var String
159
+     * @access private
160
+     */
161
+    var $iv = '';
162
+
163
+    /**
164
+     * A "sliding" Initialization Vector
165
+     *
166
+     * @see Crypt_Rijndael::enableContinuousBuffer()
167
+     * @var String
168
+     * @access private
169
+     */
170
+    var $encryptIV = '';
171
+
172
+    /**
173
+     * A "sliding" Initialization Vector
174
+     *
175
+     * @see Crypt_Rijndael::enableContinuousBuffer()
176
+     * @var String
177
+     * @access private
178
+     */
179
+    var $decryptIV = '';
180
+
181
+    /**
182
+     * Continuous Buffer status
183
+     *
184
+     * @see Crypt_Rijndael::enableContinuousBuffer()
185
+     * @var Boolean
186
+     * @access private
187
+     */
188
+    var $continuousBuffer = false;
189
+
190
+    /**
191
+     * Padding status
192
+     *
193
+     * @see Crypt_Rijndael::enablePadding()
194
+     * @var Boolean
195
+     * @access private
196
+     */
197
+    var $padding = true;
198
+
199
+    /**
200
+     * Does the key schedule need to be (re)calculated?
201
+     *
202
+     * @see setKey()
203
+     * @see setBlockLength()
204
+     * @see setKeyLength()
205
+     * @var Boolean
206
+     * @access private
207
+     */
208
+    var $changed = true;
209
+
210
+    /**
211
+     * Has the key length explicitly been set or should it be derived from the key, itself?
212
+     *
213
+     * @see setKeyLength()
214
+     * @var Boolean
215
+     * @access private
216
+     */
217
+    var $explicit_key_length = false;
218
+
219
+    /**
220
+     * The Key Schedule
221
+     *
222
+     * @see _setup()
223
+     * @var Array
224
+     * @access private
225
+     */
226
+    var $w;
227
+
228
+    /**
229
+     * The Inverse Key Schedule
230
+     *
231
+     * @see _setup()
232
+     * @var Array
233
+     * @access private
234
+     */
235
+    var $dw;
236
+
237
+    /**
238
+     * The Block Length
239
+     *
240
+     * @see setBlockLength()
241
+     * @var Integer
242
+     * @access private
243
+     * @internal The max value is 32, the min value is 16.  All valid values are multiples of 4.  Exists in conjunction with
244
+     *     $Nb because we need this value and not $Nb to pad strings appropriately.  
245
+     */
246
+    var $block_size = 16;
247
+
248
+    /**
249
+     * The Block Length divided by 32
250
+     *
251
+     * @see setBlockLength()
252
+     * @var Integer
253
+     * @access private
254
+     * @internal The max value is 256 / 32 = 8, the min value is 128 / 32 = 4.  Exists in conjunction with $block_size 
255
+     *    because the encryption / decryption / key schedule creation requires this number and not $block_size.  We could 
256
+     *    derive this from $block_size or vice versa, but that'd mean we'd have to do multiple shift operations, so in lieu
257
+     *    of that, we'll just precompute it once.
258
+     *
259
+     */
260
+    var $Nb = 4;
261
+
262
+    /**
263
+     * The Key Length
264
+     *
265
+     * @see setKeyLength()
266
+     * @var Integer
267
+     * @access private
268
+     * @internal The max value is 256 / 8 = 32, the min value is 128 / 8 = 16.  Exists in conjunction with $key_size
269
+     *    because the encryption / decryption / key schedule creation requires this number and not $key_size.  We could 
270
+     *    derive this from $key_size or vice versa, but that'd mean we'd have to do multiple shift operations, so in lieu
271
+     *    of that, we'll just precompute it once.
272
+     */
273
+    var $key_size = 16;
274
+
275
+    /**
276
+     * The Key Length divided by 32
277
+     *
278
+     * @see setKeyLength()
279
+     * @var Integer
280
+     * @access private
281
+     * @internal The max value is 256 / 32 = 8, the min value is 128 / 32 = 4
282
+     */
283
+    var $Nk = 4;
284
+
285
+    /**
286
+     * The Number of Rounds
287
+     *
288
+     * @var Integer
289
+     * @access private
290
+     * @internal The max value is 14, the min value is 10.
291
+     */
292
+    var $Nr;
293
+
294
+    /**
295
+     * Shift offsets
296
+     *
297
+     * @var Array
298
+     * @access private
299
+     */
300
+    var $c;
301
+
302
+    /**
303
+     * Precomputed mixColumns table
304
+     *
305
+     * @see Crypt_Rijndael()
306
+     * @var Array
307
+     * @access private
308
+     */
309
+    var $t0;
310
+
311
+    /**
312
+     * Precomputed mixColumns table
313
+     *
314
+     * @see Crypt_Rijndael()
315
+     * @var Array
316
+     * @access private
317
+     */
318
+    var $t1;
319
+
320
+    /**
321
+     * Precomputed mixColumns table
322
+     *
323
+     * @see Crypt_Rijndael()
324
+     * @var Array
325
+     * @access private
326
+     */
327
+    var $t2;
328
+
329
+    /**
330
+     * Precomputed mixColumns table
331
+     *
332
+     * @see Crypt_Rijndael()
333
+     * @var Array
334
+     * @access private
335
+     */
336
+    var $t3;
337
+
338
+    /**
339
+     * Precomputed invMixColumns table
340
+     *
341
+     * @see Crypt_Rijndael()
342
+     * @var Array
343
+     * @access private
344
+     */
345
+    var $dt0;
346
+
347
+    /**
348
+     * Precomputed invMixColumns table
349
+     *
350
+     * @see Crypt_Rijndael()
351
+     * @var Array
352
+     * @access private
353
+     */
354
+    var $dt1;
355
+
356
+    /**
357
+     * Precomputed invMixColumns table
358
+     *
359
+     * @see Crypt_Rijndael()
360
+     * @var Array
361
+     * @access private
362
+     */
363
+    var $dt2;
364
+
365
+    /**
366
+     * Precomputed invMixColumns table
367
+     *
368
+     * @see Crypt_Rijndael()
369
+     * @var Array
370
+     * @access private
371
+     */
372
+    var $dt3;
373
+
374
+    /**
375
+     * Is the mode one that is paddable?
376
+     *
377
+     * @see Crypt_Rijndael::Crypt_Rijndael()
378
+     * @var Boolean
379
+     * @access private
380
+     */
381
+    var $paddable = false;
382
+
383
+    /**
384
+     * Encryption buffer for CTR, OFB and CFB modes
385
+     *
386
+     * @see Crypt_Rijndael::encrypt()
387
+     * @var String
388
+     * @access private
389
+     */
390
+    var $enbuffer = array('encrypted' => '', 'xor' => '');
391
+
392
+    /**
393
+     * Decryption buffer for CTR, OFB and CFB modes
394
+     *
395
+     * @see Crypt_Rijndael::decrypt()
396
+     * @var String
397
+     * @access private
398
+     */
399
+    var $debuffer = array('ciphertext' => '');
400
+
401
+    /**
402
+     * Default Constructor.
403
+     *
404
+     * Determines whether or not the mcrypt extension should be used.  $mode should only, at present, be
405
+     * CRYPT_RIJNDAEL_MODE_ECB or CRYPT_RIJNDAEL_MODE_CBC.  If not explictly set, CRYPT_RIJNDAEL_MODE_CBC will be used.
406
+     *
407
+     * @param optional Integer $mode
408
+     * @return Crypt_Rijndael
409
+     * @access public
410
+     */
411
+    function Crypt_Rijndael($mode = CRYPT_RIJNDAEL_MODE_CBC)
412
+    {
413
+        switch ($mode) {
414
+            case CRYPT_RIJNDAEL_MODE_ECB:
415
+            case CRYPT_RIJNDAEL_MODE_CBC:
416
+                $this->paddable = true;
417
+                $this->mode = $mode;
418
+                break;
419
+            case CRYPT_RIJNDAEL_MODE_CTR:
420
+            case CRYPT_RIJNDAEL_MODE_CFB:
421
+            case CRYPT_RIJNDAEL_MODE_OFB:
422
+                $this->mode = $mode;
423
+                break;
424
+            default:
425
+                $this->paddable = true;
426
+                $this->mode = CRYPT_RIJNDAEL_MODE_CBC;
427
+        }
428
+
429
+        $t3 = &$this->t3;
430
+        $t2 = &$this->t2;
431
+        $t1 = &$this->t1;
432
+        $t0 = &$this->t0;
433
+
434
+        $dt3 = &$this->dt3;
435
+        $dt2 = &$this->dt2;
436
+        $dt1 = &$this->dt1;
437
+        $dt0 = &$this->dt0;
438
+
439
+        // according to <http://csrc.nist.gov/archive/aes/rijndael/Rijndael-ammended.pdf#page=19> (section 5.2.1), 
440
+        // precomputed tables can be used in the mixColumns phase.  in that example, they're assigned t0...t3, so
441
+        // those are the names we'll use.
442
+        $t3 = array(
443
+            0x6363A5C6, 0x7C7C84F8, 0x777799EE, 0x7B7B8DF6, 0xF2F20DFF, 0x6B6BBDD6, 0x6F6FB1DE, 0xC5C55491, 
444
+            0x30305060, 0x01010302, 0x6767A9CE, 0x2B2B7D56, 0xFEFE19E7, 0xD7D762B5, 0xABABE64D, 0x76769AEC, 
445
+            0xCACA458F, 0x82829D1F, 0xC9C94089, 0x7D7D87FA, 0xFAFA15EF, 0x5959EBB2, 0x4747C98E, 0xF0F00BFB, 
446
+            0xADADEC41, 0xD4D467B3, 0xA2A2FD5F, 0xAFAFEA45, 0x9C9CBF23, 0xA4A4F753, 0x727296E4, 0xC0C05B9B, 
447
+            0xB7B7C275, 0xFDFD1CE1, 0x9393AE3D, 0x26266A4C, 0x36365A6C, 0x3F3F417E, 0xF7F702F5, 0xCCCC4F83, 
448
+            0x34345C68, 0xA5A5F451, 0xE5E534D1, 0xF1F108F9, 0x717193E2, 0xD8D873AB, 0x31315362, 0x15153F2A, 
449
+            0x04040C08, 0xC7C75295, 0x23236546, 0xC3C35E9D, 0x18182830, 0x9696A137, 0x05050F0A, 0x9A9AB52F, 
450
+            0x0707090E, 0x12123624, 0x80809B1B, 0xE2E23DDF, 0xEBEB26CD, 0x2727694E, 0xB2B2CD7F, 0x75759FEA, 
451
+            0x09091B12, 0x83839E1D, 0x2C2C7458, 0x1A1A2E34, 0x1B1B2D36, 0x6E6EB2DC, 0x5A5AEEB4, 0xA0A0FB5B, 
452
+            0x5252F6A4, 0x3B3B4D76, 0xD6D661B7, 0xB3B3CE7D, 0x29297B52, 0xE3E33EDD, 0x2F2F715E, 0x84849713, 
453
+            0x5353F5A6, 0xD1D168B9, 0x00000000, 0xEDED2CC1, 0x20206040, 0xFCFC1FE3, 0xB1B1C879, 0x5B5BEDB6, 
454
+            0x6A6ABED4, 0xCBCB468D, 0xBEBED967, 0x39394B72, 0x4A4ADE94, 0x4C4CD498, 0x5858E8B0, 0xCFCF4A85, 
455
+            0xD0D06BBB, 0xEFEF2AC5, 0xAAAAE54F, 0xFBFB16ED, 0x4343C586, 0x4D4DD79A, 0x33335566, 0x85859411, 
456
+            0x4545CF8A, 0xF9F910E9, 0x02020604, 0x7F7F81FE, 0x5050F0A0, 0x3C3C4478, 0x9F9FBA25, 0xA8A8E34B, 
457
+            0x5151F3A2, 0xA3A3FE5D, 0x4040C080, 0x8F8F8A05, 0x9292AD3F, 0x9D9DBC21, 0x38384870, 0xF5F504F1, 
458
+            0xBCBCDF63, 0xB6B6C177, 0xDADA75AF, 0x21216342, 0x10103020, 0xFFFF1AE5, 0xF3F30EFD, 0xD2D26DBF, 
459
+            0xCDCD4C81, 0x0C0C1418, 0x13133526, 0xECEC2FC3, 0x5F5FE1BE, 0x9797A235, 0x4444CC88, 0x1717392E, 
460
+            0xC4C45793, 0xA7A7F255, 0x7E7E82FC, 0x3D3D477A, 0x6464ACC8, 0x5D5DE7BA, 0x19192B32, 0x737395E6, 
461
+            0x6060A0C0, 0x81819819, 0x4F4FD19E, 0xDCDC7FA3, 0x22226644, 0x2A2A7E54, 0x9090AB3B, 0x8888830B, 
462
+            0x4646CA8C, 0xEEEE29C7, 0xB8B8D36B, 0x14143C28, 0xDEDE79A7, 0x5E5EE2BC, 0x0B0B1D16, 0xDBDB76AD, 
463
+            0xE0E03BDB, 0x32325664, 0x3A3A4E74, 0x0A0A1E14, 0x4949DB92, 0x06060A0C, 0x24246C48, 0x5C5CE4B8, 
464
+            0xC2C25D9F, 0xD3D36EBD, 0xACACEF43, 0x6262A6C4, 0x9191A839, 0x9595A431, 0xE4E437D3, 0x79798BF2, 
465
+            0xE7E732D5, 0xC8C8438B, 0x3737596E, 0x6D6DB7DA, 0x8D8D8C01, 0xD5D564B1, 0x4E4ED29C, 0xA9A9E049, 
466
+            0x6C6CB4D8, 0x5656FAAC, 0xF4F407F3, 0xEAEA25CF, 0x6565AFCA, 0x7A7A8EF4, 0xAEAEE947, 0x08081810, 
467
+            0xBABAD56F, 0x787888F0, 0x25256F4A, 0x2E2E725C, 0x1C1C2438, 0xA6A6F157, 0xB4B4C773, 0xC6C65197, 
468
+            0xE8E823CB, 0xDDDD7CA1, 0x74749CE8, 0x1F1F213E, 0x4B4BDD96, 0xBDBDDC61, 0x8B8B860D, 0x8A8A850F, 
469
+            0x707090E0, 0x3E3E427C, 0xB5B5C471, 0x6666AACC, 0x4848D890, 0x03030506, 0xF6F601F7, 0x0E0E121C, 
470
+            0x6161A3C2, 0x35355F6A, 0x5757F9AE, 0xB9B9D069, 0x86869117, 0xC1C15899, 0x1D1D273A, 0x9E9EB927, 
471
+            0xE1E138D9, 0xF8F813EB, 0x9898B32B, 0x11113322, 0x6969BBD2, 0xD9D970A9, 0x8E8E8907, 0x9494A733, 
472
+            0x9B9BB62D, 0x1E1E223C, 0x87879215, 0xE9E920C9, 0xCECE4987, 0x5555FFAA, 0x28287850, 0xDFDF7AA5, 
473
+            0x8C8C8F03, 0xA1A1F859, 0x89898009, 0x0D0D171A, 0xBFBFDA65, 0xE6E631D7, 0x4242C684, 0x6868B8D0, 
474
+            0x4141C382, 0x9999B029, 0x2D2D775A, 0x0F0F111E, 0xB0B0CB7B, 0x5454FCA8, 0xBBBBD66D, 0x16163A2C
475
+        );
476
+
477
+        $dt3 = array(
478
+            0xF4A75051, 0x4165537E, 0x17A4C31A, 0x275E963A, 0xAB6BCB3B, 0x9D45F11F, 0xFA58ABAC, 0xE303934B, 
479
+            0x30FA5520, 0x766DF6AD, 0xCC769188, 0x024C25F5, 0xE5D7FC4F, 0x2ACBD7C5, 0x35448026, 0x62A38FB5, 
480
+            0xB15A49DE, 0xBA1B6725, 0xEA0E9845, 0xFEC0E15D, 0x2F7502C3, 0x4CF01281, 0x4697A38D, 0xD3F9C66B, 
481
+            0x8F5FE703, 0x929C9515, 0x6D7AEBBF, 0x5259DA95, 0xBE832DD4, 0x7421D358, 0xE0692949, 0xC9C8448E, 
482
+            0xC2896A75, 0x8E7978F4, 0x583E6B99, 0xB971DD27, 0xE14FB6BE, 0x88AD17F0, 0x20AC66C9, 0xCE3AB47D, 
483
+            0xDF4A1863, 0x1A3182E5, 0x51336097, 0x537F4562, 0x6477E0B1, 0x6BAE84BB, 0x81A01CFE, 0x082B94F9, 
484
+            0x48685870, 0x45FD198F, 0xDE6C8794, 0x7BF8B752, 0x73D323AB, 0x4B02E272, 0x1F8F57E3, 0x55AB2A66, 
485
+            0xEB2807B2, 0xB5C2032F, 0xC57B9A86, 0x3708A5D3, 0x2887F230, 0xBFA5B223, 0x036ABA02, 0x16825CED, 
486
+            0xCF1C2B8A, 0x79B492A7, 0x07F2F0F3, 0x69E2A14E, 0xDAF4CD65, 0x05BED506, 0x34621FD1, 0xA6FE8AC4, 
487
+            0x2E539D34, 0xF355A0A2, 0x8AE13205, 0xF6EB75A4, 0x83EC390B, 0x60EFAA40, 0x719F065E, 0x6E1051BD, 
488
+            0x218AF93E, 0xDD063D96, 0x3E05AEDD, 0xE6BD464D, 0x548DB591, 0xC45D0571, 0x06D46F04, 0x5015FF60, 
489
+            0x98FB2419, 0xBDE997D6, 0x4043CC89, 0xD99E7767, 0xE842BDB0, 0x898B8807, 0x195B38E7, 0xC8EEDB79, 
490
+            0x7C0A47A1, 0x420FE97C, 0x841EC9F8, 0x00000000, 0x80868309, 0x2BED4832, 0x1170AC1E, 0x5A724E6C, 
491
+            0x0EFFFBFD, 0x8538560F, 0xAED51E3D, 0x2D392736, 0x0FD9640A, 0x5CA62168, 0x5B54D19B, 0x362E3A24, 
492
+            0x0A67B10C, 0x57E70F93, 0xEE96D2B4, 0x9B919E1B, 0xC0C54F80, 0xDC20A261, 0x774B695A, 0x121A161C, 
493
+            0x93BA0AE2, 0xA02AE5C0, 0x22E0433C, 0x1B171D12, 0x090D0B0E, 0x8BC7ADF2, 0xB6A8B92D, 0x1EA9C814, 
494
+            0xF1198557, 0x75074CAF, 0x99DDBBEE, 0x7F60FDA3, 0x01269FF7, 0x72F5BC5C, 0x663BC544, 0xFB7E345B, 
495
+            0x4329768B, 0x23C6DCCB, 0xEDFC68B6, 0xE4F163B8, 0x31DCCAD7, 0x63851042, 0x97224013, 0xC6112084, 
496
+            0x4A247D85, 0xBB3DF8D2, 0xF93211AE, 0x29A16DC7, 0x9E2F4B1D, 0xB230F3DC, 0x8652EC0D, 0xC1E3D077, 
497
+            0xB3166C2B, 0x70B999A9, 0x9448FA11, 0xE9642247, 0xFC8CC4A8, 0xF03F1AA0, 0x7D2CD856, 0x3390EF22, 
498
+            0x494EC787, 0x38D1C1D9, 0xCAA2FE8C, 0xD40B3698, 0xF581CFA6, 0x7ADE28A5, 0xB78E26DA, 0xADBFA43F, 
499
+            0x3A9DE42C, 0x78920D50, 0x5FCC9B6A, 0x7E466254, 0x8D13C2F6, 0xD8B8E890, 0x39F75E2E, 0xC3AFF582, 
500
+            0x5D80BE9F, 0xD0937C69, 0xD52DA96F, 0x2512B3CF, 0xAC993BC8, 0x187DA710, 0x9C636EE8, 0x3BBB7BDB, 
501
+            0x267809CD, 0x5918F46E, 0x9AB701EC, 0x4F9AA883, 0x956E65E6, 0xFFE67EAA, 0xBCCF0821, 0x15E8E6EF, 
502
+            0xE79BD9BA, 0x6F36CE4A, 0x9F09D4EA, 0xB07CD629, 0xA4B2AF31, 0x3F23312A, 0xA59430C6, 0xA266C035, 
503
+            0x4EBC3774, 0x82CAA6FC, 0x90D0B0E0, 0xA7D81533, 0x04984AF1, 0xECDAF741, 0xCD500E7F, 0x91F62F17, 
504
+            0x4DD68D76, 0xEFB04D43, 0xAA4D54CC, 0x9604DFE4, 0xD1B5E39E, 0x6A881B4C, 0x2C1FB8C1, 0x65517F46, 
505
+            0x5EEA049D, 0x8C355D01, 0x877473FA, 0x0B412EFB, 0x671D5AB3, 0xDBD25292, 0x105633E9, 0xD647136D, 
506
+            0xD7618C9A, 0xA10C7A37, 0xF8148E59, 0x133C89EB, 0xA927EECE, 0x61C935B7, 0x1CE5EDE1, 0x47B13C7A, 
507
+            0xD2DF599C, 0xF2733F55, 0x14CE7918, 0xC737BF73, 0xF7CDEA53, 0xFDAA5B5F, 0x3D6F14DF, 0x44DB8678, 
508
+            0xAFF381CA, 0x68C43EB9, 0x24342C38, 0xA3405FC2, 0x1DC37216, 0xE2250CBC, 0x3C498B28, 0x0D9541FF, 
509
+            0xA8017139, 0x0CB3DE08, 0xB4E49CD8, 0x56C19064, 0xCB84617B, 0x32B670D5, 0x6C5C7448, 0xB85742D0
510
+        );
511
+
512
+        for ($i = 0; $i < 256; $i++) {
513
+            $t2[$i <<  8] = (($t3[$i] <<  8) & 0xFFFFFF00) | (($t3[$i] >> 24) & 0x000000FF);
514
+            $t1[$i << 16] = (($t3[$i] << 16) & 0xFFFF0000) | (($t3[$i] >> 16) & 0x0000FFFF);
515
+            $t0[$i << 24] = (($t3[$i] << 24) & 0xFF000000) | (($t3[$i] >>  8) & 0x00FFFFFF);
516
+
517
+            $dt2[$i <<  8] = (($this->dt3[$i] <<  8) & 0xFFFFFF00) | (($dt3[$i] >> 24) & 0x000000FF);
518
+            $dt1[$i << 16] = (($this->dt3[$i] << 16) & 0xFFFF0000) | (($dt3[$i] >> 16) & 0x0000FFFF);
519
+            $dt0[$i << 24] = (($this->dt3[$i] << 24) & 0xFF000000) | (($dt3[$i] >>  8) & 0x00FFFFFF);
520
+        }
521
+    }
522
+
523
+    /**
524
+     * Sets the key.
525
+     *
526
+     * Keys can be of any length.  Rijndael, itself, requires the use of a key that's between 128-bits and 256-bits long and
527
+     * whose length is a multiple of 32.  If the key is less than 256-bits and the key length isn't set, we round the length
528
+     * up to the closest valid key length, padding $key with null bytes.  If the key is more than 256-bits, we trim the
529
+     * excess bits.
530
+     *
531
+     * If the key is not explicitly set, it'll be assumed to be all null bytes.
532
+     *
533
+     * @access public
534
+     * @param String $key
535
+     */
536
+    function setKey($key)
537
+    {
538
+        $this->key = $key;
539
+        $this->changed = true;
540
+    }
541
+
542
+    /**
543
+     * Sets the initialization vector. (optional)
544
+     *
545
+     * SetIV is not required when CRYPT_RIJNDAEL_MODE_ECB is being used.  If not explictly set, it'll be assumed
546
+     * to be all zero's.
547
+     *
548
+     * @access public
549
+     * @param String $iv
550
+     */
551
+    function setIV($iv)
552
+    {
553
+        $this->encryptIV = $this->decryptIV = $this->iv = str_pad(substr($iv, 0, $this->block_size), $this->block_size, chr(0));;
554
+    }
555
+
556
+    /**
557
+     * Sets the key length
558
+     *
559
+     * Valid key lengths are 128, 160, 192, 224, and 256.  If the length is less than 128, it will be rounded up to
560
+     * 128.  If the length is greater then 128 and invalid, it will be rounded down to the closest valid amount.
561
+     *
562
+     * @access public
563
+     * @param Integer $length
564
+     */
565
+    function setKeyLength($length)
566
+    {
567
+        $length >>= 5;
568
+        if ($length > 8) {
569
+            $length = 8;
570
+        } else if ($length < 4) {
571
+            $length = 4;
572
+        }
573
+        $this->Nk = $length;
574
+        $this->key_size = $length << 2;
575
+
576
+        $this->explicit_key_length = true;
577
+        $this->changed = true;
578
+    }
579
+
580
+    /**
581
+     * Sets the block length
582
+     *
583
+     * Valid block lengths are 128, 160, 192, 224, and 256.  If the length is less than 128, it will be rounded up to
584
+     * 128.  If the length is greater then 128 and invalid, it will be rounded down to the closest valid amount.
585
+     *
586
+     * @access public
587
+     * @param Integer $length
588
+     */
589
+    function setBlockLength($length)
590
+    {
591
+        $length >>= 5;
592
+        if ($length > 8) {
593
+            $length = 8;
594
+        } else if ($length < 4) {
595
+            $length = 4;
596
+        }
597
+        $this->Nb = $length;
598
+        $this->block_size = $length << 2;
599
+        $this->changed = true;
600
+    }
601
+
602
+    /**
603
+     * Generate CTR XOR encryption key
604
+     *
605
+     * Encrypt the output of this and XOR it against the ciphertext / plaintext to get the
606
+     * plaintext / ciphertext in CTR mode.
607
+     *
608
+     * @see Crypt_Rijndael::decrypt()
609
+     * @see Crypt_Rijndael::encrypt()
610
+     * @access public
611
+     * @param Integer $length
612
+     * @param String $iv
613
+     */
614
+    function _generate_xor($length, &$iv)
615
+    {
616
+        $xor = '';
617
+        $block_size = $this->block_size;
618
+        $num_blocks = floor(($length + ($block_size - 1)) / $block_size);
619
+        for ($i = 0; $i < $num_blocks; $i++) {
620
+            $xor.= $iv;
621
+            for ($j = 4; $j <= $block_size; $j+=4) {
622
+                $temp = substr($iv, -$j, 4);
623
+                switch ($temp) {
624
+                    case "\xFF\xFF\xFF\xFF":
625
+                        $iv = substr_replace($iv, "\x00\x00\x00\x00", -$j, 4);
626
+                        break;
627
+                    case "\x7F\xFF\xFF\xFF":
628
+                        $iv = substr_replace($iv, "\x80\x00\x00\x00", -$j, 4);
629
+                        break 2;
630
+                    default:
631
+                        extract(unpack('Ncount', $temp));
632
+                        $iv = substr_replace($iv, pack('N', $count + 1), -$j, 4);
633
+                        break 2;
634
+                }
635
+            }
636
+        }
637
+
638
+        return $xor;
639
+    }
640
+
641
+    /**
642
+     * Encrypts a message.
643
+     *
644
+     * $plaintext will be padded with additional bytes such that it's length is a multiple of the block size.  Other Rjindael
645
+     * implementations may or may not pad in the same manner.  Other common approaches to padding and the reasons why it's
646
+     * necessary are discussed in the following
647
+     * URL:
648
+     *
649
+     * {@link http://www.di-mgt.com.au/cryptopad.html http://www.di-mgt.com.au/cryptopad.html}
650
+     *
651
+     * An alternative to padding is to, separately, send the length of the file.  This is what SSH, in fact, does.
652
+     * strlen($plaintext) will still need to be a multiple of 8, however, arbitrary values can be added to make it that
653
+     * length.
654
+     *
655
+     * @see Crypt_Rijndael::decrypt()
656
+     * @access public
657
+     * @param String $plaintext
658
+     */
659
+    function encrypt($plaintext)
660
+    {
661
+        $this->_setup();
662
+        if ($this->paddable) {
663
+            $plaintext = $this->_pad($plaintext);
664
+        }
665
+
666
+        $block_size = $this->block_size;
667
+        $buffer = &$this->enbuffer;
668
+        $continuousBuffer = $this->continuousBuffer;
669
+        $ciphertext = '';
670
+        switch ($this->mode) {
671
+            case CRYPT_RIJNDAEL_MODE_ECB:
672
+                for ($i = 0; $i < strlen($plaintext); $i+=$block_size) {
673
+                    $ciphertext.= $this->_encryptBlock(substr($plaintext, $i, $block_size));
674
+                }
675
+                break;
676
+            case CRYPT_RIJNDAEL_MODE_CBC:
677
+                $xor = $this->encryptIV;
678
+                for ($i = 0; $i < strlen($plaintext); $i+=$block_size) {
679
+                    $block = substr($plaintext, $i, $block_size);
680
+                    $block = $this->_encryptBlock($block ^ $xor);
681
+                    $xor = $block;
682
+                    $ciphertext.= $block;
683
+                }
684
+                if ($this->continuousBuffer) {
685
+                    $this->encryptIV = $xor;
686
+                }
687
+                break;
688
+            case CRYPT_RIJNDAEL_MODE_CTR:
689
+                $xor = $this->encryptIV;
690
+                if (!empty($buffer)) {
691
+                    for ($i = 0; $i < strlen($plaintext); $i+=$block_size) {
692
+                        $block = substr($plaintext, $i, $block_size);
693
+                        $buffer.= $this->_encryptBlock($this->_generate_xor($block_size, $xor));
694
+                        $key = $this->_string_shift($buffer, $block_size);
695
+                        $ciphertext.= $block ^ $key;
696
+                    }
697
+                } else {
698
+                    for ($i = 0; $i < strlen($plaintext); $i+=$block_size) {
699
+                        $block = substr($plaintext, $i, $block_size);
700
+                        $key = $this->_encryptBlock($this->_generate_xor($block_size, $xor));
701
+                        $ciphertext.= $block ^ $key;
702
+                    }
703
+                }
704
+                if ($this->continuousBuffer) {
705
+                    $this->encryptIV = $xor;
706
+                    if ($start = strlen($plaintext) % $block_size) {
707
+                        $buffer = substr($key, $start) . $buffer;
708
+                    }
709
+                }
710
+                break;
711
+            case CRYPT_RIJNDAEL_MODE_CFB:
712
+                if (!empty($buffer['xor'])) {
713
+                    $ciphertext = $plaintext ^ $buffer['xor'];
714
+                    $iv = $buffer['encrypted'] . $ciphertext;
715
+                    $start = strlen($ciphertext);
716
+                    $buffer['encrypted'].= $ciphertext;
717
+                    $buffer['xor'] = substr($buffer['xor'], strlen($ciphertext));
718
+                } else {
719
+                    $ciphertext = '';
720
+                    $iv = $this->encryptIV;
721
+                    $start = 0;
722
+                }
723
+
724
+                for ($i = $start; $i < strlen($plaintext); $i+=$block_size) {
725
+                    $block = substr($plaintext, $i, $block_size);
726
+                    $xor = $this->_encryptBlock($iv);
727
+                    $iv = $block ^ $xor;
728
+                    if ($continuousBuffer && strlen($iv) != $block_size) {
729
+                        $buffer = array(
730
+                            'encrypted' => $iv,
731
+                            'xor' => substr($xor, strlen($iv))
732
+                        );
733
+                    }
734
+                    $ciphertext.= $iv;
735
+                }
736
+
737
+                if ($this->continuousBuffer) {
738
+                    $this->encryptIV = $iv;
739
+                }
740
+                break;
741
+            case CRYPT_RIJNDAEL_MODE_OFB:
742
+                $xor = $this->encryptIV;
743
+                if (strlen($buffer)) {
744
+                    for ($i = 0; $i < strlen($plaintext); $i+=$block_size) {
745
+                        $xor = $this->_encryptBlock($xor);
746
+                        $buffer.= $xor;
747
+                        $key = $this->_string_shift($buffer, $block_size);
748
+                        $ciphertext.= substr($plaintext, $i, $block_size) ^ $key;
749
+                    }
750
+                } else {
751
+                    for ($i = 0; $i < strlen($plaintext); $i+=$block_size) {
752
+                        $xor = $this->_encryptBlock($xor);
753
+                        $ciphertext.= substr($plaintext, $i, $block_size) ^ $xor;
754
+                    }
755
+                    $key = $xor;
756
+                }
757
+                if ($this->continuousBuffer) {
758
+                    $this->encryptIV = $xor;
759
+                    if ($start = strlen($plaintext) % $block_size) {
760
+                         $buffer = substr($key, $start) . $buffer;
761
+                    }
762
+                }
763
+        }
764
+
765
+        return $ciphertext;
766
+    }
767
+
768
+    /**
769
+     * Decrypts a message.
770
+     *
771
+     * If strlen($ciphertext) is not a multiple of the block size, null bytes will be added to the end of the string until
772
+     * it is.
773
+     *
774
+     * @see Crypt_Rijndael::encrypt()
775
+     * @access public
776
+     * @param String $ciphertext
777
+     */
778
+    function decrypt($ciphertext)
779
+    {
780
+        $this->_setup();
781
+
782
+        if ($this->paddable) {
783
+            // we pad with chr(0) since that's what mcrypt_generic does.  to quote from http://php.net/function.mcrypt-generic :
784
+            // "The data is padded with "\0" to make sure the length of the data is n * blocksize."
785
+            $ciphertext = str_pad($ciphertext, strlen($ciphertext) + ($this->block_size - strlen($ciphertext) % $this->block_size) % $this->block_size, chr(0));
786
+        }
787
+
788
+        $block_size = $this->block_size;
789
+        $buffer = &$this->debuffer;
790
+        $continuousBuffer = $this->continuousBuffer;
791
+        $plaintext = '';
792
+        switch ($this->mode) {
793
+            case CRYPT_RIJNDAEL_MODE_ECB:
794
+                for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) {
795
+                    $plaintext.= $this->_decryptBlock(substr($ciphertext, $i, $block_size));
796
+                }
797
+                break;
798
+            case CRYPT_RIJNDAEL_MODE_CBC:
799
+                $xor = $this->decryptIV;
800
+                for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) {
801
+                    $block = substr($ciphertext, $i, $block_size);
802
+                    $plaintext.= $this->_decryptBlock($block) ^ $xor;
803
+                    $xor = $block;
804
+                }
805
+                if ($this->continuousBuffer) {
806
+                    $this->decryptIV = $xor;
807
+                }
808
+                break;
809
+            case CRYPT_RIJNDAEL_MODE_CTR:
810
+                $xor = $this->decryptIV;
811
+                if (strlen($buffer)) {
812
+                    for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) {
813
+                        $block = substr($ciphertext, $i, $block_size);
814
+                        $buffer.= $this->_encryptBlock($this->_generate_xor($block_size, $xor));
815
+                        $key = $this->_string_shift($buffer, $block_size);
816
+                        $plaintext.= $block ^ $key;
817
+                    }
818
+                } else {
819
+                    for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) {
820
+                        $block = substr($ciphertext, $i, $block_size);
821
+                        $key = $this->_encryptBlock($this->_generate_xor($block_size, $xor));
822
+                        $plaintext.= $block ^ $key;
823
+                    }
824
+                }
825
+                if ($this->continuousBuffer) {
826
+                    $this->decryptIV = $xor;
827
+                    if ($start = strlen($ciphertext) % $block_size) {
828
+                        $buffer = substr($key, $start) . $buffer;
829
+                    }
830
+                }
831
+                break;
832
+            case CRYPT_RIJNDAEL_MODE_CFB:
833
+                if (!empty($buffer['ciphertext'])) {
834
+                    $plaintext = $ciphertext ^ substr($this->decryptIV, strlen($buffer['ciphertext']));
835
+                    $buffer['ciphertext'].= substr($ciphertext, 0, strlen($plaintext));
836
+                    if (strlen($buffer['ciphertext']) == $block_size) {
837
+                        $xor = $this->_encryptBlock($buffer['ciphertext']);
838
+                        $buffer['ciphertext'] = '';
839
+                    }
840
+                    $start = strlen($plaintext);
841
+                    $block = $this->decryptIV;
842
+                } else {
843
+                    $plaintext = '';
844
+                    $xor = $this->_encryptBlock($this->decryptIV);
845
+                    $start = 0;
846
+                }
847
+
848
+                for ($i = $start; $i < strlen($ciphertext); $i+=$block_size) {
849
+                    $block = substr($ciphertext, $i, $block_size);
850
+                    $plaintext.= $block ^ $xor;
851
+                    if ($continuousBuffer && strlen($block) != $block_size) {
852
+                        $buffer['ciphertext'].= $block;
853
+                        $block = $xor;
854
+                    } else if (strlen($block) == $block_size) {
855
+                        $xor = $this->_encryptBlock($block);
856
+                    }
857
+                }
858
+                if ($this->continuousBuffer) {
859
+                    $this->decryptIV = $block;
860
+                }
861
+                break;
862
+            case CRYPT_RIJNDAEL_MODE_OFB:
863
+                $xor = $this->decryptIV;
864
+                if (strlen($buffer)) {
865
+                    for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) {
866
+                        $xor = $this->_encryptBlock($xor);
867
+                        $buffer.= $xor;
868
+                        $key = $this->_string_shift($buffer, $block_size);
869
+                        $plaintext.= substr($ciphertext, $i, $block_size) ^ $key;
870
+                    }
871
+                } else {
872
+                    for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) {
873
+                        $xor = $this->_encryptBlock($xor);
874
+                        $plaintext.= substr($ciphertext, $i, $block_size) ^ $xor;
875
+                    }
876
+                    $key = $xor;
877
+                }
878
+                if ($this->continuousBuffer) {
879
+                    $this->decryptIV = $xor;
880
+                    if ($start = strlen($ciphertext) % $block_size) {
881
+                         $buffer = substr($key, $start) . $buffer;
882
+                    }
883
+                }
884
+        }
885
+
886
+        return $this->paddable ? $this->_unpad($plaintext) : $plaintext;
887
+    }
888
+
889
+    /**
890
+     * Encrypts a block
891
+     *
892
+     * @access private
893
+     * @param String $in
894
+     * @return String
895
+     */
896
+    function _encryptBlock($in)
897
+    {
898
+        $state = array();
899
+        $words = unpack('N*word', $in);
900
+
901
+        $w = $this->w;
902
+        $t0 = $this->t0;
903
+        $t1 = $this->t1;
904
+        $t2 = $this->t2;
905
+        $t3 = $this->t3;
906
+        $Nb = $this->Nb;
907
+        $Nr = $this->Nr;
908
+        $c = $this->c;
909
+
910
+        // addRoundKey
911
+        $i = 0;
912
+        foreach ($words as $word) {
913
+            $state[] = $word ^ $w[0][$i++];
914
+        }
915
+
916
+        // fips-197.pdf#page=19, "Figure 5. Pseudo Code for the Cipher", states that this loop has four components - 
917
+        // subBytes, shiftRows, mixColumns, and addRoundKey. fips-197.pdf#page=30, "Implementation Suggestions Regarding 
918
+        // Various Platforms" suggests that performs enhanced implementations are described in Rijndael-ammended.pdf.
919
+        // Rijndael-ammended.pdf#page=20, "Implementation aspects / 32-bit processor", discusses such an optimization.
920
+        // Unfortunately, the description given there is not quite correct.  Per aes.spec.v316.pdf#page=19 [1], 
921
+        // equation (7.4.7) is supposed to use addition instead of subtraction, so we'll do that here, as well.
922
+
923
+        // [1] http://fp.gladman.plus.com/cryptography_technology/rijndael/aes.spec.v316.pdf
924
+        $temp = array();
925
+        for ($round = 1; $round < $Nr; $round++) {
926
+            $i = 0; // $c[0] == 0
927
+            $j = $c[1];
928
+            $k = $c[2];
929
+            $l = $c[3];
930
+
931
+            while ($i < $this->Nb) {
932
+                $temp[$i] = $t0[$state[$i] & 0xFF000000] ^ 
933
+                            $t1[$state[$j] & 0x00FF0000] ^ 
934
+                            $t2[$state[$k] & 0x0000FF00] ^ 
935
+                            $t3[$state[$l] & 0x000000FF] ^ 
936
+                            $w[$round][$i];
937
+                $i++;
938
+                $j = ($j + 1) % $Nb;
939
+                $k = ($k + 1) % $Nb;
940
+                $l = ($l + 1) % $Nb;
941
+            }
942
+
943
+            for ($i = 0; $i < $Nb; $i++) {
944
+                $state[$i] = $temp[$i];
945
+            }
946
+        }
947
+
948
+        // subWord
949
+        for ($i = 0; $i < $Nb; $i++) {
950
+            $state[$i] = $this->_subWord($state[$i]);
951
+        }
952
+
953
+        // shiftRows + addRoundKey
954
+        $i = 0; // $c[0] == 0
955
+        $j = $c[1];
956
+        $k = $c[2];
957
+        $l = $c[3];
958
+        while ($i < $this->Nb) {
959
+            $temp[$i] = ($state[$i] & 0xFF000000) ^ 
960
+                        ($state[$j] & 0x00FF0000) ^ 
961
+                        ($state[$k] & 0x0000FF00) ^ 
962
+                        ($state[$l] & 0x000000FF) ^
963
+                         $w[$Nr][$i];
964
+            $i++;
965
+            $j = ($j + 1) % $Nb;
966
+            $k = ($k + 1) % $Nb;
967
+            $l = ($l + 1) % $Nb;
968
+        }
969
+        $state = $temp;
970
+
971
+        array_unshift($state, 'N*');
972
+
973
+        return call_user_func_array('pack', $state);
974
+    }
975
+
976
+    /**
977
+     * Decrypts a block
978
+     *
979
+     * @access private
980
+     * @param String $in
981
+     * @return String
982
+     */
983
+    function _decryptBlock($in)
984
+    {
985
+        $state = array();
986
+        $words = unpack('N*word', $in);
987
+
988
+        $num_states = count($state);
989
+        $dw = $this->dw;
990
+        $dt0 = $this->dt0;
991
+        $dt1 = $this->dt1;
992
+        $dt2 = $this->dt2;
993
+        $dt3 = $this->dt3;
994
+        $Nb = $this->Nb;
995
+        $Nr = $this->Nr;
996
+        $c = $this->c;
997
+
998
+        // addRoundKey
999
+        $i = 0;
1000
+        foreach ($words as $word) {
1001
+            $state[] = $word ^ $dw[$Nr][$i++];
1002
+        }
1003
+
1004
+        $temp = array();
1005
+        for ($round = $Nr - 1; $round > 0; $round--) {
1006
+            $i = 0; // $c[0] == 0
1007
+            $j = $Nb - $c[1];
1008
+            $k = $Nb - $c[2];
1009
+            $l = $Nb - $c[3];
1010
+
1011
+            while ($i < $Nb) {
1012
+                $temp[$i] = $dt0[$state[$i] & 0xFF000000] ^ 
1013
+                            $dt1[$state[$j] & 0x00FF0000] ^ 
1014
+                            $dt2[$state[$k] & 0x0000FF00] ^ 
1015
+                            $dt3[$state[$l] & 0x000000FF] ^ 
1016
+                            $dw[$round][$i];
1017
+                $i++;
1018
+                $j = ($j + 1) % $Nb;
1019
+                $k = ($k + 1) % $Nb;
1020
+                $l = ($l + 1) % $Nb;
1021
+            }
1022
+
1023
+            for ($i = 0; $i < $Nb; $i++) {
1024
+                $state[$i] = $temp[$i];
1025
+            }
1026
+        }
1027
+
1028
+        // invShiftRows + invSubWord + addRoundKey
1029
+        $i = 0; // $c[0] == 0
1030
+        $j = $Nb - $c[1];
1031
+        $k = $Nb - $c[2];
1032
+        $l = $Nb - $c[3];
1033
+
1034
+        while ($i < $Nb) {
1035
+            $temp[$i] = $dw[0][$i] ^ 
1036
+                        $this->_invSubWord(($state[$i] & 0xFF000000) | 
1037
+                                           ($state[$j] & 0x00FF0000) | 
1038
+                                           ($state[$k] & 0x0000FF00) | 
1039
+                                           ($state[$l] & 0x000000FF));
1040
+            $i++;
1041
+            $j = ($j + 1) % $Nb;
1042
+            $k = ($k + 1) % $Nb;
1043
+            $l = ($l + 1) % $Nb;
1044
+        }
1045
+
1046
+        $state = $temp;
1047
+
1048
+        array_unshift($state, 'N*');
1049
+
1050
+        return call_user_func_array('pack', $state);
1051
+    }
1052
+
1053
+    /**
1054
+     * Setup Rijndael
1055
+     *
1056
+     * Validates all the variables and calculates $Nr - the number of rounds that need to be performed - and $w - the key
1057
+     * key schedule.
1058
+     *
1059
+     * @access private
1060
+     */
1061
+    function _setup()
1062
+    {
1063
+        // Each number in $rcon is equal to the previous number multiplied by two in Rijndael's finite field.
1064
+        // See http://en.wikipedia.org/wiki/Finite_field_arithmetic#Multiplicative_inverse
1065
+        static $rcon = array(0,
1066
+            0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x10000000,
1067
+            0x20000000, 0x40000000, 0x80000000, 0x1B000000, 0x36000000,
1068
+            0x6C000000, 0xD8000000, 0xAB000000, 0x4D000000, 0x9A000000,
1069
+            0x2F000000, 0x5E000000, 0xBC000000, 0x63000000, 0xC6000000,
1070
+            0x97000000, 0x35000000, 0x6A000000, 0xD4000000, 0xB3000000,
1071
+            0x7D000000, 0xFA000000, 0xEF000000, 0xC5000000, 0x91000000
1072
+        );
1073
+
1074
+        if (!$this->changed) {
1075
+            return;
1076
+        }
1077
+
1078
+        if (!$this->explicit_key_length) {
1079
+            // we do >> 2, here, and not >> 5, as we do above, since strlen($this->key) tells us the number of bytes - not bits
1080
+            $length = strlen($this->key) >> 2;
1081
+            if ($length > 8) {
1082
+                $length = 8;
1083
+            } else if ($length < 4) {
1084
+                $length = 4;
1085
+            }
1086
+            $this->Nk = $length;
1087
+            $this->key_size = $length << 2;
1088
+        }
1089
+
1090
+        $this->key = str_pad(substr($this->key, 0, $this->key_size), $this->key_size, chr(0));
1091
+        $this->encryptIV = $this->decryptIV = $this->iv = str_pad(substr($this->iv, 0, $this->block_size), $this->block_size, chr(0));
1092
+
1093
+        // see Rijndael-ammended.pdf#page=44
1094
+        $this->Nr = max($this->Nk, $this->Nb) + 6;
1095
+
1096
+        // shift offsets for Nb = 5, 7 are defined in Rijndael-ammended.pdf#page=44,
1097
+        //     "Table 8: Shift offsets in Shiftrow for the alternative block lengths"
1098
+        // shift offsets for Nb = 4, 6, 8 are defined in Rijndael-ammended.pdf#page=14,
1099
+        //     "Table 2: Shift offsets for different block lengths"
1100
+        switch ($this->Nb) {
1101
+            case 4:
1102
+            case 5:
1103
+            case 6:
1104
+                $this->c = array(0, 1, 2, 3);
1105
+                break;
1106
+            case 7:
1107
+                $this->c = array(0, 1, 2, 4);
1108
+                break;
1109
+            case 8:
1110
+                $this->c = array(0, 1, 3, 4);
1111
+        }
1112
+
1113
+        $key = $this->key;
1114
+
1115
+        $w = array_values(unpack('N*words', $key));
1116
+
1117
+        $length = $this->Nb * ($this->Nr + 1);
1118
+        for ($i = $this->Nk; $i < $length; $i++) {
1119
+            $temp = $w[$i - 1];
1120
+            if ($i % $this->Nk == 0) {
1121
+                // according to <http://php.net/language.types.integer>, "the size of an integer is platform-dependent".
1122
+                // on a 32-bit machine, it's 32-bits, and on a 64-bit machine, it's 64-bits. on a 32-bit machine,
1123
+                // 0xFFFFFFFF << 8 == 0xFFFFFF00, but on a 64-bit machine, it equals 0xFFFFFFFF00. as such, doing 'and'
1124
+                // with 0xFFFFFFFF (or 0xFFFFFF00) on a 32-bit machine is unnecessary, but on a 64-bit machine, it is.
1125
+                $temp = (($temp << 8) & 0xFFFFFF00) | (($temp >> 24) & 0x000000FF); // rotWord
1126
+                $temp = $this->_subWord($temp) ^ $rcon[$i / $this->Nk];
1127
+            } else if ($this->Nk > 6 && $i % $this->Nk == 4) {
1128
+                $temp = $this->_subWord($temp);
1129
+            }
1130
+            $w[$i] = $w[$i - $this->Nk] ^ $temp;
1131
+        }
1132
+
1133
+        // convert the key schedule from a vector of $Nb * ($Nr + 1) length to a matrix with $Nr + 1 rows and $Nb columns
1134
+        // and generate the inverse key schedule.  more specifically,
1135
+        // according to <http://csrc.nist.gov/archive/aes/rijndael/Rijndael-ammended.pdf#page=23> (section 5.3.3), 
1136
+        // "The key expansion for the Inverse Cipher is defined as follows:
1137
+        //        1. Apply the Key Expansion.
1138
+        //        2. Apply InvMixColumn to all Round Keys except the first and the last one."
1139
+        // also, see fips-197.pdf#page=27, "5.3.5 Equivalent Inverse Cipher"
1140
+        $temp = array();
1141
+        for ($i = $row = $col = 0; $i < $length; $i++, $col++) {
1142
+            if ($col == $this->Nb) {
1143
+                if ($row == 0) {
1144
+                    $this->dw[0] = $this->w[0];
1145
+                } else {
1146
+                    // subWord + invMixColumn + invSubWord = invMixColumn
1147
+                    $j = 0;
1148
+                    while ($j < $this->Nb) {
1149
+                        $dw = $this->_subWord($this->w[$row][$j]);
1150
+                        $temp[$j] = $this->dt0[$dw & 0xFF000000] ^ 
1151
+                                    $this->dt1[$dw & 0x00FF0000] ^ 
1152
+                                    $this->dt2[$dw & 0x0000FF00] ^ 
1153
+                                    $this->dt3[$dw & 0x000000FF];
1154
+                        $j++;
1155
+                    }
1156
+                    $this->dw[$row] = $temp;
1157
+                }
1158
+
1159
+                $col = 0;
1160
+                $row++;
1161
+            }
1162
+            $this->w[$row][$col] = $w[$i];
1163
+        }
1164
+
1165
+        $this->dw[$row] = $this->w[$row];
1166
+
1167
+        $this->changed = false;
1168
+    }
1169
+
1170
+    /**
1171
+     * Performs S-Box substitutions
1172
+     *
1173
+     * @access private
1174
+     */
1175
+    function _subWord($word)
1176
+    {
1177
+        static $sbox0, $sbox1, $sbox2, $sbox3;
1178
+
1179
+        if (empty($sbox0)) {
1180
+            $sbox0 = array(
1181
+                0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76,
1182
+                0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0,
1183
+                0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC, 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15,
1184
+                0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, 0xEB, 0x27, 0xB2, 0x75,
1185
+                0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84,
1186
+                0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF,
1187
+                0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8,
1188
+                0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2,
1189
+                0xCD, 0x0C, 0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73,
1190
+                0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, 0x0B, 0xDB,
1191
+                0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79,
1192
+                0xE7, 0xC8, 0x37, 0x6D, 0x8D, 0xD5, 0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08,
1193
+                0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, 0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A,
1194
+                0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E,
1195
+                0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94, 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF,
1196
+                0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16
1197
+            );
1198
+
1199
+            $sbox1 = array();
1200
+            $sbox2 = array();
1201
+            $sbox3 = array();
1202
+
1203
+            for ($i = 0; $i < 256; $i++) {
1204
+                $sbox1[$i <<  8] = $sbox0[$i] <<  8;
1205
+                $sbox2[$i << 16] = $sbox0[$i] << 16;
1206
+                $sbox3[$i << 24] = $sbox0[$i] << 24;
1207
+            }
1208
+        }
1209
+
1210
+        return $sbox0[$word & 0x000000FF] | 
1211
+               $sbox1[$word & 0x0000FF00] | 
1212
+               $sbox2[$word & 0x00FF0000] | 
1213
+               $sbox3[$word & 0xFF000000];
1214
+    }
1215
+
1216
+    /**
1217
+     * Performs inverse S-Box substitutions
1218
+     *
1219
+     * @access private
1220
+     */
1221
+    function _invSubWord($word)
1222
+    {
1223
+        static $sbox0, $sbox1, $sbox2, $sbox3;
1224
+
1225
+        if (empty($sbox0)) {
1226
+            $sbox0 = array(
1227
+                0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, 0xBF, 0x40, 0xA3, 0x9E, 0x81, 0xF3, 0xD7, 0xFB,
1228
+                0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, 0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB,
1229
+                0x54, 0x7B, 0x94, 0x32, 0xA6, 0xC2, 0x23, 0x3D, 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E,
1230
+                0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2, 0x76, 0x5B, 0xA2, 0x49, 0x6D, 0x8B, 0xD1, 0x25,
1231
+                0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92,
1232
+                0x6C, 0x70, 0x48, 0x50, 0xFD, 0xED, 0xB9, 0xDA, 0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84,
1233
+                0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, 0xF7, 0xE4, 0x58, 0x05, 0xB8, 0xB3, 0x45, 0x06,
1234
+                0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02, 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B,
1235
+                0x3A, 0x91, 0x11, 0x41, 0x4F, 0x67, 0xDC, 0xEA, 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73,
1236
+                0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, 0xE2, 0xF9, 0x37, 0xE8, 0x1C, 0x75, 0xDF, 0x6E,
1237
+                0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, 0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B,
1238
+                0xFC, 0x56, 0x3E, 0x4B, 0xC6, 0xD2, 0x79, 0x20, 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4,
1239
+                0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31, 0xB1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xEC, 0x5F,
1240
+                0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, 0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF,
1241
+                0xA0, 0xE0, 0x3B, 0x4D, 0xAE, 0x2A, 0xF5, 0xB0, 0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61,
1242
+                0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, 0xE1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0C, 0x7D
1243
+            );
1244
+
1245
+            $sbox1 = array();
1246
+            $sbox2 = array();
1247
+            $sbox3 = array();
1248
+
1249
+            for ($i = 0; $i < 256; $i++) {
1250
+                $sbox1[$i <<  8] = $sbox0[$i] <<  8;
1251
+                $sbox2[$i << 16] = $sbox0[$i] << 16;
1252
+                $sbox3[$i << 24] = $sbox0[$i] << 24;
1253
+            }
1254
+        }
1255
+
1256
+        return $sbox0[$word & 0x000000FF] | 
1257
+               $sbox1[$word & 0x0000FF00] | 
1258
+               $sbox2[$word & 0x00FF0000] | 
1259
+               $sbox3[$word & 0xFF000000];
1260
+    }
1261
+
1262
+    /**
1263
+     * Pad "packets".
1264
+     *
1265
+     * Rijndael works by encrypting between sixteen and thirty-two bytes at a time, provided that number is also a multiple
1266
+     * of four.  If you ever need to encrypt or decrypt something that isn't of the proper length, it becomes necessary to
1267
+     * pad the input so that it is of the proper length.
1268
+     *
1269
+     * Padding is enabled by default.  Sometimes, however, it is undesirable to pad strings.  Such is the case in SSH,
1270
+     * where "packets" are padded with random bytes before being encrypted.  Unpad these packets and you risk stripping
1271
+     * away characters that shouldn't be stripped away. (SSH knows how many bytes are added because the length is
1272
+     * transmitted separately)
1273
+     *
1274
+     * @see Crypt_Rijndael::disablePadding()
1275
+     * @access public
1276
+     */
1277
+    function enablePadding()
1278
+    {
1279
+        $this->padding = true;
1280
+    }
1281
+
1282
+    /**
1283
+     * Do not pad packets.
1284
+     *
1285
+     * @see Crypt_Rijndael::enablePadding()
1286
+     * @access public
1287
+     */
1288
+    function disablePadding()
1289
+    {
1290
+        $this->padding = false;
1291
+    }
1292
+
1293
+    /**
1294
+     * Pads a string
1295
+     *
1296
+     * Pads a string using the RSA PKCS padding standards so that its length is a multiple of the blocksize.
1297
+     * $block_size - (strlen($text) % $block_size) bytes are added, each of which is equal to 
1298
+     * chr($block_size - (strlen($text) % $block_size)
1299
+     *
1300
+     * If padding is disabled and $text is not a multiple of the blocksize, the string will be padded regardless
1301
+     * and padding will, hence forth, be enabled.
1302
+     *
1303
+     * @see Crypt_Rijndael::_unpad()
1304
+     * @access private
1305
+     */
1306
+    function _pad($text)
1307
+    {
1308
+        $length = strlen($text);
1309
+
1310
+        if (!$this->padding) {
1311
+            if ($length % $this->block_size == 0) {
1312
+                return $text;
1313
+            } else {
1314
+                user_error("The plaintext's length ($length) is not a multiple of the block size ({$this->block_size})", E_USER_NOTICE);
1315
+                $this->padding = true;
1316
+            }
1317
+        }
1318
+
1319
+        $pad = $this->block_size - ($length % $this->block_size);
1320
+
1321
+        return str_pad($text, $length + $pad, chr($pad));
1322
+    }
1323
+
1324
+    /**
1325
+     * Unpads a string.
1326
+     *
1327
+     * If padding is enabled and the reported padding length is invalid the encryption key will be assumed to be wrong
1328
+     * and false will be returned.
1329
+     *
1330
+     * @see Crypt_Rijndael::_pad()
1331
+     * @access private
1332
+     */
1333
+    function _unpad($text)
1334
+    {
1335
+        if (!$this->padding) {
1336
+            return $text;
1337
+        }
1338
+
1339
+        $length = ord($text[strlen($text) - 1]);
1340
+
1341
+        if (!$length || $length > $this->block_size) {
1342
+            return false;
1343
+        }
1344
+
1345
+        return substr($text, 0, -$length);
1346
+    }
1347
+
1348
+    /**
1349
+     * Treat consecutive "packets" as if they are a continuous buffer.
1350
+     *
1351
+     * Say you have a 32-byte plaintext $plaintext.  Using the default behavior, the two following code snippets
1352
+     * will yield different outputs:
1353
+     *
1354
+     * <code>
1355
+     *    echo $rijndael->encrypt(substr($plaintext,  0, 16));
1356
+     *    echo $rijndael->encrypt(substr($plaintext, 16, 16));
1357
+     * </code>
1358
+     * <code>
1359
+     *    echo $rijndael->encrypt($plaintext);
1360
+     * </code>
1361
+     *
1362
+     * The solution is to enable the continuous buffer.  Although this will resolve the above discrepancy, it creates
1363
+     * another, as demonstrated with the following:
1364
+     *
1365
+     * <code>
1366
+     *    $rijndael->encrypt(substr($plaintext, 0, 16));
1367
+     *    echo $rijndael->decrypt($des->encrypt(substr($plaintext, 16, 16)));
1368
+     * </code>
1369
+     * <code>
1370
+     *    echo $rijndael->decrypt($des->encrypt(substr($plaintext, 16, 16)));
1371
+     * </code>
1372
+     *
1373
+     * With the continuous buffer disabled, these would yield the same output.  With it enabled, they yield different
1374
+     * outputs.  The reason is due to the fact that the initialization vector's change after every encryption /
1375
+     * decryption round when the continuous buffer is enabled.  When it's disabled, they remain constant.
1376
+     *
1377
+     * Put another way, when the continuous buffer is enabled, the state of the Crypt_Rijndael() object changes after each
1378
+     * encryption / decryption round, whereas otherwise, it'd remain constant.  For this reason, it's recommended that
1379
+     * continuous buffers not be used.  They do offer better security and are, in fact, sometimes required (SSH uses them),
1380
+     * however, they are also less intuitive and more likely to cause you problems.
1381
+     *
1382
+     * @see Crypt_Rijndael::disableContinuousBuffer()
1383
+     * @access public
1384
+     */
1385
+    function enableContinuousBuffer()
1386
+    {
1387
+        $this->continuousBuffer = true;
1388
+    }
1389
+
1390
+    /**
1391
+     * Treat consecutive packets as if they are a discontinuous buffer.
1392
+     *
1393
+     * The default behavior.
1394
+     *
1395
+     * @see Crypt_Rijndael::enableContinuousBuffer()
1396
+     * @access public
1397
+     */
1398
+    function disableContinuousBuffer()
1399
+    {
1400
+        $this->continuousBuffer = false;
1401
+        $this->encryptIV = $this->iv;
1402
+        $this->decryptIV = $this->iv;
1403
+    }
1404
+
1405
+    /**
1406
+     * String Shift
1407
+     *
1408
+     * Inspired by array_shift
1409
+     *
1410
+     * @param String $string
1411
+     * @param optional Integer $index
1412
+     * @return String
1413
+     * @access private
1414
+     */
1415
+    function _string_shift(&$string, $index = 1)
1416
+    {
1417
+        $substr = substr($string, 0, $index);
1418
+        $string = substr($string, $index);
1419
+        return $substr;
1420
+    }
1421
+}
1422
+
1423
+// vim: ts=4:sw=4:et:
1424
+// vim6: fdl=1:
0 1425
\ No newline at end of file
... ...
@@ -0,0 +1,1009 @@
1
+<?php
2
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
3
+
4
+/**
5
+ * Pure-PHP implementation of Triple DES.
6
+ *
7
+ * Uses mcrypt, if available, and an internal implementation, otherwise.  Operates in the EDE3 mode (encrypt-decrypt-encrypt).
8
+ *
9
+ * PHP versions 4 and 5
10
+ *
11
+ * Here's a short example of how to use this library:
12
+ * <code>
13
+ * <?php
14
+ *    include('Crypt/TripleDES.php');
15
+ *
16
+ *    $des = new Crypt_TripleDES();
17
+ *
18
+ *    $des->setKey('abcdefghijklmnopqrstuvwx');
19
+ *
20
+ *    $size = 10 * 1024;
21
+ *    $plaintext = '';
22
+ *    for ($i = 0; $i < $size; $i++) {
23
+ *        $plaintext.= 'a';
24
+ *    }
25
+ *
26
+ *    echo $des->decrypt($des->encrypt($plaintext));
27
+ * ?>
28
+ * </code>
29
+ *
30
+ * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy
31
+ * of this software and associated documentation files (the "Software"), to deal
32
+ * in the Software without restriction, including without limitation the rights
33
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
34
+ * copies of the Software, and to permit persons to whom the Software is
35
+ * furnished to do so, subject to the following conditions:
36
+ * 
37
+ * The above copyright notice and this permission notice shall be included in
38
+ * all copies or substantial portions of the Software.
39
+ * 
40
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
41
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
42
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
43
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
44
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
45
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
46
+ * THE SOFTWARE.
47
+ *
48
+ * @category   Crypt
49
+ * @package    Crypt_TripleDES
50
+ * @author     Jim Wigginton <[email protected]>
51
+ * @copyright  MMVII Jim Wigginton
52
+ * @license    http://www.opensource.org/licenses/mit-license.html  MIT License
53
+ * @version    $Id: TripleDES.php,v 1.13 2010/02/26 03:40:25 terrafrost Exp $
54
+ * @link       http://phpseclib.sourceforge.net
55
+ */
56
+
57
+/**
58
+ * Include Crypt_DES
59
+ */
60
+require_once('DES.php');
61
+
62
+/**
63
+ * Encrypt / decrypt using inner chaining
64
+ *
65
+ * Inner chaining is used by SSH-1 and is generally considered to be less secure then outer chaining (CRYPT_DES_MODE_CBC3).
66
+ */
67
+define('CRYPT_DES_MODE_3CBC', -2);
68
+
69
+/**
70
+ * Encrypt / decrypt using outer chaining
71
+ *
72
+ * Outer chaining is used by SSH-2 and when the mode is set to CRYPT_DES_MODE_CBC.
73
+ */
74
+define('CRYPT_DES_MODE_CBC3', CRYPT_DES_MODE_CBC);
75
+
76
+/**
77
+ * Pure-PHP implementation of Triple DES.
78
+ *
79
+ * @author  Jim Wigginton <[email protected]>
80
+ * @version 0.1.0
81
+ * @access  public
82
+ * @package Crypt_TerraDES
83
+ */
84
+class Crypt_TripleDES {
85
+    /**
86
+     * The Three Keys
87
+     *
88
+     * @see Crypt_TripleDES::setKey()
89
+     * @var String
90
+     * @access private
91
+     */
92
+    var $key = "\0\0\0\0\0\0\0\0";
93
+
94
+    /**
95
+     * The Encryption Mode
96
+     *
97
+     * @see Crypt_TripleDES::Crypt_TripleDES()
98
+     * @var Integer
99
+     * @access private
100
+     */
101
+    var $mode = CRYPT_DES_MODE_CBC;
102
+
103
+    /**
104
+     * Continuous Buffer status
105
+     *
106
+     * @see Crypt_TripleDES::enableContinuousBuffer()
107
+     * @var Boolean
108
+     * @access private
109
+     */
110
+    var $continuousBuffer = false;
111
+
112
+    /**
113
+     * Padding status
114
+     *
115
+     * @see Crypt_TripleDES::enablePadding()
116
+     * @var Boolean
117
+     * @access private
118
+     */
119
+    var $padding = true;
120
+
121
+    /**
122
+     * The Initialization Vector
123
+     *
124
+     * @see Crypt_TripleDES::setIV()
125
+     * @var String
126
+     * @access private
127
+     */
128
+    var $iv = "\0\0\0\0\0\0\0\0";
129
+
130
+    /**
131
+     * A "sliding" Initialization Vector
132
+     *
133
+     * @see Crypt_TripleDES::enableContinuousBuffer()
134
+     * @var String
135
+     * @access private
136
+     */
137
+    var $encryptIV = "\0\0\0\0\0\0\0\0";
138
+
139
+    /**
140
+     * A "sliding" Initialization Vector
141
+     *
142
+     * @see Crypt_TripleDES::enableContinuousBuffer()
143
+     * @var String
144
+     * @access private
145
+     */
146
+    var $decryptIV = "\0\0\0\0\0\0\0\0";
147
+
148
+    /**
149
+     * The Crypt_DES objects
150
+     *
151
+     * @var Array
152
+     * @access private
153
+     */
154
+    var $des;
155
+
156
+    /**
157
+     * mcrypt resource for encryption
158
+     *
159
+     * The mcrypt resource can be recreated every time something needs to be created or it can be created just once.
160
+     * Since mcrypt operates in continuous mode, by default, it'll need to be recreated when in non-continuous mode.
161
+     *
162
+     * @see Crypt_TripleDES::encrypt()
163
+     * @var String
164
+     * @access private
165
+     */
166
+    var $enmcrypt;
167
+
168
+    /**
169
+     * mcrypt resource for decryption
170
+     *
171
+     * The mcrypt resource can be recreated every time something needs to be created or it can be created just once.
172
+     * Since mcrypt operates in continuous mode, by default, it'll need to be recreated when in non-continuous mode.
173
+     *
174
+     * @see Crypt_TripleDES::decrypt()
175
+     * @var String
176
+     * @access private
177
+     */
178
+    var $demcrypt;
179
+
180
+    /**
181
+     * Does the enmcrypt resource need to be (re)initialized?
182
+     *
183
+     * @see Crypt_TripleDES::setKey()
184
+     * @see Crypt_TripleDES::setIV()
185
+     * @var Boolean
186
+     * @access private
187
+     */
188
+    var $enchanged = true;
189
+
190
+    /**
191
+     * Does the demcrypt resource need to be (re)initialized?
192
+     *
193
+     * @see Crypt_TripleDES::setKey()
194
+     * @see Crypt_TripleDES::setIV()
195
+     * @var Boolean
196
+     * @access private
197
+     */
198
+    var $dechanged = true;
199
+
200
+    /**
201
+     * Is the mode one that is paddable?
202
+     *
203
+     * @see Crypt_TripleDES::Crypt_TripleDES()
204
+     * @var Boolean
205
+     * @access private
206
+     */
207
+    var $paddable = false;
208
+
209
+    /**
210
+     * Encryption buffer for CTR, OFB and CFB modes
211
+     *
212
+     * @see Crypt_TripleDES::encrypt()
213
+     * @var String
214
+     * @access private
215
+     */
216
+    var $enbuffer = '';
217
+
218
+    /**
219
+     * Decryption buffer for CTR, OFB and CFB modes
220
+     *
221
+     * @see Crypt_TripleDES::decrypt()
222
+     * @var String
223
+     * @access private
224
+     */
225
+    var $debuffer = '';
226
+
227
+    /**
228
+     * mcrypt resource for CFB mode
229
+     *
230
+     * @see Crypt_TripleDES::encrypt()
231
+     * @see Crypt_TripleDES::decrypt()
232
+     * @var String
233
+     * @access private
234
+     */
235
+    var $ecb;
236
+
237
+    /**
238
+     * Default Constructor.
239
+     *
240
+     * Determines whether or not the mcrypt extension should be used.  $mode should only, at present, be
241
+     * CRYPT_DES_MODE_ECB or CRYPT_DES_MODE_CBC.  If not explictly set, CRYPT_DES_MODE_CBC will be used.
242
+     *
243
+     * @param optional Integer $mode
244
+     * @return Crypt_TripleDES
245
+     * @access public
246
+     */
247
+    function Crypt_TripleDES($mode = CRYPT_DES_MODE_CBC)
248
+    {
249
+        if ( !defined('CRYPT_DES_MODE') ) {
250
+            switch (true) {
251
+                case extension_loaded('mcrypt'):
252
+                    // i'd check to see if des was supported, by doing in_array('des', mcrypt_list_algorithms('')),
253
+                    // but since that can be changed after the object has been created, there doesn't seem to be
254
+                    // a lot of point...
255
+                    define('CRYPT_DES_MODE', CRYPT_DES_MODE_MCRYPT);
256
+                    break;
257
+                default:
258
+                    define('CRYPT_DES_MODE', CRYPT_DES_MODE_INTERNAL);
259
+            }
260
+        }
261
+
262
+        if ( $mode == CRYPT_DES_MODE_3CBC ) {
263
+            $this->mode = CRYPT_DES_MODE_3CBC;
264
+            $this->des = array(
265
+                new Crypt_DES(CRYPT_DES_MODE_CBC),
266
+                new Crypt_DES(CRYPT_DES_MODE_CBC),
267
+                new Crypt_DES(CRYPT_DES_MODE_CBC)
268
+            );
269
+
270
+            // we're going to be doing the padding, ourselves, so disable it in the Crypt_DES objects
271
+            $this->des[0]->disablePadding();
272
+            $this->des[1]->disablePadding();
273
+            $this->des[2]->disablePadding();
274
+
275
+            return;
276
+        }
277
+
278
+        switch ( CRYPT_DES_MODE ) {
279
+            case CRYPT_DES_MODE_MCRYPT:
280
+                switch ($mode) {
281
+                    case CRYPT_DES_MODE_ECB:
282
+                        $this->paddable = true;
283
+                        $this->mode = MCRYPT_MODE_ECB;
284
+                        break;
285
+                    case CRYPT_DES_MODE_CTR:
286
+                        $this->mode = 'ctr';
287
+                        break;
288
+                    case CRYPT_DES_MODE_CFB:
289
+                        $this->mode = 'ncfb';
290
+                        break;
291
+                    case CRYPT_DES_MODE_OFB:
292
+                        $this->mode = MCRYPT_MODE_NOFB;
293
+                        break;
294
+                    case CRYPT_DES_MODE_CBC:
295
+                    default:
296
+                        $this->paddable = true;
297
+                        $this->mode = MCRYPT_MODE_CBC;
298
+                }
299
+
300
+                break;
301
+            default:
302
+                $this->des = array(
303
+                    new Crypt_DES(CRYPT_DES_MODE_ECB),
304
+                    new Crypt_DES(CRYPT_DES_MODE_ECB),
305
+                    new Crypt_DES(CRYPT_DES_MODE_ECB)
306
+                );
307
+ 
308
+                // we're going to be doing the padding, ourselves, so disable it in the Crypt_DES objects
309
+                $this->des[0]->disablePadding();
310
+                $this->des[1]->disablePadding();
311
+                $this->des[2]->disablePadding();
312
+
313
+                switch ($mode) {
314
+                    case CRYPT_DES_MODE_ECB:
315
+                    case CRYPT_DES_MODE_CBC:
316
+                        $this->paddable = true;
317
+                        $this->mode = $mode;
318
+                        break;
319
+                    case CRYPT_DES_MODE_CTR:
320
+                    case CRYPT_DES_MODE_CFB:
321
+                    case CRYPT_DES_MODE_OFB:
322
+                        $this->mode = $mode;
323
+                        break;
324
+                    default:
325
+                        $this->paddable = true;
326
+                        $this->mode = CRYPT_DES_MODE_CBC;
327
+                }
328
+        }
329
+    }
330
+
331
+    /**
332
+     * Sets the key.
333
+     *
334
+     * Keys can be of any length.  Triple DES, itself, can use 128-bit (eg. strlen($key) == 16) or
335
+     * 192-bit (eg. strlen($key) == 24) keys.  This function pads and truncates $key as appropriate.
336
+     *
337
+     * DES also requires that every eighth bit be a parity bit, however, we'll ignore that.
338
+     *
339
+     * If the key is not explicitly set, it'll be assumed to be all zero's.
340
+     *
341
+     * @access public
342
+     * @param String $key
343
+     */
344
+    function setKey($key)
345
+    {
346
+        $length = strlen($key);
347
+        if ($length > 8) {
348
+            $key = str_pad($key, 24, chr(0));
349
+            // if $key is between 64 and 128-bits, use the first 64-bits as the last, per this:
350
+            // http://php.net/function.mcrypt-encrypt#47973
351
+            //$key = $length <= 16 ? substr_replace($key, substr($key, 0, 8), 16) : substr($key, 0, 24);
352
+        } else {
353
+            $key = str_pad($key, 8, chr(0));
354
+        }
355
+        $this->key = $key;
356
+        switch (true) {
357
+            case CRYPT_DES_MODE == CRYPT_DES_MODE_INTERNAL:
358
+            case $this->mode == CRYPT_DES_MODE_3CBC:
359
+                $this->des[0]->setKey(substr($key,  0, 8));
360
+                $this->des[1]->setKey(substr($key,  8, 8));
361
+                $this->des[2]->setKey(substr($key, 16, 8));
362
+        }
363
+        $this->enchanged = $this->dechanged = true;
364
+    }
365
+
366
+    /**
367
+     * Sets the initialization vector. (optional)
368
+     *
369
+     * SetIV is not required when CRYPT_DES_MODE_ECB is being used.  If not explictly set, it'll be assumed
370
+     * to be all zero's.
371
+     *
372
+     * @access public
373
+     * @param String $iv
374
+     */
375
+    function setIV($iv)
376
+    {
377
+        $this->encryptIV = $this->decryptIV = $this->iv = str_pad(substr($iv, 0, 8), 8, chr(0));
378
+        if ($this->mode == CRYPT_DES_MODE_3CBC) {
379
+            $this->des[0]->setIV($iv);
380
+            $this->des[1]->setIV($iv);
381
+            $this->des[2]->setIV($iv);
382
+        }
383
+        $this->enchanged = $this->dechanged = true;
384
+    }
385
+
386
+    /**
387
+     * Generate CTR XOR encryption key
388
+     *
389
+     * Encrypt the output of this and XOR it against the ciphertext / plaintext to get the
390
+     * plaintext / ciphertext in CTR mode.
391
+     *
392
+     * @see Crypt_TripleDES::decrypt()
393
+     * @see Crypt_TripleDES::encrypt()
394
+     * @access private
395
+     * @param Integer $length
396
+     * @param String $iv
397
+     */
398
+    function _generate_xor($length, &$iv)
399
+    {
400
+        $xor = '';
401
+        $num_blocks = ($length + 7) >> 3;
402
+        for ($i = 0; $i < $num_blocks; $i++) {
403
+            $xor.= $iv;
404
+            for ($j = 4; $j <= 8; $j+=4) {
405
+                $temp = substr($iv, -$j, 4);
406
+                switch ($temp) {
407
+                    case "\xFF\xFF\xFF\xFF":
408
+                        $iv = substr_replace($iv, "\x00\x00\x00\x00", -$j, 4);
409
+                        break;
410
+                    case "\x7F\xFF\xFF\xFF":
411
+                        $iv = substr_replace($iv, "\x80\x00\x00\x00", -$j, 4);
412
+                        break 2;
413
+                    default:
414
+                        extract(unpack('Ncount', $temp));
415
+                        $iv = substr_replace($iv, pack('N', $count + 1), -$j, 4);
416
+                        break 2;
417
+                }
418
+            }
419
+        }
420
+
421
+        return $xor;
422
+    }
423
+
424
+    /**
425
+     * Encrypts a message.
426
+     *
427
+     * @access public
428
+     * @param String $plaintext
429
+     */
430
+    function encrypt($plaintext)
431
+    {
432
+        if ($this->paddable) {
433
+            $plaintext = $this->_pad($plaintext);
434
+        }
435
+
436
+        // if the key is smaller then 8, do what we'd normally do
437
+        if ($this->mode == CRYPT_DES_MODE_3CBC && strlen($this->key) > 8) {
438
+            $ciphertext = $this->des[2]->encrypt($this->des[1]->decrypt($this->des[0]->encrypt($plaintext)));
439
+
440
+            return $ciphertext;
441
+        }
442
+
443
+        if ( CRYPT_DES_MODE == CRYPT_DES_MODE_MCRYPT ) {
444
+            if ($this->enchanged) {
445
+                if (!isset($this->enmcrypt)) {
446
+                    $this->enmcrypt = mcrypt_module_open(MCRYPT_3DES, '', $this->mode, '');
447
+                }
448
+                mcrypt_generic_init($this->enmcrypt, $this->key, $this->encryptIV);
449
+                if ($this->mode != 'ncfb') {
450
+                    $this->enchanged = false;
451
+                }
452
+            }
453
+
454
+            if ($this->mode != 'ncfb') {
455
+                $ciphertext = mcrypt_generic($this->enmcrypt, $plaintext);
456
+            } else {
457
+                if ($this->enchanged) {
458
+                    $this->ecb = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_ECB, '');
459
+                    mcrypt_generic_init($this->ecb, $this->key, "\0\0\0\0\0\0\0\0");
460
+                    $this->enchanged = false;
461
+                }
462
+
463
+                if (strlen($this->enbuffer)) {
464
+                    $ciphertext = $plaintext ^ substr($this->encryptIV, strlen($this->enbuffer));
465
+                    $this->enbuffer.= $ciphertext;
466
+                    if (strlen($this->enbuffer) == 8) {
467
+                        $this->encryptIV = $this->enbuffer;
468
+                        $this->enbuffer = '';
469
+                        mcrypt_generic_init($this->enmcrypt, $this->key, $this->encryptIV);
470
+                    }
471
+                    $plaintext = substr($plaintext, strlen($ciphertext));
472
+                } else {
473
+                    $ciphertext = '';
474
+                }
475
+
476
+                $last_pos = strlen($plaintext) & 0xFFFFFFF8;
477
+                $ciphertext.= $last_pos ? mcrypt_generic($this->enmcrypt, substr($plaintext, 0, $last_pos)) : '';
478
+
479
+                if (strlen($plaintext) & 0x7) {
480
+                    if (strlen($ciphertext)) {
481
+                        $this->encryptIV = substr($ciphertext, -8);
482
+                    }
483
+                    $this->encryptIV = mcrypt_generic($this->ecb, $this->encryptIV);
484
+                    $this->enbuffer = substr($plaintext, $last_pos) ^ $this->encryptIV;
485
+                    $ciphertext.= $this->enbuffer;
486
+                }
487
+            }
488
+
489
+            if (!$this->continuousBuffer) {
490
+                mcrypt_generic_init($this->enmcrypt, $this->key, $this->encryptIV);
491
+            }
492
+
493
+            return $ciphertext;
494
+        }
495
+
496
+        if (strlen($this->key) <= 8) {
497
+            $this->des[0]->mode = $this->mode;
498
+
499
+            return $this->des[0]->encrypt($plaintext);
500
+        }
501
+
502
+        $des = $this->des;
503
+
504
+        $buffer = &$this->enbuffer;
505
+        $continuousBuffer = $this->continuousBuffer;
506
+        $ciphertext = '';
507
+        switch ($this->mode) {
508
+            case CRYPT_DES_MODE_ECB:
509
+                for ($i = 0; $i < strlen($plaintext); $i+=8) {
510
+                    $block = substr($plaintext, $i, 8);
511
+                    // all of these _processBlock calls could, in theory, be put in a function - say Crypt_TripleDES::_ede_encrypt() or something.
512
+                    // only problem with that: it would slow encryption and decryption down.  $this->des would have to be called every time that
513
+                    // function is called, instead of once for the whole string of text that's being encrypted, which would, in turn, make 
514
+                    // encryption and decryption take more time, per this:
515
+                    //
516
+                    // http://blog.libssh2.org/index.php?/archives/21-Compiled-Variables.html
517
+                    $block = $des[0]->_processBlock($block, CRYPT_DES_ENCRYPT);
518
+                    $block = $des[1]->_processBlock($block, CRYPT_DES_DECRYPT);
519
+                    $block = $des[2]->_processBlock($block, CRYPT_DES_ENCRYPT);
520
+                    $ciphertext.= $block;
521
+                }
522
+                break;
523
+            case CRYPT_DES_MODE_CBC:
524
+                $xor = $this->encryptIV;
525
+                for ($i = 0; $i < strlen($plaintext); $i+=8) {
526
+                    $block = substr($plaintext, $i, 8) ^ $xor;
527
+                    $block = $des[0]->_processBlock($block, CRYPT_DES_ENCRYPT);
528
+                    $block = $des[1]->_processBlock($block, CRYPT_DES_DECRYPT);
529
+                    $block = $des[2]->_processBlock($block, CRYPT_DES_ENCRYPT);
530
+                    $xor = $block;
531
+                    $ciphertext.= $block;
532
+                }
533
+                if ($this->continuousBuffer) {
534
+                    $this->encryptIV = $xor;
535
+                }
536
+                break;
537
+            case CRYPT_DES_MODE_CTR:
538
+                $xor = $this->encryptIV;
539
+                if (strlen($buffer)) {
540
+                    for ($i = 0; $i < strlen($plaintext); $i+=8) {
541
+                        $block = substr($plaintext, $i, 8);
542
+                        $key = $this->_generate_xor(8, $xor);
543
+                        $key = $des[0]->_processBlock($key, CRYPT_DES_ENCRYPT);
544
+                        $key = $des[1]->_processBlock($key, CRYPT_DES_DECRYPT);
545
+                        $key = $des[2]->_processBlock($key, CRYPT_DES_ENCRYPT);
546
+                        $buffer.= $key;
547
+                        $key = $this->_string_shift($buffer, 8);
548
+                        $ciphertext.= $block ^ $key;
549
+                    }
550
+                } else {
551
+                    for ($i = 0; $i < strlen($plaintext); $i+=8) {
552
+                        $block = substr($plaintext, $i, 8);
553
+                        $key = $this->_generate_xor(8, $xor);
554
+                        $key = $des[0]->_processBlock($key, CRYPT_DES_ENCRYPT);
555
+                        $key = $des[1]->_processBlock($key, CRYPT_DES_DECRYPT);
556
+                        $key = $des[2]->_processBlock($key, CRYPT_DES_ENCRYPT);
557
+                        $ciphertext.= $block ^ $key;
558
+                    }
559
+                }
560
+                if ($this->continuousBuffer) {
561
+                    $this->encryptIV = $xor;
562
+                    if ($start = strlen($plaintext) & 7) {
563
+                        $buffer = substr($key, $start) . $buffer;
564
+                    }
565
+                }
566
+                break;
567
+            case CRYPT_DES_MODE_CFB:
568
+                if (!empty($buffer['xor'])) {
569
+                    $ciphertext = $plaintext ^ $buffer['xor'];
570
+                    $iv = $buffer['encrypted'] . $ciphertext;
571
+                    $start = strlen($ciphertext);
572
+                    $buffer['encrypted'].= $ciphertext;
573
+                    $buffer['xor'] = substr($buffer['xor'], strlen($ciphertext));
574
+                } else {
575
+                    $ciphertext = '';
576
+                    $iv = $this->encryptIV;
577
+                    $start = 0;
578
+                }
579
+
580
+                for ($i = $start; $i < strlen($plaintext); $i+=8) {
581
+                    $block = substr($plaintext, $i, 8);
582
+                    $iv = $des[0]->_processBlock($iv, CRYPT_DES_ENCRYPT);
583
+                    $iv = $des[1]->_processBlock($iv, CRYPT_DES_DECRYPT);
584
+                    $xor= $des[2]->_processBlock($iv, CRYPT_DES_ENCRYPT);
585
+
586
+                    $iv = $block ^ $xor;
587
+                    if ($continuousBuffer && strlen($iv) != 8) {
588
+                        $buffer = array(
589
+                            'encrypted' => $iv,
590
+                            'xor' => substr($xor, strlen($iv))
591
+                        );
592
+                    }
593
+                    $ciphertext.= $iv;
594
+                }
595
+
596
+                if ($this->continuousBuffer) {
597
+                    $this->encryptIV = $iv;
598
+                }
599
+                break;
600
+            case CRYPT_DES_MODE_OFB:
601
+                $xor = $this->encryptIV;
602
+                if (strlen($buffer)) {
603
+                    for ($i = 0; $i < strlen($plaintext); $i+=8) {
604
+                        $xor = $des[0]->_processBlock($xor, CRYPT_DES_ENCRYPT);
605
+                        $xor = $des[1]->_processBlock($xor, CRYPT_DES_DECRYPT);
606
+                        $xor = $des[2]->_processBlock($xor, CRYPT_DES_ENCRYPT);
607
+                        $buffer.= $xor;
608
+                        $key = $this->_string_shift($buffer, 8);
609
+                        $ciphertext.= substr($plaintext, $i, 8) ^ $key;
610
+                    }
611
+                } else {
612
+                    for ($i = 0; $i < strlen($plaintext); $i+=8) {
613
+                        $xor = $des[0]->_processBlock($xor, CRYPT_DES_ENCRYPT);
614
+                        $xor = $des[1]->_processBlock($xor, CRYPT_DES_DECRYPT);
615
+                        $xor = $des[2]->_processBlock($xor, CRYPT_DES_ENCRYPT);
616
+                        $ciphertext.= substr($plaintext, $i, 8) ^ $xor;
617
+                    }
618
+                    $key = $xor;
619
+                }
620
+                if ($this->continuousBuffer) {
621
+                    $this->encryptIV = $xor;
622
+                    if ($start = strlen($plaintext) & 7) {
623
+                         $buffer = substr($key, $start) . $buffer;
624
+                    }
625
+                }
626
+        }
627
+
628
+        return $ciphertext;
629
+    }
630
+
631
+    /**
632
+     * Decrypts a message.
633
+     *
634
+     * @access public
635
+     * @param String $ciphertext
636
+     */
637
+    function decrypt($ciphertext)
638
+    {
639
+        if ($this->mode == CRYPT_DES_MODE_3CBC && strlen($this->key) > 8) {
640
+            $plaintext = $this->des[0]->decrypt($this->des[1]->encrypt($this->des[2]->decrypt($ciphertext)));
641
+
642
+            return $this->_unpad($plaintext);
643
+        }
644
+
645
+        if ($this->paddable) {
646
+            // we pad with chr(0) since that's what mcrypt_generic does.  to quote from http://php.net/function.mcrypt-generic :
647
+            // "The data is padded with "\0" to make sure the length of the data is n * blocksize."
648
+            $ciphertext = str_pad($ciphertext, (strlen($ciphertext) + 7) & 0xFFFFFFF8, chr(0));
649
+        }
650
+
651
+        if ( CRYPT_DES_MODE == CRYPT_DES_MODE_MCRYPT ) {
652
+            if ($this->dechanged) {
653
+                if (!isset($this->demcrypt)) {
654
+                    $this->demcrypt = mcrypt_module_open(MCRYPT_3DES, '', $this->mode, '');
655
+                }
656
+                mcrypt_generic_init($this->demcrypt, $this->key, $this->decryptIV);
657
+                if ($this->mode != 'ncfb') {
658
+                    $this->dechanged = false;
659
+                }
660
+            }
661
+
662
+            if ($this->mode != 'ncfb') {
663
+                $plaintext = mdecrypt_generic($this->demcrypt, $ciphertext);
664
+            } else {
665
+                if ($this->dechanged) {
666
+                    $this->ecb = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_ECB, '');
667
+                    mcrypt_generic_init($this->ecb, $this->key, "\0\0\0\0\0\0\0\0");
668
+                    $this->dechanged = false;
669
+                }
670
+
671
+                if (strlen($this->debuffer)) {
672
+                    $plaintext = $ciphertext ^ substr($this->decryptIV, strlen($this->debuffer));
673
+
674
+                    $this->debuffer.= substr($ciphertext, 0, strlen($plaintext));
675
+                    if (strlen($this->debuffer) == 8) {
676
+                        $this->decryptIV = $this->debuffer;
677
+                        $this->debuffer = '';
678
+                        mcrypt_generic_init($this->demcrypt, $this->key, $this->decryptIV);
679
+                    }
680
+                    $ciphertext = substr($ciphertext, strlen($plaintext));
681
+                } else {
682
+                    $plaintext = '';
683
+                }
684
+
685
+                $last_pos = strlen($ciphertext) & 0xFFFFFFF8;
686
+                $plaintext.= $last_pos ? mdecrypt_generic($this->demcrypt, substr($ciphertext, 0, $last_pos)) : '';
687
+
688
+                if (strlen($ciphertext) & 0x7) {
689
+                    if (strlen($plaintext)) {
690
+                        $this->decryptIV = substr($ciphertext, $last_pos - 8, 8);
691
+                    }
692
+                    $this->decryptIV = mcrypt_generic($this->ecb, $this->decryptIV);
693
+                    $this->debuffer = substr($ciphertext, $last_pos);
694
+                    $plaintext.= $this->debuffer ^ $this->decryptIV;
695
+                }
696
+
697
+                return $plaintext;
698
+            }
699
+
700
+            if (!$this->continuousBuffer) {
701
+                mcrypt_generic_init($this->demcrypt, $this->key, $this->decryptIV);
702
+            }
703
+
704
+            return $this->paddable ? $this->_unpad($plaintext) : $plaintext;
705
+        }
706
+
707
+        if (strlen($this->key) <= 8) {
708
+            $this->des[0]->mode = $this->mode;
709
+            $plaintext = $this->des[0]->decrypt($ciphertext);
710
+            return $this->paddable ? $this->_unpad($plaintext) : $plaintext;
711
+        }
712
+
713
+        $des = $this->des;
714
+
715
+        $buffer = &$this->enbuffer;
716
+        $continuousBuffer = $this->continuousBuffer;
717
+        $plaintext = '';
718
+        switch ($this->mode) {
719
+            case CRYPT_DES_MODE_ECB:
720
+                for ($i = 0; $i < strlen($ciphertext); $i+=8) {
721
+                    $block = substr($ciphertext, $i, 8);
722
+                    $block = $des[2]->_processBlock($block, CRYPT_DES_DECRYPT);
723
+                    $block = $des[1]->_processBlock($block, CRYPT_DES_ENCRYPT);
724
+                    $block = $des[0]->_processBlock($block, CRYPT_DES_DECRYPT);
725
+                    $plaintext.= $block;
726
+                }
727
+                break;
728
+            case CRYPT_DES_MODE_CBC:
729
+                $xor = $this->decryptIV;
730
+                for ($i = 0; $i < strlen($ciphertext); $i+=8) {
731
+                    $orig = $block = substr($ciphertext, $i, 8);
732
+                    $block = $des[2]->_processBlock($block, CRYPT_DES_DECRYPT);
733
+                    $block = $des[1]->_processBlock($block, CRYPT_DES_ENCRYPT);
734
+                    $block = $des[0]->_processBlock($block, CRYPT_DES_DECRYPT);
735
+                    $plaintext.= $block ^ $xor;
736
+                    $xor = $orig;
737
+                }
738
+                if ($this->continuousBuffer) {
739
+                    $this->decryptIV = $xor;
740
+                }
741
+                break;
742
+            case CRYPT_DES_MODE_CTR:
743
+                $xor = $this->decryptIV;
744
+                if (strlen($buffer)) {
745
+                    for ($i = 0; $i < strlen($ciphertext); $i+=8) {
746
+                        $block = substr($ciphertext, $i, 8);
747
+                        $key = $this->_generate_xor(8, $xor);
748
+                        $key = $des[0]->_processBlock($key, CRYPT_DES_ENCRYPT);
749
+                        $key = $des[1]->_processBlock($key, CRYPT_DES_DECRYPT);
750
+                        $key = $des[2]->_processBlock($key, CRYPT_DES_ENCRYPT);
751
+                        $buffer.= $key;
752
+                        $key = $this->_string_shift($buffer, 8);
753
+                        $plaintext.= $block ^ $key;
754
+                    }
755
+                } else {
756
+                    for ($i = 0; $i < strlen($ciphertext); $i+=8) {
757
+                        $block = substr($ciphertext, $i, 8);
758
+                        $key = $this->_generate_xor(8, $xor);
759
+                        $key = $des[0]->_processBlock($key, CRYPT_DES_ENCRYPT);
760
+                        $key = $des[1]->_processBlock($key, CRYPT_DES_DECRYPT);
761
+                        $key = $des[2]->_processBlock($key, CRYPT_DES_ENCRYPT);
762
+                        $plaintext.= $block ^ $key;
763
+                    }
764
+                }
765
+                if ($this->continuousBuffer) {
766
+                    $this->decryptIV = $xor;
767
+                    if ($start = strlen($plaintext) & 7) {
768
+                        $buffer = substr($key, $start) . $buffer;
769
+                    }
770
+                }
771
+                break;
772
+            case CRYPT_DES_MODE_CFB:
773
+                if (!empty($buffer['ciphertext'])) {
774
+                    $plaintext = $ciphertext ^ substr($this->decryptIV, strlen($buffer['ciphertext']));
775
+                    $buffer['ciphertext'].= substr($ciphertext, 0, strlen($plaintext));
776
+                    if (strlen($buffer['ciphertext']) == 8) {
777
+                        $xor = $des[0]->_processBlock($buffer['ciphertext'], CRYPT_DES_ENCRYPT);
778
+                        $xor = $des[1]->_processBlock($xor, CRYPT_DES_DECRYPT);
779
+                        $xor = $des[2]->_processBlock($xor, CRYPT_DES_ENCRYPT);
780
+                        $buffer['ciphertext'] = '';
781
+                    }
782
+                    $start = strlen($plaintext);
783
+                    $block = $this->decryptIV;
784
+                } else {
785
+                    $plaintext = '';
786
+                    $xor = $des[0]->_processBlock($this->decryptIV, CRYPT_DES_ENCRYPT);
787
+                    $xor = $des[1]->_processBlock($xor, CRYPT_DES_DECRYPT);
788
+                    $xor = $des[2]->_processBlock($xor, CRYPT_DES_ENCRYPT);
789
+                    $start = 0;
790
+                }
791
+
792
+                for ($i = $start; $i < strlen($ciphertext); $i+=8) {
793
+                    $block = substr($ciphertext, $i, 8);
794
+                    $plaintext.= $block ^ $xor;
795
+                    if ($continuousBuffer && strlen($block) != 8) {
796
+                        $buffer['ciphertext'].= $block;
797
+                        $block = $xor;
798
+                    } else if (strlen($block) == 8) {
799
+                        $xor = $des[0]->_processBlock($block, CRYPT_DES_ENCRYPT);
800
+                        $xor = $des[1]->_processBlock($xor, CRYPT_DES_DECRYPT);
801
+                        $xor = $des[2]->_processBlock($xor, CRYPT_DES_ENCRYPT);
802
+                    }
803
+                }
804
+                if ($this->continuousBuffer) {
805
+                    $this->decryptIV = $block;
806
+                }
807
+                break;
808
+            case CRYPT_DES_MODE_OFB:
809
+                $xor = $this->decryptIV;
810
+                if (strlen($buffer)) {
811
+                    for ($i = 0; $i < strlen($ciphertext); $i+=8) {
812
+                        $xor = $des[0]->_processBlock($xor, CRYPT_DES_ENCRYPT);
813
+                        $xor = $des[1]->_processBlock($xor, CRYPT_DES_DECRYPT);
814
+                        $xor = $des[2]->_processBlock($xor, CRYPT_DES_ENCRYPT);
815
+                        $buffer.= $xor;
816
+                        $key = $this->_string_shift($buffer, 8);
817
+                        $plaintext.= substr($ciphertext, $i, 8) ^ $key;
818
+                    }
819
+                } else {
820
+                    for ($i = 0; $i < strlen($ciphertext); $i+=8) {
821
+                        $xor = $des[0]->_processBlock($xor, CRYPT_DES_ENCRYPT);
822
+                        $xor = $des[1]->_processBlock($xor, CRYPT_DES_DECRYPT);
823
+                        $xor = $des[2]->_processBlock($xor, CRYPT_DES_ENCRYPT);
824
+                        $plaintext.= substr($ciphertext, $i, 8) ^ $xor;
825
+                    }
826
+                    $key = $xor;
827
+                }
828
+                if ($this->continuousBuffer) {
829
+                    $this->decryptIV = $xor;
830
+                    if ($start = strlen($ciphertext) & 7) {
831
+                         $buffer = substr($key, $start) . $buffer;
832
+                    }
833
+                }
834
+        }
835
+
836
+        return $this->paddable ? $this->_unpad($plaintext) : $plaintext;
837
+    }
838
+
839
+    /**
840
+     * Treat consecutive "packets" as if they are a continuous buffer.
841
+     *
842
+     * Say you have a 16-byte plaintext $plaintext.  Using the default behavior, the two following code snippets
843
+     * will yield different outputs:
844
+     *
845
+     * <code>
846
+     *    echo $des->encrypt(substr($plaintext, 0, 8));
847
+     *    echo $des->encrypt(substr($plaintext, 8, 8));
848
+     * </code>
849
+     * <code>
850
+     *    echo $des->encrypt($plaintext);
851
+     * </code>
852
+     *
853
+     * The solution is to enable the continuous buffer.  Although this will resolve the above discrepancy, it creates
854
+     * another, as demonstrated with the following:
855
+     *
856
+     * <code>
857
+     *    $des->encrypt(substr($plaintext, 0, 8));
858
+     *    echo $des->decrypt($des->encrypt(substr($plaintext, 8, 8)));
859
+     * </code>
860
+     * <code>
861
+     *    echo $des->decrypt($des->encrypt(substr($plaintext, 8, 8)));
862
+     * </code>
863
+     *
864
+     * With the continuous buffer disabled, these would yield the same output.  With it enabled, they yield different
865
+     * outputs.  The reason is due to the fact that the initialization vector's change after every encryption /
866
+     * decryption round when the continuous buffer is enabled.  When it's disabled, they remain constant.
867
+     *
868
+     * Put another way, when the continuous buffer is enabled, the state of the Crypt_DES() object changes after each
869
+     * encryption / decryption round, whereas otherwise, it'd remain constant.  For this reason, it's recommended that
870
+     * continuous buffers not be used.  They do offer better security and are, in fact, sometimes required (SSH uses them),
871
+     * however, they are also less intuitive and more likely to cause you problems.
872
+     *
873
+     * @see Crypt_TripleDES::disableContinuousBuffer()
874
+     * @access public
875
+     */
876
+    function enableContinuousBuffer()
877
+    {
878
+        $this->continuousBuffer = true;
879
+        if ($this->mode == CRYPT_DES_MODE_3CBC) {
880
+            $this->des[0]->enableContinuousBuffer();
881
+            $this->des[1]->enableContinuousBuffer();
882
+            $this->des[2]->enableContinuousBuffer();
883
+        }
884
+    }
885
+
886
+    /**
887
+     * Treat consecutive packets as if they are a discontinuous buffer.
888
+     *
889
+     * The default behavior.
890
+     *
891
+     * @see Crypt_TripleDES::enableContinuousBuffer()
892
+     * @access public
893
+     */
894
+    function disableContinuousBuffer()
895
+    {
896
+        $this->continuousBuffer = false;
897
+        $this->encryptIV = $this->iv;
898
+        $this->decryptIV = $this->iv;
899
+
900
+        if ($this->mode == CRYPT_DES_MODE_3CBC) {
901
+            $this->des[0]->disableContinuousBuffer();
902
+            $this->des[1]->disableContinuousBuffer();
903
+            $this->des[2]->disableContinuousBuffer();
904
+        }
905
+    }
906
+
907
+    /**
908
+     * Pad "packets".
909
+     *
910
+     * DES works by encrypting eight bytes at a time.  If you ever need to encrypt or decrypt something that's not
911
+     * a multiple of eight, it becomes necessary to pad the input so that it's length is a multiple of eight.
912
+     *
913
+     * Padding is enabled by default.  Sometimes, however, it is undesirable to pad strings.  Such is the case in SSH1,
914
+     * where "packets" are padded with random bytes before being encrypted.  Unpad these packets and you risk stripping
915
+     * away characters that shouldn't be stripped away. (SSH knows how many bytes are added because the length is
916
+     * transmitted separately)
917
+     *
918
+     * @see Crypt_TripleDES::disablePadding()
919
+     * @access public
920
+     */
921
+    function enablePadding()
922
+    {
923
+        $this->padding = true;
924
+    }
925
+
926
+    /**
927
+     * Do not pad packets.
928
+     *
929
+     * @see Crypt_TripleDES::enablePadding()
930
+     * @access public
931
+     */
932
+    function disablePadding()
933
+    {
934
+        $this->padding = false;
935
+    }
936
+
937
+    /**
938
+     * Pads a string
939
+     *
940
+     * Pads a string using the RSA PKCS padding standards so that its length is a multiple of the blocksize (8).
941
+     * 8 - (strlen($text) & 7) bytes are added, each of which is equal to chr(8 - (strlen($text) & 7)
942
+     *
943
+     * If padding is disabled and $text is not a multiple of the blocksize, the string will be padded regardless
944
+     * and padding will, hence forth, be enabled.
945
+     *
946
+     * @see Crypt_TripleDES::_unpad()
947
+     * @access private
948
+     */
949
+    function _pad($text)
950
+    {
951
+        $length = strlen($text);
952
+
953
+        if (!$this->padding) {
954
+            if (($length & 7) == 0) {
955
+                return $text;
956
+            } else {
957
+                user_error("The plaintext's length ($length) is not a multiple of the block size (8)", E_USER_NOTICE);
958
+                $this->padding = true;
959
+            }
960
+        }
961
+
962
+        $pad = 8 - ($length & 7);
963
+        return str_pad($text, $length + $pad, chr($pad));
964
+    }
965
+
966
+    /**
967
+     * Unpads a string
968
+     *
969
+     * If padding is enabled and the reported padding length is invalid the encryption key will be assumed to be wrong
970
+     * and false will be returned.
971
+     *
972
+     * @see Crypt_TripleDES::_pad()
973
+     * @access private
974
+     */
975
+    function _unpad($text)
976
+    {
977
+        if (!$this->padding) {
978
+            return $text;
979
+        }
980
+
981
+        $length = ord($text[strlen($text) - 1]);
982
+
983
+        if (!$length || $length > 8) {
984
+            return false;
985
+        }
986
+
987
+        return substr($text, 0, -$length);
988
+    }
989
+
990
+    /**
991
+     * String Shift
992
+     *
993
+     * Inspired by array_shift
994
+     *
995
+     * @param String $string
996
+     * @param optional Integer $index
997
+     * @return String
998
+     * @access private
999
+     */
1000
+    function _string_shift(&$string, $index = 1)
1001
+    {
1002
+        $substr = substr($string, 0, $index);
1003
+        $string = substr($string, $index);
1004
+        return $substr;
1005
+    }
1006
+}
1007
+
1008
+// vim: ts=4:sw=4:et:
1009
+// vim6: fdl=1:
0 1010
\ No newline at end of file
... ...
@@ -0,0 +1,3551 @@
1
+<?php
2
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
3
+
4
+/**
5
+ * Pure-PHP arbitrary precision integer arithmetic library.
6
+ *
7
+ * Supports base-2, base-10, base-16, and base-256 numbers.  Uses the GMP or BCMath extensions, if available,
8
+ * and an internal implementation, otherwise.
9
+ *
10
+ * PHP versions 4 and 5
11
+ *
12
+ * {@internal (all DocBlock comments regarding implementation - such as the one that follows - refer to the 
13
+ * {@link MATH_BIGINTEGER_MODE_INTERNAL MATH_BIGINTEGER_MODE_INTERNAL} mode)
14
+ *
15
+ * Math_BigInteger uses base-2**26 to perform operations such as multiplication and division and
16
+ * base-2**52 (ie. two base 2**26 digits) to perform addition and subtraction.  Because the largest possible
17
+ * value when multiplying two base-2**26 numbers together is a base-2**52 number, double precision floating
18
+ * point numbers - numbers that should be supported on most hardware and whose significand is 53 bits - are
19
+ * used.  As a consequence, bitwise operators such as >> and << cannot be used, nor can the modulo operator %,
20
+ * which only supports integers.  Although this fact will slow this library down, the fact that such a high
21
+ * base is being used should more than compensate.
22
+ *
23
+ * When PHP version 6 is officially released, we'll be able to use 64-bit integers.  This should, once again,
24
+ * allow bitwise operators, and will increase the maximum possible base to 2**31 (or 2**62 for addition /
25
+ * subtraction).
26
+ *
27
+ * Numbers are stored in {@link http://en.wikipedia.org/wiki/Endianness little endian} format.  ie.
28
+ * (new Math_BigInteger(pow(2, 26)))->value = array(0, 1)
29
+ *
30
+ * Useful resources are as follows:
31
+ *
32
+ *  - {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf Handbook of Applied Cryptography (HAC)}
33
+ *  - {@link http://math.libtomcrypt.com/files/tommath.pdf Multi-Precision Math (MPM)}
34
+ *  - Java's BigInteger classes.  See /j2se/src/share/classes/java/math in jdk-1_5_0-src-jrl.zip
35
+ *
36
+ * Here's an example of how to use this library:
37
+ * <code>
38
+ * <?php
39
+ *    include('Math/BigInteger.php');
40
+ *
41
+ *    $a = new Math_BigInteger(2);
42
+ *    $b = new Math_BigInteger(3);
43
+ *
44
+ *    $c = $a->add($b);
45
+ *
46
+ *    echo $c->toString(); // outputs 5
47
+ * ?>
48
+ * </code>
49
+ *
50
+ * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy
51
+ * of this software and associated documentation files (the "Software"), to deal
52
+ * in the Software without restriction, including without limitation the rights
53
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
54
+ * copies of the Software, and to permit persons to whom the Software is
55
+ * furnished to do so, subject to the following conditions:
56
+ * 
57
+ * The above copyright notice and this permission notice shall be included in
58
+ * all copies or substantial portions of the Software.
59
+ * 
60
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
61
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
62
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
63
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
64
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
65
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
66
+ * THE SOFTWARE.
67
+ *
68
+ * @category   Math
69
+ * @package    Math_BigInteger
70
+ * @author     Jim Wigginton <[email protected]>
71
+ * @copyright  MMVI Jim Wigginton
72
+ * @license    http://www.opensource.org/licenses/mit-license.html  MIT License
73
+ * @version    $Id: BigInteger.php,v 1.33 2010/03/22 22:32:03 terrafrost Exp $
74
+ * @link       http://pear.php.net/package/Math_BigInteger
75
+ */
76
+
77
+/**#@+
78
+ * Reduction constants
79
+ *
80
+ * @access private
81
+ * @see Math_BigInteger::_reduce()
82
+ */
83
+/**
84
+ * @see Math_BigInteger::_montgomery()
85
+ * @see Math_BigInteger::_prepMontgomery()
86
+ */
87
+define('MATH_BIGINTEGER_MONTGOMERY', 0);
88
+/**
89
+ * @see Math_BigInteger::_barrett()
90
+ */
91
+define('MATH_BIGINTEGER_BARRETT', 1);
92
+/**
93
+ * @see Math_BigInteger::_mod2()
94
+ */
95
+define('MATH_BIGINTEGER_POWEROF2', 2);
96
+/**
97
+ * @see Math_BigInteger::_remainder()
98
+ */
99
+define('MATH_BIGINTEGER_CLASSIC', 3);
100
+/**
101
+ * @see Math_BigInteger::__clone()
102
+ */
103
+define('MATH_BIGINTEGER_NONE', 4);
104
+/**#@-*/
105
+
106
+/**#@+
107
+ * Array constants
108
+ *
109
+ * Rather than create a thousands and thousands of new Math_BigInteger objects in repeated function calls to add() and
110
+ * multiply() or whatever, we'll just work directly on arrays, taking them in as parameters and returning them.
111
+ *
112
+ * @access private
113
+ */
114
+/**
115
+ * $result[MATH_BIGINTEGER_VALUE] contains the value.
116
+ */
117
+define('MATH_BIGINTEGER_VALUE', 0);
118
+/**
119
+ * $result[MATH_BIGINTEGER_SIGN] contains the sign.
120
+ */
121
+define('MATH_BIGINTEGER_SIGN', 1);
122
+/**#@-*/
123
+
124
+/**#@+
125
+ * @access private
126
+ * @see Math_BigInteger::_montgomery()
127
+ * @see Math_BigInteger::_barrett()
128
+ */
129
+/**
130
+ * Cache constants
131
+ *
132
+ * $cache[MATH_BIGINTEGER_VARIABLE] tells us whether or not the cached data is still valid.
133
+ */
134
+define('MATH_BIGINTEGER_VARIABLE', 0);
135
+/**
136
+ * $cache[MATH_BIGINTEGER_DATA] contains the cached data.
137
+ */
138
+define('MATH_BIGINTEGER_DATA', 1);
139
+/**#@-*/
140
+
141
+/**#@+
142
+ * Mode constants.
143
+ *
144
+ * @access private
145
+ * @see Math_BigInteger::Math_BigInteger()
146
+ */
147
+/**
148
+ * To use the pure-PHP implementation
149
+ */
150
+define('MATH_BIGINTEGER_MODE_INTERNAL', 1);
151
+/**
152
+ * To use the BCMath library
153
+ *
154
+ * (if enabled; otherwise, the internal implementation will be used)
155
+ */
156
+define('MATH_BIGINTEGER_MODE_BCMATH', 2);
157
+/**
158
+ * To use the GMP library
159
+ *
160
+ * (if present; otherwise, either the BCMath or the internal implementation will be used)
161
+ */
162
+define('MATH_BIGINTEGER_MODE_GMP', 3);
163
+/**#@-*/
164
+
165
+/**
166
+ * The largest digit that may be used in addition / subtraction
167
+ *
168
+ * (we do pow(2, 52) instead of using 4503599627370496, directly, because some PHP installations
169
+ *  will truncate 4503599627370496)
170
+ *
171
+ * @access private
172
+ */
173
+define('MATH_BIGINTEGER_MAX_DIGIT52', pow(2, 52));
174
+
175
+/**
176
+ * Karatsuba Cutoff
177
+ *
178
+ * At what point do we switch between Karatsuba multiplication and schoolbook long multiplication?
179
+ *
180
+ * @access private
181
+ */
182
+define('MATH_BIGINTEGER_KARATSUBA_CUTOFF', 25);
183
+
184
+/**
185
+ * Pure-PHP arbitrary precision integer arithmetic library. Supports base-2, base-10, base-16, and base-256
186
+ * numbers.
187
+ *
188
+ * @author  Jim Wigginton <[email protected]>
189
+ * @version 1.0.0RC4
190
+ * @access  public
191
+ * @package Math_BigInteger
192
+ */
193
+class Math_BigInteger {
194
+    /**
195
+     * Holds the BigInteger's value.
196
+     *
197
+     * @var Array
198
+     * @access private
199
+     */
200
+    var $value;
201
+
202
+    /**
203
+     * Holds the BigInteger's magnitude.
204
+     *
205
+     * @var Boolean
206
+     * @access private
207
+     */
208
+    var $is_negative = false;
209
+
210
+    /**
211
+     * Random number generator function
212
+     *
213
+     * @see setRandomGenerator()
214
+     * @access private
215
+     */
216
+    var $generator = 'mt_rand';
217
+
218
+    /**
219
+     * Precision
220
+     *
221
+     * @see setPrecision()
222
+     * @access private
223
+     */
224
+    var $precision = -1;
225
+
226
+    /**
227
+     * Precision Bitmask
228
+     *
229
+     * @see setPrecision()
230
+     * @access private
231
+     */
232
+    var $bitmask = false;
233
+
234
+    /**
235
+     * Mode independant value used for serialization.
236
+     *
237
+     * If the bcmath or gmp extensions are installed $this->value will be a non-serializable resource, hence the need for 
238
+     * a variable that'll be serializable regardless of whether or not extensions are being used.  Unlike $this->value,
239
+     * however, $this->hex is only calculated when $this->__sleep() is called.
240
+     *
241
+     * @see __sleep()
242
+     * @see __wakeup()
243
+     * @var String
244
+     * @access private
245
+     */
246
+    var $hex;
247
+
248
+    /**
249
+     * Converts base-2, base-10, base-16, and binary strings (eg. base-256) to BigIntegers.
250
+     *
251
+     * If the second parameter - $base - is negative, then it will be assumed that the number's are encoded using
252
+     * two's compliment.  The sole exception to this is -10, which is treated the same as 10 is.
253
+     *
254
+     * Here's an example:
255
+     * <code>
256
+     * <?php
257
+     *    include('Math/BigInteger.php');
258
+     *
259
+     *    $a = new Math_BigInteger('0x32', 16); // 50 in base-16
260
+     *
261
+     *    echo $a->toString(); // outputs 50
262
+     * ?>
263
+     * </code>
264
+     *
265
+     * @param optional $x base-10 number or base-$base number if $base set.
266
+     * @param optional integer $base
267
+     * @return Math_BigInteger
268
+     * @access public
269
+     */
270
+    function Math_BigInteger($x = 0, $base = 10)
271
+    {
272
+        if ( !defined('MATH_BIGINTEGER_MODE') ) {
273
+            switch (true) {
274
+                case extension_loaded('gmp'):
275
+                    define('MATH_BIGINTEGER_MODE', MATH_BIGINTEGER_MODE_GMP);
276
+                    break;
277
+                case extension_loaded('bcmath'):
278
+                    define('MATH_BIGINTEGER_MODE', MATH_BIGINTEGER_MODE_BCMATH);
279
+                    break;
280
+                default:
281
+                    define('MATH_BIGINTEGER_MODE', MATH_BIGINTEGER_MODE_INTERNAL);
282
+            }
283
+        }
284
+
285
+        switch ( MATH_BIGINTEGER_MODE ) {
286
+            case MATH_BIGINTEGER_MODE_GMP:
287
+                if (is_resource($x) && get_resource_type($x) == 'GMP integer') {
288
+                    $this->value = $x;
289
+                    return;
290
+                }
291
+                $this->value = gmp_init(0);
292
+                break;
293
+            case MATH_BIGINTEGER_MODE_BCMATH:
294
+                $this->value = '0';
295
+                break;
296
+            default:
297
+                $this->value = array();
298
+        }
299
+
300
+        if (empty($x)) {
301
+            return;
302
+        }
303
+
304
+        switch ($base) {
305
+            case -256:
306
+                if (ord($x[0]) & 0x80) {
307
+                    $x = ~$x;
308
+                    $this->is_negative = true;
309
+                }
310
+            case  256:
311
+                switch ( MATH_BIGINTEGER_MODE ) {
312
+                    case MATH_BIGINTEGER_MODE_GMP:
313
+                        $sign = $this->is_negative ? '-' : '';
314
+                        $this->value = gmp_init($sign . '0x' . bin2hex($x));
315
+                        break;
316
+                    case MATH_BIGINTEGER_MODE_BCMATH:
317
+                        // round $len to the nearest 4 (thanks, DavidMJ!)
318
+                        $len = (strlen($x) + 3) & 0xFFFFFFFC;
319
+
320
+                        $x = str_pad($x, $len, chr(0), STR_PAD_LEFT);
321
+
322
+                        for ($i = 0; $i < $len; $i+= 4) {
323
+                            $this->value = bcmul($this->value, '4294967296', 0); // 4294967296 == 2**32
324
+                            $this->value = bcadd($this->value, 0x1000000 * ord($x[$i]) + ((ord($x[$i + 1]) << 16) | (ord($x[$i + 2]) << 8) | ord($x[$i + 3])), 0);
325
+                        }
326
+
327
+                        if ($this->is_negative) {
328
+                            $this->value = '-' . $this->value;
329
+                        }
330
+
331
+                        break;
332
+                    // converts a base-2**8 (big endian / msb) number to base-2**26 (little endian / lsb)
333
+                    default:
334
+                        while (strlen($x)) {
335
+                            $this->value[] = $this->_bytes2int($this->_base256_rshift($x, 26));
336
+                        }
337
+                }
338
+
339
+                if ($this->is_negative) {
340
+                    if (MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_INTERNAL) {
341
+                        $this->is_negative = false;
342
+                    }
343
+                    $temp = $this->add(new Math_BigInteger('-1'));
344
+                    $this->value = $temp->value;
345
+                }
346
+                break;
347
+            case  16:
348
+            case -16:
349
+                if ($base > 0 && $x[0] == '-') {
350
+                    $this->is_negative = true;
351
+                    $x = substr($x, 1);
352
+                }
353
+
354
+                $x = preg_replace('#^(?:0x)?([A-Fa-f0-9]*).*#', '$1', $x);
355
+
356
+                $is_negative = false;
357
+                if ($base < 0 && hexdec($x[0]) >= 8) {
358
+                    $this->is_negative = $is_negative = true;
359
+                    $x = bin2hex(~pack('H*', $x));
360
+                }
361
+
362
+                switch ( MATH_BIGINTEGER_MODE ) {
363
+                    case MATH_BIGINTEGER_MODE_GMP:
364
+                        $temp = $this->is_negative ? '-0x' . $x : '0x' . $x;
365
+                        $this->value = gmp_init($temp);
366
+                        $this->is_negative = false;
367
+                        break;
368
+                    case MATH_BIGINTEGER_MODE_BCMATH:
369
+                        $x = ( strlen($x) & 1 ) ? '0' . $x : $x;
370
+                        $temp = new Math_BigInteger(pack('H*', $x), 256);
371
+                        $this->value = $this->is_negative ? '-' . $temp->value : $temp->value;
372
+                        $this->is_negative = false;
373
+                        break;
374
+                    default:
375
+                        $x = ( strlen($x) & 1 ) ? '0' . $x : $x;
376
+                        $temp = new Math_BigInteger(pack('H*', $x), 256);
377
+                        $this->value = $temp->value;
378
+                }
379
+
380
+                if ($is_negative) {
381
+                    $temp = $this->add(new Math_BigInteger('-1'));
382
+                    $this->value = $temp->value;
383
+                }
384
+                break;
385
+            case  10:
386
+            case -10:
387
+                $x = preg_replace('#^(-?[0-9]*).*#', '$1', $x);
388
+
389
+                switch ( MATH_BIGINTEGER_MODE ) {
390
+                    case MATH_BIGINTEGER_MODE_GMP:
391
+                        $this->value = gmp_init($x);
392
+                        break;
393
+                    case MATH_BIGINTEGER_MODE_BCMATH:
394
+                        // explicitly casting $x to a string is necessary, here, since doing $x[0] on -1 yields different
395
+                        // results then doing it on '-1' does (modInverse does $x[0])
396
+                        $this->value = (string) $x;
397
+                        break;
398
+                    default:
399
+                        $temp = new Math_BigInteger();
400
+
401
+                        // array(10000000) is 10**7 in base-2**26.  10**7 is the closest to 2**26 we can get without passing it.
402
+                        $multiplier = new Math_BigInteger();
403
+                        $multiplier->value = array(10000000);
404
+
405
+                        if ($x[0] == '-') {
406
+                            $this->is_negative = true;
407
+                            $x = substr($x, 1);
408
+                        }
409
+
410
+                        $x = str_pad($x, strlen($x) + (6 * strlen($x)) % 7, 0, STR_PAD_LEFT);
411
+
412
+                        while (strlen($x)) {
413
+                            $temp = $temp->multiply($multiplier);
414
+                            $temp = $temp->add(new Math_BigInteger($this->_int2bytes(substr($x, 0, 7)), 256));
415
+                            $x = substr($x, 7);
416
+                        }
417
+
418
+                        $this->value = $temp->value;
419
+                }
420
+                break;
421
+            case  2: // base-2 support originally implemented by Lluis Pamies - thanks!
422
+            case -2:
423
+                if ($base > 0 && $x[0] == '-') {
424
+                    $this->is_negative = true;
425
+                    $x = substr($x, 1);
426
+                }
427
+
428
+                $x = preg_replace('#^([01]*).*#', '$1', $x);
429
+                $x = str_pad($x, strlen($x) + (3 * strlen($x)) % 4, 0, STR_PAD_LEFT);
430
+
431
+                $str = '0x';
432
+                while (strlen($x)) {
433
+                    $part = substr($x, 0, 4);
434
+                    $str.= dechex(bindec($part));
435
+                    $x = substr($x, 4);
436
+                }
437
+
438
+                if ($this->is_negative) {
439
+                    $str = '-' . $str;
440
+                }
441
+
442
+                $temp = new Math_BigInteger($str, 8 * $base); // ie. either -16 or +16
443
+                $this->value = $temp->value;
444
+                $this->is_negative = $temp->is_negative;
445
+
446
+                break;
447
+            default:
448
+                // base not supported, so we'll let $this == 0
449
+        }
450
+    }
451
+
452
+    /**
453
+     * Converts a BigInteger to a byte string (eg. base-256).
454
+     *
455
+     * Negative numbers are saved as positive numbers, unless $twos_compliment is set to true, at which point, they're
456
+     * saved as two's compliment.
457
+     *
458
+     * Here's an example:
459
+     * <code>
460
+     * <?php
461
+     *    include('Math/BigInteger.php');
462
+     *
463
+     *    $a = new Math_BigInteger('65');
464
+     *
465
+     *    echo $a->toBytes(); // outputs chr(65)
466
+     * ?>
467
+     * </code>
468
+     *
469
+     * @param Boolean $twos_compliment
470
+     * @return String
471
+     * @access public
472
+     * @internal Converts a base-2**26 number to base-2**8
473
+     */
474
+    function toBytes($twos_compliment = false)
475
+    {
476
+        if ($twos_compliment) {
477
+            $comparison = $this->compare(new Math_BigInteger());
478
+            if ($comparison == 0) {
479
+                return $this->precision > 0 ? str_repeat(chr(0), ($this->precision + 1) >> 3) : '';
480
+            }
481
+
482
+            $temp = $comparison < 0 ? $this->add(new Math_BigInteger(1)) : $this->copy();
483
+            $bytes = $temp->toBytes();
484
+
485
+            if (empty($bytes)) { // eg. if the number we're trying to convert is -1
486
+                $bytes = chr(0);
487
+            }
488
+
489
+            if (ord($bytes[0]) & 0x80) {
490
+                $bytes = chr(0) . $bytes;
491
+            }
492
+
493
+            return $comparison < 0 ? ~$bytes : $bytes;
494
+        }
495
+
496
+        switch ( MATH_BIGINTEGER_MODE ) {
497
+            case MATH_BIGINTEGER_MODE_GMP:
498
+                if (gmp_cmp($this->value, gmp_init(0)) == 0) {
499
+                    return $this->precision > 0 ? str_repeat(chr(0), ($this->precision + 1) >> 3) : '';
500
+                }
501
+
502
+                $temp = gmp_strval(gmp_abs($this->value), 16);
503
+                $temp = ( strlen($temp) & 1 ) ? '0' . $temp : $temp;
504
+                $temp = pack('H*', $temp);
505
+
506
+                return $this->precision > 0 ?
507
+                    substr(str_pad($temp, $this->precision >> 3, chr(0), STR_PAD_LEFT), -($this->precision >> 3)) :
508
+                    ltrim($temp, chr(0));
509
+            case MATH_BIGINTEGER_MODE_BCMATH:
510
+                if ($this->value === '0') {
511
+                    return $this->precision > 0 ? str_repeat(chr(0), ($this->precision + 1) >> 3) : '';
512
+                }
513
+
514
+                $value = '';
515
+                $current = $this->value;
516
+
517
+                if ($current[0] == '-') {
518
+                    $current = substr($current, 1);
519
+                }
520
+
521
+                while (bccomp($current, '0', 0) > 0) {
522
+                    $temp = bcmod($current, '16777216');
523
+                    $value = chr($temp >> 16) . chr($temp >> 8) . chr($temp) . $value;
524
+                    $current = bcdiv($current, '16777216', 0);
525
+                }
526
+
527
+                return $this->precision > 0 ?
528
+                    substr(str_pad($value, $this->precision >> 3, chr(0), STR_PAD_LEFT), -($this->precision >> 3)) :
529
+                    ltrim($value, chr(0));
530
+        }
531
+
532
+        if (!count($this->value)) {
533
+            return $this->precision > 0 ? str_repeat(chr(0), ($this->precision + 1) >> 3) : '';
534
+        }
535
+        $result = $this->_int2bytes($this->value[count($this->value) - 1]);
536
+
537
+        $temp = $this->copy();
538
+
539
+        for ($i = count($temp->value) - 2; $i >= 0; --$i) {
540
+            $temp->_base256_lshift($result, 26);
541
+            $result = $result | str_pad($temp->_int2bytes($temp->value[$i]), strlen($result), chr(0), STR_PAD_LEFT);
542
+        }
543
+
544
+        return $this->precision > 0 ?
545
+            str_pad(substr($result, -(($this->precision + 7) >> 3)), ($this->precision + 7) >> 3, chr(0), STR_PAD_LEFT) :
546
+            $result;
547
+    }
548
+
549
+    /**
550
+     * Converts a BigInteger to a hex string (eg. base-16)).
551
+     *
552
+     * Negative numbers are saved as positive numbers, unless $twos_compliment is set to true, at which point, they're
553
+     * saved as two's compliment.
554
+     *
555
+     * Here's an example:
556
+     * <code>
557
+     * <?php
558
+     *    include('Math/BigInteger.php');
559
+     *
560
+     *    $a = new Math_BigInteger('65');
561
+     *
562
+     *    echo $a->toHex(); // outputs '41'
563
+     * ?>
564
+     * </code>
565
+     *
566
+     * @param Boolean $twos_compliment
567
+     * @return String
568
+     * @access public
569
+     * @internal Converts a base-2**26 number to base-2**8
570
+     */
571
+    function toHex($twos_compliment = false)
572
+    {
573
+        return bin2hex($this->toBytes($twos_compliment));
574
+    }
575
+
576
+    /**
577
+     * Converts a BigInteger to a bit string (eg. base-2).
578
+     *
579
+     * Negative numbers are saved as positive numbers, unless $twos_compliment is set to true, at which point, they're
580
+     * saved as two's compliment.
581
+     *
582
+     * Here's an example:
583
+     * <code>
584
+     * <?php
585
+     *    include('Math/BigInteger.php');
586
+     *
587
+     *    $a = new Math_BigInteger('65');
588
+     *
589
+     *    echo $a->toBits(); // outputs '1000001'
590
+     * ?>
591
+     * </code>
592
+     *
593
+     * @param Boolean $twos_compliment
594
+     * @return String
595
+     * @access public
596
+     * @internal Converts a base-2**26 number to base-2**2
597
+     */
598
+    function toBits($twos_compliment = false)
599
+    {
600
+        $hex = $this->toHex($twos_compliment);
601
+        $bits = '';
602
+        for ($i = 0, $end = strlen($hex) & 0xFFFFFFF8; $i < $end; $i+=8) {
603
+            $bits.= str_pad(decbin(hexdec(substr($hex, $i, 8))), 32, '0', STR_PAD_LEFT);
604
+        }
605
+        if ($end != strlen($hex)) { // hexdec('') == 0
606
+            $bits.= str_pad(decbin(hexdec(substr($hex, $end))), strlen($hex) & 7, '0', STR_PAD_LEFT);
607
+        }
608
+        return $this->precision > 0 ? substr($bits, -$this->precision) : ltrim($bits, '0');
609
+    }
610
+
611
+    /**
612
+     * Converts a BigInteger to a base-10 number.
613
+     *
614
+     * Here's an example:
615
+     * <code>
616
+     * <?php
617
+     *    include('Math/BigInteger.php');
618
+     *
619
+     *    $a = new Math_BigInteger('50');
620
+     *
621
+     *    echo $a->toString(); // outputs 50
622
+     * ?>
623
+     * </code>
624
+     *
625
+     * @return String
626
+     * @access public
627
+     * @internal Converts a base-2**26 number to base-10**7 (which is pretty much base-10)
628
+     */
629
+    function toString()
630
+    {
631
+        switch ( MATH_BIGINTEGER_MODE ) {
632
+            case MATH_BIGINTEGER_MODE_GMP:
633
+                return gmp_strval($this->value);
634
+            case MATH_BIGINTEGER_MODE_BCMATH:
635
+                if ($this->value === '0') {
636
+                    return '0';
637
+                }
638
+
639
+                return ltrim($this->value, '0');
640
+        }
641
+
642
+        if (!count($this->value)) {
643
+            return '0';
644
+        }
645
+
646
+        $temp = $this->copy();
647
+        $temp->is_negative = false;
648
+
649
+        $divisor = new Math_BigInteger();
650
+        $divisor->value = array(10000000); // eg. 10**7
651
+        $result = '';
652
+        while (count($temp->value)) {
653
+            list($temp, $mod) = $temp->divide($divisor);
654
+            $result = str_pad(isset($mod->value[0]) ? $mod->value[0] : '', 7, '0', STR_PAD_LEFT) . $result;
655
+        }
656
+        $result = ltrim($result, '0');
657
+        if (empty($result)) {
658
+            $result = '0';
659
+        }
660
+
661
+        if ($this->is_negative) {
662
+            $result = '-' . $result;
663
+        }
664
+
665
+        return $result;
666
+    }
667
+
668
+    /**
669
+     * Copy an object
670
+     *
671
+     * PHP5 passes objects by reference while PHP4 passes by value.  As such, we need a function to guarantee
672
+     * that all objects are passed by value, when appropriate.  More information can be found here:
673
+     *
674
+     * {@link http://php.net/language.oop5.basic#51624}
675
+     *
676
+     * @access public
677
+     * @see __clone()
678
+     * @return Math_BigInteger
679
+     */
680
+    function copy()
681
+    {
682
+        $temp = new Math_BigInteger();
683
+        $temp->value = $this->value;
684
+        $temp->is_negative = $this->is_negative;
685
+        $temp->generator = $this->generator;
686
+        $temp->precision = $this->precision;
687
+        $temp->bitmask = $this->bitmask;
688
+        return $temp;
689
+    }
690
+
691
+    /**
692
+     *  __toString() magic method
693
+     *
694
+     * Will be called, automatically, if you're supporting just PHP5.  If you're supporting PHP4, you'll need to call
695
+     * toString().
696
+     *
697
+     * @access public
698
+     * @internal Implemented per a suggestion by Techie-Michael - thanks!
699
+     */
700
+    function __toString()
701
+    {
702
+        return $this->toString();
703
+    }
704
+
705
+    /**
706
+     * __clone() magic method
707
+     *
708
+     * Although you can call Math_BigInteger::__toString() directly in PHP5, you cannot call Math_BigInteger::__clone()
709
+     * directly in PHP5.  You can in PHP4 since it's not a magic method, but in PHP5, you have to call it by using the PHP5
710
+     * only syntax of $y = clone $x.  As such, if you're trying to write an application that works on both PHP4 and PHP5,
711
+     * call Math_BigInteger::copy(), instead.
712
+     *
713
+     * @access public
714
+     * @see copy()
715
+     * @return Math_BigInteger
716
+     */
717
+    function __clone()
718
+    {
719
+        return $this->copy();
720
+    }
721
+
722
+    /**
723
+     *  __sleep() magic method
724
+     *
725
+     * Will be called, automatically, when serialize() is called on a Math_BigInteger object.
726
+     *
727
+     * @see __wakeup()
728
+     * @access public
729
+     */
730
+    function __sleep()
731
+    {
732
+        $this->hex = $this->toHex(true);
733
+        $vars = array('hex');
734
+        if ($this->generator != 'mt_rand') {
735
+            $vars[] = 'generator';
736
+        }
737
+        if ($this->precision > 0) {
738
+            $vars[] = 'precision';
739
+        }
740
+        return $vars;
741
+        
742
+    }
743
+
744
+    /**
745
+     *  __wakeup() magic method
746
+     *
747
+     * Will be called, automatically, when unserialize() is called on a Math_BigInteger object.
748
+     *
749
+     * @see __sleep()
750
+     * @access public
751
+     */
752
+    function __wakeup()
753
+    {
754
+        $temp = new Math_BigInteger($this->hex, -16);
755
+        $this->value = $temp->value;
756
+        $this->is_negative = $temp->is_negative;
757
+        $this->setRandomGenerator($this->generator);
758
+        if ($this->precision > 0) {
759
+            // recalculate $this->bitmask
760
+            $this->setPrecision($this->precision);
761
+        }
762
+    }
763
+
764
+    /**
765
+     * Adds two BigIntegers.
766
+     *
767
+     * Here's an example:
768
+     * <code>
769
+     * <?php
770
+     *    include('Math/BigInteger.php');
771
+     *
772
+     *    $a = new Math_BigInteger('10');
773
+     *    $b = new Math_BigInteger('20');
774
+     *
775
+     *    $c = $a->add($b);
776
+     *
777
+     *    echo $c->toString(); // outputs 30
778
+     * ?>
779
+     * </code>
780
+     *
781
+     * @param Math_BigInteger $y
782
+     * @return Math_BigInteger
783
+     * @access public
784
+     * @internal Performs base-2**52 addition
785
+     */
786
+    function add($y)
787
+    {
788
+        switch ( MATH_BIGINTEGER_MODE ) {
789
+            case MATH_BIGINTEGER_MODE_GMP:
790
+                $temp = new Math_BigInteger();
791
+                $temp->value = gmp_add($this->value, $y->value);
792
+
793
+                return $this->_normalize($temp);
794
+            case MATH_BIGINTEGER_MODE_BCMATH:
795
+                $temp = new Math_BigInteger();
796
+                $temp->value = bcadd($this->value, $y->value, 0);
797
+
798
+                return $this->_normalize($temp);
799
+        }
800
+
801
+        $temp = $this->_add($this->value, $this->is_negative, $y->value, $y->is_negative);
802
+
803
+        $result = new Math_BigInteger();
804
+        $result->value = $temp[MATH_BIGINTEGER_VALUE];
805
+        $result->is_negative = $temp[MATH_BIGINTEGER_SIGN];
806
+
807
+        return $this->_normalize($result);
808
+    }
809
+
810
+    /**
811
+     * Performs addition.
812
+     *
813
+     * @param Array $x_value
814
+     * @param Boolean $x_negative
815
+     * @param Array $y_value
816
+     * @param Boolean $y_negative
817
+     * @return Array
818
+     * @access private
819
+     */
820
+    function _add($x_value, $x_negative, $y_value, $y_negative)
821
+    {
822
+        $x_size = count($x_value);
823
+        $y_size = count($y_value);
824
+
825
+        if ($x_size == 0) {
826
+            return array(
827
+                MATH_BIGINTEGER_VALUE => $y_value,
828
+                MATH_BIGINTEGER_SIGN => $y_negative
829
+            );
830
+        } else if ($y_size == 0) {
831
+            return array(
832
+                MATH_BIGINTEGER_VALUE => $x_value,
833
+                MATH_BIGINTEGER_SIGN => $x_negative
834
+            );
835
+        }
836
+
837
+        // subtract, if appropriate
838
+        if ( $x_negative != $y_negative ) {
839
+            if ( $x_value == $y_value ) {
840
+                return array(
841
+                    MATH_BIGINTEGER_VALUE => array(),
842
+                    MATH_BIGINTEGER_SIGN => false
843
+                );
844
+            }
845
+
846
+            $temp = $this->_subtract($x_value, false, $y_value, false);
847
+            $temp[MATH_BIGINTEGER_SIGN] = $this->_compare($x_value, false, $y_value, false) > 0 ?
848
+                                          $x_negative : $y_negative;
849
+
850
+            return $temp;
851
+        }
852
+
853
+        if ($x_size < $y_size) {
854
+            $size = $x_size;
855
+            $value = $y_value;
856
+        } else {
857
+            $size = $y_size;
858
+            $value = $x_value;
859
+        }
860
+
861
+        $value[] = 0; // just in case the carry adds an extra digit
862
+
863
+        $carry = 0;
864
+        for ($i = 0, $j = 1; $j < $size; $i+=2, $j+=2) {
865
+            $sum = $x_value[$j] * 0x4000000 + $x_value[$i] + $y_value[$j] * 0x4000000 + $y_value[$i] + $carry;
866
+            $carry = $sum >= MATH_BIGINTEGER_MAX_DIGIT52; // eg. floor($sum / 2**52); only possible values (in any base) are 0 and 1
867
+            $sum = $carry ? $sum - MATH_BIGINTEGER_MAX_DIGIT52 : $sum;
868
+
869
+            $temp = (int) ($sum / 0x4000000);
870
+
871
+            $value[$i] = (int) ($sum - 0x4000000 * $temp); // eg. a faster alternative to fmod($sum, 0x4000000)
872
+            $value[$j] = $temp;
873
+        }
874
+
875
+        if ($j == $size) { // ie. if $y_size is odd
876
+            $sum = $x_value[$i] + $y_value[$i] + $carry;
877
+            $carry = $sum >= 0x4000000;
878
+            $value[$i] = $carry ? $sum - 0x4000000 : $sum;
879
+            ++$i; // ie. let $i = $j since we've just done $value[$i]
880
+        }
881
+
882
+        if ($carry) {
883
+            for (; $value[$i] == 0x3FFFFFF; ++$i) {
884
+                $value[$i] = 0;
885
+            }
886
+            ++$value[$i];
887
+        }
888
+
889
+        return array(
890
+            MATH_BIGINTEGER_VALUE => $this->_trim($value),
891
+            MATH_BIGINTEGER_SIGN => $x_negative
892
+        );
893
+    }
894
+
895
+    /**
896
+     * Subtracts two BigIntegers.
897
+     *
898
+     * Here's an example:
899
+     * <code>
900
+     * <?php
901
+     *    include('Math/BigInteger.php');
902
+     *
903
+     *    $a = new Math_BigInteger('10');
904
+     *    $b = new Math_BigInteger('20');
905
+     *
906
+     *    $c = $a->subtract($b);
907
+     *
908
+     *    echo $c->toString(); // outputs -10
909
+     * ?>
910
+     * </code>
911
+     *
912
+     * @param Math_BigInteger $y
913
+     * @return Math_BigInteger
914
+     * @access public
915
+     * @internal Performs base-2**52 subtraction
916
+     */
917
+    function subtract($y)
918
+    {
919
+        switch ( MATH_BIGINTEGER_MODE ) {
920
+            case MATH_BIGINTEGER_MODE_GMP:
921
+                $temp = new Math_BigInteger();
922
+                $temp->value = gmp_sub($this->value, $y->value);
923
+
924
+                return $this->_normalize($temp);
925
+            case MATH_BIGINTEGER_MODE_BCMATH:
926
+                $temp = new Math_BigInteger();
927
+                $temp->value = bcsub($this->value, $y->value, 0);
928
+
929
+                return $this->_normalize($temp);
930
+        }
931
+
932
+        $temp = $this->_subtract($this->value, $this->is_negative, $y->value, $y->is_negative);
933
+
934
+        $result = new Math_BigInteger();
935
+        $result->value = $temp[MATH_BIGINTEGER_VALUE];
936
+        $result->is_negative = $temp[MATH_BIGINTEGER_SIGN];
937
+
938
+        return $this->_normalize($result);
939
+    }
940
+
941
+    /**
942
+     * Performs subtraction.
943
+     *
944
+     * @param Array $x_value
945
+     * @param Boolean $x_negative
946
+     * @param Array $y_value
947
+     * @param Boolean $y_negative
948
+     * @return Array
949
+     * @access private
950
+     */
951
+    function _subtract($x_value, $x_negative, $y_value, $y_negative)
952
+    {
953
+        $x_size = count($x_value);
954
+        $y_size = count($y_value);
955
+
956
+        if ($x_size == 0) {
957
+            return array(
958
+                MATH_BIGINTEGER_VALUE => $y_value,
959
+                MATH_BIGINTEGER_SIGN => !$y_negative
960
+            );
961
+        } else if ($y_size == 0) {
962
+            return array(
963
+                MATH_BIGINTEGER_VALUE => $x_value,
964
+                MATH_BIGINTEGER_SIGN => $x_negative
965
+            );
966
+        }
967
+
968
+        // add, if appropriate (ie. -$x - +$y or +$x - -$y)
969
+        if ( $x_negative != $y_negative ) {
970
+            $temp = $this->_add($x_value, false, $y_value, false);
971
+            $temp[MATH_BIGINTEGER_SIGN] = $x_negative;
972
+
973
+            return $temp;
974
+        }
975
+
976
+        $diff = $this->_compare($x_value, $x_negative, $y_value, $y_negative);
977
+
978
+        if ( !$diff ) {
979
+            return array(
980
+                MATH_BIGINTEGER_VALUE => array(),
981
+                MATH_BIGINTEGER_SIGN => false
982
+            );
983
+        }
984
+
985
+        // switch $x and $y around, if appropriate.
986
+        if ( (!$x_negative && $diff < 0) || ($x_negative && $diff > 0) ) {
987
+            $temp = $x_value;
988
+            $x_value = $y_value;
989
+            $y_value = $temp;
990
+
991
+            $x_negative = !$x_negative;
992
+
993
+            $x_size = count($x_value);
994
+            $y_size = count($y_value);
995
+        }
996
+
997
+        // at this point, $x_value should be at least as big as - if not bigger than - $y_value
998
+
999
+        $carry = 0;
1000
+        for ($i = 0, $j = 1; $j < $y_size; $i+=2, $j+=2) {
1001
+            $sum = $x_value[$j] * 0x4000000 + $x_value[$i] - $y_value[$j] * 0x4000000 - $y_value[$i] - $carry;
1002
+            $carry = $sum < 0; // eg. floor($sum / 2**52); only possible values (in any base) are 0 and 1
1003
+            $sum = $carry ? $sum + MATH_BIGINTEGER_MAX_DIGIT52 : $sum;
1004
+
1005
+            $temp = (int) ($sum / 0x4000000);
1006
+
1007
+            $x_value[$i] = (int) ($sum - 0x4000000 * $temp);
1008
+            $x_value[$j] = $temp;
1009
+        }
1010
+
1011
+        if ($j == $y_size) { // ie. if $y_size is odd
1012
+            $sum = $x_value[$i] - $y_value[$i] - $carry;
1013
+            $carry = $sum < 0;
1014
+            $x_value[$i] = $carry ? $sum + 0x4000000 : $sum;
1015
+            ++$i;
1016
+        }
1017
+
1018
+        if ($carry) {
1019
+            for (; !$x_value[$i]; ++$i) {
1020
+                $x_value[$i] = 0x3FFFFFF;
1021
+            }
1022
+            --$x_value[$i];
1023
+        }
1024
+
1025
+        return array(
1026
+            MATH_BIGINTEGER_VALUE => $this->_trim($x_value),
1027
+            MATH_BIGINTEGER_SIGN => $x_negative
1028
+        );
1029
+    }
1030
+
1031
+    /**
1032
+     * Multiplies two BigIntegers
1033
+     *
1034
+     * Here's an example:
1035
+     * <code>
1036
+     * <?php
1037
+     *    include('Math/BigInteger.php');
1038
+     *
1039
+     *    $a = new Math_BigInteger('10');
1040
+     *    $b = new Math_BigInteger('20');
1041
+     *
1042
+     *    $c = $a->multiply($b);
1043
+     *
1044
+     *    echo $c->toString(); // outputs 200
1045
+     * ?>
1046
+     * </code>
1047
+     *
1048
+     * @param Math_BigInteger $x
1049
+     * @return Math_BigInteger
1050
+     * @access public
1051
+     */
1052
+    function multiply($x)
1053
+    {
1054
+        switch ( MATH_BIGINTEGER_MODE ) {
1055
+            case MATH_BIGINTEGER_MODE_GMP:
1056
+                $temp = new Math_BigInteger();
1057
+                $temp->value = gmp_mul($this->value, $x->value);
1058
+
1059
+                return $this->_normalize($temp);
1060
+            case MATH_BIGINTEGER_MODE_BCMATH:
1061
+                $temp = new Math_BigInteger();
1062
+                $temp->value = bcmul($this->value, $x->value, 0);
1063
+
1064
+                return $this->_normalize($temp);
1065
+        }
1066
+
1067
+        $temp = $this->_multiply($this->value, $this->is_negative, $x->value, $x->is_negative);
1068
+
1069
+        $product = new Math_BigInteger();
1070
+        $product->value = $temp[MATH_BIGINTEGER_VALUE];
1071
+        $product->is_negative = $temp[MATH_BIGINTEGER_SIGN];
1072
+
1073
+        return $this->_normalize($product);
1074
+    }
1075
+
1076
+    /**
1077
+     * Performs multiplication.
1078
+     *
1079
+     * @param Array $x_value
1080
+     * @param Boolean $x_negative
1081
+     * @param Array $y_value
1082
+     * @param Boolean $y_negative
1083
+     * @return Array
1084
+     * @access private
1085
+     */
1086
+    function _multiply($x_value, $x_negative, $y_value, $y_negative)
1087
+    {
1088
+        //if ( $x_value == $y_value ) {
1089
+        //    return array(
1090
+        //        MATH_BIGINTEGER_VALUE => $this->_square($x_value),
1091
+        //        MATH_BIGINTEGER_SIGN => $x_sign != $y_value
1092
+        //    );
1093
+        //}
1094
+
1095
+        $x_length = count($x_value);
1096
+        $y_length = count($y_value);
1097
+
1098
+        if ( !$x_length || !$y_length ) { // a 0 is being multiplied
1099
+            return array(
1100
+                MATH_BIGINTEGER_VALUE => array(),
1101
+                MATH_BIGINTEGER_SIGN => false
1102
+            );
1103
+        }
1104
+
1105
+        return array(
1106
+            MATH_BIGINTEGER_VALUE => min($x_length, $y_length) < 2 * MATH_BIGINTEGER_KARATSUBA_CUTOFF ?
1107
+                $this->_trim($this->_regularMultiply($x_value, $y_value)) :
1108
+                $this->_trim($this->_karatsuba($x_value, $y_value)),
1109
+            MATH_BIGINTEGER_SIGN => $x_negative != $y_negative
1110
+        );
1111
+    }
1112
+
1113
+    /**
1114
+     * Performs long multiplication on two BigIntegers
1115
+     *
1116
+     * Modeled after 'multiply' in MutableBigInteger.java.
1117
+     *
1118
+     * @param Array $x_value
1119
+     * @param Array $y_value
1120
+     * @return Array
1121
+     * @access private
1122
+     */
1123
+    function _regularMultiply($x_value, $y_value)
1124
+    {
1125
+        $x_length = count($x_value);
1126
+        $y_length = count($y_value);
1127
+
1128
+        if ( !$x_length || !$y_length ) { // a 0 is being multiplied
1129
+            return array();
1130
+        }
1131
+
1132
+        if ( $x_length < $y_length ) {
1133
+            $temp = $x_value;
1134
+            $x_value = $y_value;
1135
+            $y_value = $temp;
1136
+
1137
+            $x_length = count($x_value);
1138
+            $y_length = count($y_value);
1139
+        }
1140
+
1141
+        $product_value = $this->_array_repeat(0, $x_length + $y_length);
1142
+
1143
+        // the following for loop could be removed if the for loop following it
1144
+        // (the one with nested for loops) initially set $i to 0, but
1145
+        // doing so would also make the result in one set of unnecessary adds,
1146
+        // since on the outermost loops first pass, $product->value[$k] is going
1147
+        // to always be 0
1148
+
1149
+        $carry = 0;
1150
+
1151
+        for ($j = 0; $j < $x_length; ++$j) { // ie. $i = 0
1152
+            $temp = $x_value[$j] * $y_value[0] + $carry; // $product_value[$k] == 0
1153
+            $carry = (int) ($temp / 0x4000000);
1154
+            $product_value[$j] = (int) ($temp - 0x4000000 * $carry);
1155
+        }
1156
+
1157
+        $product_value[$j] = $carry;
1158
+
1159
+        // the above for loop is what the previous comment was talking about.  the
1160
+        // following for loop is the "one with nested for loops"
1161
+        for ($i = 1; $i < $y_length; ++$i) {
1162
+            $carry = 0;
1163
+
1164
+            for ($j = 0, $k = $i; $j < $x_length; ++$j, ++$k) {
1165
+                $temp = $product_value[$k] + $x_value[$j] * $y_value[$i] + $carry;
1166
+                $carry = (int) ($temp / 0x4000000);
1167
+                $product_value[$k] = (int) ($temp - 0x4000000 * $carry);
1168
+            }
1169
+
1170
+            $product_value[$k] = $carry;
1171
+        }
1172
+
1173
+        return $product_value;
1174
+    }
1175
+
1176
+    /**
1177
+     * Performs Karatsuba multiplication on two BigIntegers
1178
+     *
1179
+     * See {@link http://en.wikipedia.org/wiki/Karatsuba_algorithm Karatsuba algorithm} and
1180
+     * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=120 MPM 5.2.3}.
1181
+     *
1182
+     * @param Array $x_value
1183
+     * @param Array $y_value
1184
+     * @return Array
1185
+     * @access private
1186
+     */
1187
+    function _karatsuba($x_value, $y_value)
1188
+    {
1189
+        $m = min(count($x_value) >> 1, count($y_value) >> 1);
1190
+
1191
+        if ($m < MATH_BIGINTEGER_KARATSUBA_CUTOFF) {
1192
+            return $this->_regularMultiply($x_value, $y_value);
1193
+        }
1194
+
1195
+        $x1 = array_slice($x_value, $m);
1196
+        $x0 = array_slice($x_value, 0, $m);
1197
+        $y1 = array_slice($y_value, $m);
1198
+        $y0 = array_slice($y_value, 0, $m);
1199
+
1200
+        $z2 = $this->_karatsuba($x1, $y1);
1201
+        $z0 = $this->_karatsuba($x0, $y0);
1202
+
1203
+        $z1 = $this->_add($x1, false, $x0, false);
1204
+        $temp = $this->_add($y1, false, $y0, false);
1205
+        $z1 = $this->_karatsuba($z1[MATH_BIGINTEGER_VALUE], $temp[MATH_BIGINTEGER_VALUE]);
1206
+        $temp = $this->_add($z2, false, $z0, false);
1207
+        $z1 = $this->_subtract($z1, false, $temp[MATH_BIGINTEGER_VALUE], false);
1208
+
1209
+        $z2 = array_merge(array_fill(0, 2 * $m, 0), $z2);
1210
+        $z1[MATH_BIGINTEGER_VALUE] = array_merge(array_fill(0, $m, 0), $z1[MATH_BIGINTEGER_VALUE]);
1211
+
1212
+        $xy = $this->_add($z2, false, $z1[MATH_BIGINTEGER_VALUE], $z1[MATH_BIGINTEGER_SIGN]);
1213
+        $xy = $this->_add($xy[MATH_BIGINTEGER_VALUE], $xy[MATH_BIGINTEGER_SIGN], $z0, false);
1214
+
1215
+        return $xy[MATH_BIGINTEGER_VALUE];
1216
+    }
1217
+
1218
+    /**
1219
+     * Performs squaring
1220
+     *
1221
+     * @param Array $x
1222
+     * @return Array
1223
+     * @access private
1224
+     */
1225
+    function _square($x = false)
1226
+    {
1227
+        return count($x) < 2 * MATH_BIGINTEGER_KARATSUBA_CUTOFF ?
1228
+            $this->_trim($this->_baseSquare($x)) :
1229
+            $this->_trim($this->_karatsubaSquare($x));
1230
+    }
1231
+
1232
+    /**
1233
+     * Performs traditional squaring on two BigIntegers
1234
+     *
1235
+     * Squaring can be done faster than multiplying a number by itself can be.  See
1236
+     * {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=7 HAC 14.2.4} /
1237
+     * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=141 MPM 5.3} for more information.
1238
+     *
1239
+     * @param Array $value
1240
+     * @return Array
1241
+     * @access private
1242
+     */
1243
+    function _baseSquare($value)
1244
+    {
1245
+        if ( empty($value) ) {
1246
+            return array();
1247
+        }
1248
+        $square_value = $this->_array_repeat(0, 2 * count($value));
1249
+
1250
+        for ($i = 0, $max_index = count($value) - 1; $i <= $max_index; ++$i) {
1251
+            $i2 = $i << 1;
1252
+
1253
+            $temp = $square_value[$i2] + $value[$i] * $value[$i];
1254
+            $carry = (int) ($temp / 0x4000000);
1255
+            $square_value[$i2] = (int) ($temp - 0x4000000 * $carry);
1256
+
1257
+            // note how we start from $i+1 instead of 0 as we do in multiplication.
1258
+            for ($j = $i + 1, $k = $i2 + 1; $j <= $max_index; ++$j, ++$k) {
1259
+                $temp = $square_value[$k] + 2 * $value[$j] * $value[$i] + $carry;
1260
+                $carry = (int) ($temp / 0x4000000);
1261
+                $square_value[$k] = (int) ($temp - 0x4000000 * $carry);
1262
+            }
1263
+
1264
+            // the following line can yield values larger 2**15.  at this point, PHP should switch
1265
+            // over to floats.
1266
+            $square_value[$i + $max_index + 1] = $carry;
1267
+        }
1268
+
1269
+        return $square_value;
1270
+    }
1271
+
1272
+    /**
1273
+     * Performs Karatsuba "squaring" on two BigIntegers
1274
+     *
1275
+     * See {@link http://en.wikipedia.org/wiki/Karatsuba_algorithm Karatsuba algorithm} and
1276
+     * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=151 MPM 5.3.4}.
1277
+     *
1278
+     * @param Array $value
1279
+     * @return Array
1280
+     * @access private
1281
+     */
1282
+    function _karatsubaSquare($value)
1283
+    {
1284
+        $m = count($value) >> 1;
1285
+
1286
+        if ($m < MATH_BIGINTEGER_KARATSUBA_CUTOFF) {
1287
+            return $this->_baseSquare($value);
1288
+        }
1289
+
1290
+        $x1 = array_slice($value, $m);
1291
+        $x0 = array_slice($value, 0, $m);
1292
+
1293
+        $z2 = $this->_karatsubaSquare($x1);
1294
+        $z0 = $this->_karatsubaSquare($x0);
1295
+
1296
+        $z1 = $this->_add($x1, false, $x0, false);
1297
+        $z1 = $this->_karatsubaSquare($z1[MATH_BIGINTEGER_VALUE]);
1298
+        $temp = $this->_add($z2, false, $z0, false);
1299
+        $z1 = $this->_subtract($z1, false, $temp[MATH_BIGINTEGER_VALUE], false);
1300
+
1301
+        $z2 = array_merge(array_fill(0, 2 * $m, 0), $z2);
1302
+        $z1[MATH_BIGINTEGER_VALUE] = array_merge(array_fill(0, $m, 0), $z1[MATH_BIGINTEGER_VALUE]);
1303
+
1304
+        $xx = $this->_add($z2, false, $z1[MATH_BIGINTEGER_VALUE], $z1[MATH_BIGINTEGER_SIGN]);
1305
+        $xx = $this->_add($xx[MATH_BIGINTEGER_VALUE], $xx[MATH_BIGINTEGER_SIGN], $z0, false);
1306
+
1307
+        return $xx[MATH_BIGINTEGER_VALUE];
1308
+    }
1309
+
1310
+    /**
1311
+     * Divides two BigIntegers.
1312
+     *
1313
+     * Returns an array whose first element contains the quotient and whose second element contains the
1314
+     * "common residue".  If the remainder would be positive, the "common residue" and the remainder are the
1315
+     * same.  If the remainder would be negative, the "common residue" is equal to the sum of the remainder
1316
+     * and the divisor (basically, the "common residue" is the first positive modulo).
1317
+     *
1318
+     * Here's an example:
1319
+     * <code>
1320
+     * <?php
1321
+     *    include('Math/BigInteger.php');
1322
+     *
1323
+     *    $a = new Math_BigInteger('10');
1324
+     *    $b = new Math_BigInteger('20');
1325
+     *
1326
+     *    list($quotient, $remainder) = $a->divide($b);
1327
+     *
1328
+     *    echo $quotient->toString(); // outputs 0
1329
+     *    echo "\r\n";
1330
+     *    echo $remainder->toString(); // outputs 10
1331
+     * ?>
1332
+     * </code>
1333
+     *
1334
+     * @param Math_BigInteger $y
1335
+     * @return Array
1336
+     * @access public
1337
+     * @internal This function is based off of {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=9 HAC 14.20}.
1338
+     */
1339
+    function divide($y)
1340
+    {
1341
+        switch ( MATH_BIGINTEGER_MODE ) {
1342
+            case MATH_BIGINTEGER_MODE_GMP:
1343
+                $quotient = new Math_BigInteger();
1344
+                $remainder = new Math_BigInteger();
1345
+
1346
+                list($quotient->value, $remainder->value) = gmp_div_qr($this->value, $y->value);
1347
+
1348
+                if (gmp_sign($remainder->value) < 0) {
1349
+                    $remainder->value = gmp_add($remainder->value, gmp_abs($y->value));
1350
+                }
1351
+
1352
+                return array($this->_normalize($quotient), $this->_normalize($remainder));
1353
+            case MATH_BIGINTEGER_MODE_BCMATH:
1354
+                $quotient = new Math_BigInteger();
1355
+                $remainder = new Math_BigInteger();
1356
+
1357
+                $quotient->value = bcdiv($this->value, $y->value, 0);
1358
+                $remainder->value = bcmod($this->value, $y->value);
1359
+
1360
+                if ($remainder->value[0] == '-') {
1361
+                    $remainder->value = bcadd($remainder->value, $y->value[0] == '-' ? substr($y->value, 1) : $y->value, 0);
1362
+                }
1363
+
1364
+                return array($this->_normalize($quotient), $this->_normalize($remainder));
1365
+        }
1366
+
1367
+        if (count($y->value) == 1) {
1368
+            list($q, $r) = $this->_divide_digit($this->value, $y->value[0]);
1369
+            $quotient = new Math_BigInteger();
1370
+            $remainder = new Math_BigInteger();
1371
+            $quotient->value = $q;
1372
+            $remainder->value = array($r);
1373
+            $quotient->is_negative = $this->is_negative != $y->is_negative;
1374
+            return array($this->_normalize($quotient), $this->_normalize($remainder));
1375
+        }
1376
+
1377
+        static $zero;
1378
+        if ( !isset($zero) ) {
1379
+            $zero = new Math_BigInteger();
1380
+        }
1381
+
1382
+        $x = $this->copy();
1383
+        $y = $y->copy();
1384
+
1385
+        $x_sign = $x->is_negative;
1386
+        $y_sign = $y->is_negative;
1387
+
1388
+        $x->is_negative = $y->is_negative = false;
1389
+
1390
+        $diff = $x->compare($y);
1391
+
1392
+        if ( !$diff ) {
1393
+            $temp = new Math_BigInteger();
1394
+            $temp->value = array(1);
1395
+            $temp->is_negative = $x_sign != $y_sign;
1396
+            return array($this->_normalize($temp), $this->_normalize(new Math_BigInteger()));
1397
+        }
1398
+
1399
+        if ( $diff < 0 ) {
1400
+            // if $x is negative, "add" $y.
1401
+            if ( $x_sign ) {
1402
+                $x = $y->subtract($x);
1403
+            }
1404
+            return array($this->_normalize(new Math_BigInteger()), $this->_normalize($x));
1405
+        }
1406
+
1407
+        // normalize $x and $y as described in HAC 14.23 / 14.24
1408
+        $msb = $y->value[count($y->value) - 1];
1409
+        for ($shift = 0; !($msb & 0x2000000); ++$shift) {
1410
+            $msb <<= 1;
1411
+        }
1412
+        $x->_lshift($shift);
1413
+        $y->_lshift($shift);
1414
+        $y_value = &$y->value;
1415
+
1416
+        $x_max = count($x->value) - 1;
1417
+        $y_max = count($y->value) - 1;
1418
+
1419
+        $quotient = new Math_BigInteger();
1420
+        $quotient_value = &$quotient->value;
1421
+        $quotient_value = $this->_array_repeat(0, $x_max - $y_max + 1);
1422
+
1423
+        static $temp, $lhs, $rhs;
1424
+        if (!isset($temp)) {
1425
+            $temp = new Math_BigInteger();
1426
+            $lhs =  new Math_BigInteger();
1427
+            $rhs =  new Math_BigInteger();
1428
+        }
1429
+        $temp_value = &$temp->value;
1430
+        $rhs_value =  &$rhs->value;
1431
+
1432
+        // $temp = $y << ($x_max - $y_max-1) in base 2**26
1433
+        $temp_value = array_merge($this->_array_repeat(0, $x_max - $y_max), $y_value);
1434
+
1435
+        while ( $x->compare($temp) >= 0 ) {
1436
+            // calculate the "common residue"
1437
+            ++$quotient_value[$x_max - $y_max];
1438
+            $x = $x->subtract($temp);
1439
+            $x_max = count($x->value) - 1;
1440
+        }
1441
+
1442
+        for ($i = $x_max; $i >= $y_max + 1; --$i) {
1443
+            $x_value = &$x->value;
1444
+            $x_window = array(
1445
+                isset($x_value[$i]) ? $x_value[$i] : 0,
1446
+                isset($x_value[$i - 1]) ? $x_value[$i - 1] : 0,
1447
+                isset($x_value[$i - 2]) ? $x_value[$i - 2] : 0
1448
+            );
1449
+            $y_window = array(
1450
+                $y_value[$y_max],
1451
+                ( $y_max > 0 ) ? $y_value[$y_max - 1] : 0
1452
+            );
1453
+
1454
+            $q_index = $i - $y_max - 1;
1455
+            if ($x_window[0] == $y_window[0]) {
1456
+                $quotient_value[$q_index] = 0x3FFFFFF;
1457
+            } else {
1458
+                $quotient_value[$q_index] = (int) (
1459
+                    ($x_window[0] * 0x4000000 + $x_window[1])
1460
+                    /
1461
+                    $y_window[0]
1462
+                );
1463
+            }
1464
+
1465
+            $temp_value = array($y_window[1], $y_window[0]);
1466
+
1467
+            $lhs->value = array($quotient_value[$q_index]);
1468
+            $lhs = $lhs->multiply($temp);
1469
+
1470
+            $rhs_value = array($x_window[2], $x_window[1], $x_window[0]);
1471
+
1472
+            while ( $lhs->compare($rhs) > 0 ) {
1473
+                --$quotient_value[$q_index];
1474
+
1475
+                $lhs->value = array($quotient_value[$q_index]);
1476
+                $lhs = $lhs->multiply($temp);
1477
+            }
1478
+
1479
+            $adjust = $this->_array_repeat(0, $q_index);
1480
+            $temp_value = array($quotient_value[$q_index]);
1481
+            $temp = $temp->multiply($y);
1482
+            $temp_value = &$temp->value;
1483
+            $temp_value = array_merge($adjust, $temp_value);
1484
+
1485
+            $x = $x->subtract($temp);
1486
+
1487
+            if ($x->compare($zero) < 0) {
1488
+                $temp_value = array_merge($adjust, $y_value);
1489
+                $x = $x->add($temp);
1490
+
1491
+                --$quotient_value[$q_index];
1492
+            }
1493
+
1494
+            $x_max = count($x_value) - 1;
1495
+        }
1496
+
1497
+        // unnormalize the remainder
1498
+        $x->_rshift($shift);
1499
+
1500
+        $quotient->is_negative = $x_sign != $y_sign;
1501
+
1502
+        // calculate the "common residue", if appropriate
1503
+        if ( $x_sign ) {
1504
+            $y->_rshift($shift);
1505
+            $x = $y->subtract($x);
1506
+        }
1507
+
1508
+        return array($this->_normalize($quotient), $this->_normalize($x));
1509
+    }
1510
+
1511
+    /**
1512
+     * Divides a BigInteger by a regular integer
1513
+     *
1514
+     * abc / x = a00 / x + b0 / x + c / x
1515
+     *
1516
+     * @param Array $dividend
1517
+     * @param Array $divisor
1518
+     * @return Array
1519
+     * @access private
1520
+     */
1521
+    function _divide_digit($dividend, $divisor)
1522
+    {
1523
+        $carry = 0;
1524
+        $result = array();
1525
+
1526
+        for ($i = count($dividend) - 1; $i >= 0; --$i) {
1527
+            $temp = 0x4000000 * $carry + $dividend[$i];
1528
+            $result[$i] = (int) ($temp / $divisor);
1529
+            $carry = (int) ($temp - $divisor * $result[$i]);
1530
+        }
1531
+
1532
+        return array($result, $carry);
1533
+    }
1534
+
1535
+    /**
1536
+     * Performs modular exponentiation.
1537
+     *
1538
+     * Here's an example:
1539
+     * <code>
1540
+     * <?php
1541
+     *    include('Math/BigInteger.php');
1542
+     *
1543
+     *    $a = new Math_BigInteger('10');
1544
+     *    $b = new Math_BigInteger('20');
1545
+     *    $c = new Math_BigInteger('30');
1546
+     *
1547
+     *    $c = $a->modPow($b, $c);
1548
+     *
1549
+     *    echo $c->toString(); // outputs 10
1550
+     * ?>
1551
+     * </code>
1552
+     *
1553
+     * @param Math_BigInteger $e
1554
+     * @param Math_BigInteger $n
1555
+     * @return Math_BigInteger
1556
+     * @access public
1557
+     * @internal The most naive approach to modular exponentiation has very unreasonable requirements, and
1558
+     *    and although the approach involving repeated squaring does vastly better, it, too, is impractical
1559
+     *    for our purposes.  The reason being that division - by far the most complicated and time-consuming
1560
+     *    of the basic operations (eg. +,-,*,/) - occurs multiple times within it.
1561
+     *
1562
+     *    Modular reductions resolve this issue.  Although an individual modular reduction takes more time
1563
+     *    then an individual division, when performed in succession (with the same modulo), they're a lot faster.
1564
+     *
1565
+     *    The two most commonly used modular reductions are Barrett and Montgomery reduction.  Montgomery reduction,
1566
+     *    although faster, only works when the gcd of the modulo and of the base being used is 1.  In RSA, when the
1567
+     *    base is a power of two, the modulo - a product of two primes - is always going to have a gcd of 1 (because
1568
+     *    the product of two odd numbers is odd), but what about when RSA isn't used?
1569
+     *
1570
+     *    In contrast, Barrett reduction has no such constraint.  As such, some bigint implementations perform a
1571
+     *    Barrett reduction after every operation in the modpow function.  Others perform Barrett reductions when the
1572
+     *    modulo is even and Montgomery reductions when the modulo is odd.  BigInteger.java's modPow method, however,
1573
+     *    uses a trick involving the Chinese Remainder Theorem to factor the even modulo into two numbers - one odd and
1574
+     *    the other, a power of two - and recombine them, later.  This is the method that this modPow function uses.
1575
+     *    {@link http://islab.oregonstate.edu/papers/j34monex.pdf Montgomery Reduction with Even Modulus} elaborates.
1576
+     */
1577
+    function modPow($e, $n)
1578
+    {
1579
+        $n = $this->bitmask !== false && $this->bitmask->compare($n) < 0 ? $this->bitmask : $n->abs();
1580
+
1581
+        if ($e->compare(new Math_BigInteger()) < 0) {
1582
+            $e = $e->abs();
1583
+
1584
+            $temp = $this->modInverse($n);
1585
+            if ($temp === false) {
1586
+                return false;
1587
+            }
1588
+
1589
+            return $this->_normalize($temp->modPow($e, $n));
1590
+        }
1591
+
1592
+        switch ( MATH_BIGINTEGER_MODE ) {
1593
+            case MATH_BIGINTEGER_MODE_GMP:
1594
+                $temp = new Math_BigInteger();
1595
+                $temp->value = gmp_powm($this->value, $e->value, $n->value);
1596
+
1597
+                return $this->_normalize($temp);
1598
+            case MATH_BIGINTEGER_MODE_BCMATH:
1599
+                $temp = new Math_BigInteger();
1600
+                $temp->value = bcpowmod($this->value, $e->value, $n->value, 0);
1601
+
1602
+                return $this->_normalize($temp);
1603
+        }
1604
+
1605
+        if ( empty($e->value) ) {
1606
+            $temp = new Math_BigInteger();
1607
+            $temp->value = array(1);
1608
+            return $this->_normalize($temp);
1609
+        }
1610
+
1611
+        if ( $e->value == array(1) ) {
1612
+            list(, $temp) = $this->divide($n);
1613
+            return $this->_normalize($temp);
1614
+        }
1615
+
1616
+        if ( $e->value == array(2) ) {
1617
+            $temp = new Math_BigInteger();
1618
+            $temp->value = $this->_square($this->value);
1619
+            list(, $temp) = $temp->divide($n);
1620
+            return $this->_normalize($temp);
1621
+        }
1622
+
1623
+        return $this->_normalize($this->_slidingWindow($e, $n, MATH_BIGINTEGER_BARRETT));
1624
+
1625
+        // is the modulo odd?
1626
+        if ( $n->value[0] & 1 ) {
1627
+            return $this->_normalize($this->_slidingWindow($e, $n, MATH_BIGINTEGER_MONTGOMERY));
1628
+        }
1629
+        // if it's not, it's even
1630
+
1631
+        // find the lowest set bit (eg. the max pow of 2 that divides $n)
1632
+        for ($i = 0; $i < count($n->value); ++$i) {
1633
+            if ( $n->value[$i] ) {
1634
+                $temp = decbin($n->value[$i]);
1635
+                $j = strlen($temp) - strrpos($temp, '1') - 1;
1636
+                $j+= 26 * $i;
1637
+                break;
1638
+            }
1639
+        }
1640
+        // at this point, 2^$j * $n/(2^$j) == $n
1641
+
1642
+        $mod1 = $n->copy();
1643
+        $mod1->_rshift($j);
1644
+        $mod2 = new Math_BigInteger();
1645
+        $mod2->value = array(1);
1646
+        $mod2->_lshift($j);
1647
+
1648
+        $part1 = ( $mod1->value != array(1) ) ? $this->_slidingWindow($e, $mod1, MATH_BIGINTEGER_MONTGOMERY) : new Math_BigInteger();
1649
+        $part2 = $this->_slidingWindow($e, $mod2, MATH_BIGINTEGER_POWEROF2);
1650
+
1651
+        $y1 = $mod2->modInverse($mod1);
1652
+        $y2 = $mod1->modInverse($mod2);
1653
+
1654
+        $result = $part1->multiply($mod2);
1655
+        $result = $result->multiply($y1);
1656
+
1657
+        $temp = $part2->multiply($mod1);
1658
+        $temp = $temp->multiply($y2);
1659
+
1660
+        $result = $result->add($temp);
1661
+        list(, $result) = $result->divide($n);
1662
+
1663
+        return $this->_normalize($result);
1664
+    }
1665
+
1666
+    /**
1667
+     * Performs modular exponentiation.
1668
+     *
1669
+     * Alias for Math_BigInteger::modPow()
1670
+     *
1671
+     * @param Math_BigInteger $e
1672
+     * @param Math_BigInteger $n
1673
+     * @return Math_BigInteger
1674
+     * @access public
1675
+     */
1676
+    function powMod($e, $n)
1677
+    {
1678
+        return $this->modPow($e, $n);
1679
+    }
1680
+
1681
+    /**
1682
+     * Sliding Window k-ary Modular Exponentiation
1683
+     *
1684
+     * Based on {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=27 HAC 14.85} /
1685
+     * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=210 MPM 7.7}.  In a departure from those algorithims,
1686
+     * however, this function performs a modular reduction after every multiplication and squaring operation.
1687
+     * As such, this function has the same preconditions that the reductions being used do.
1688
+     *
1689
+     * @param Math_BigInteger $e
1690
+     * @param Math_BigInteger $n
1691
+     * @param Integer $mode
1692
+     * @return Math_BigInteger
1693
+     * @access private
1694
+     */
1695
+    function _slidingWindow($e, $n, $mode)
1696
+    {
1697
+        static $window_ranges = array(7, 25, 81, 241, 673, 1793); // from BigInteger.java's oddModPow function
1698
+        //static $window_ranges = array(0, 7, 36, 140, 450, 1303, 3529); // from MPM 7.3.1
1699
+
1700
+        $e_value = $e->value;
1701
+        $e_length = count($e_value) - 1;
1702
+        $e_bits = decbin($e_value[$e_length]);
1703
+        for ($i = $e_length - 1; $i >= 0; --$i) {
1704
+            $e_bits.= str_pad(decbin($e_value[$i]), 26, '0', STR_PAD_LEFT);
1705
+        }
1706
+
1707
+        $e_length = strlen($e_bits);
1708
+
1709
+        // calculate the appropriate window size.
1710
+        // $window_size == 3 if $window_ranges is between 25 and 81, for example.
1711
+        for ($i = 0, $window_size = 1; $e_length > $window_ranges[$i] && $i < count($window_ranges); ++$window_size, ++$i);
1712
+
1713
+        $n_value = $n->value;
1714
+
1715
+        // precompute $this^0 through $this^$window_size
1716
+        $powers = array();
1717
+        $powers[1] = $this->_prepareReduce($this->value, $n_value, $mode);
1718
+        $powers[2] = $this->_squareReduce($powers[1], $n_value, $mode);
1719
+
1720
+        // we do every other number since substr($e_bits, $i, $j+1) (see below) is supposed to end
1721
+        // in a 1.  ie. it's supposed to be odd.
1722
+        $temp = 1 << ($window_size - 1);
1723
+        for ($i = 1; $i < $temp; ++$i) {
1724
+            $i2 = $i << 1;
1725
+            $powers[$i2 + 1] = $this->_multiplyReduce($powers[$i2 - 1], $powers[2], $n_value, $mode);
1726
+        }
1727
+
1728
+        $result = array(1);
1729
+        $result = $this->_prepareReduce($result, $n_value, $mode);
1730
+
1731
+        for ($i = 0; $i < $e_length; ) {
1732
+            if ( !$e_bits[$i] ) {
1733
+                $result = $this->_squareReduce($result, $n_value, $mode);
1734
+                ++$i;
1735
+            } else {
1736
+                for ($j = $window_size - 1; $j > 0; --$j) {
1737
+                    if ( !empty($e_bits[$i + $j]) ) {
1738
+                        break;
1739
+                    }
1740
+                }
1741
+
1742
+                for ($k = 0; $k <= $j; ++$k) {// eg. the length of substr($e_bits, $i, $j+1)
1743
+                    $result = $this->_squareReduce($result, $n_value, $mode);
1744
+                }
1745
+
1746
+                $result = $this->_multiplyReduce($result, $powers[bindec(substr($e_bits, $i, $j + 1))], $n_value, $mode);
1747
+
1748
+                $i+=$j + 1;
1749
+            }
1750
+        }
1751
+
1752
+        $temp = new Math_BigInteger();
1753
+        $temp->value = $this->_reduce($result, $n_value, $mode);
1754
+
1755
+        return $temp;
1756
+    }
1757
+
1758
+    /**
1759
+     * Modular reduction
1760
+     *
1761
+     * For most $modes this will return the remainder.
1762
+     *
1763
+     * @see _slidingWindow()
1764
+     * @access private
1765
+     * @param Array $x
1766
+     * @param Array $n
1767
+     * @param Integer $mode
1768
+     * @return Array
1769
+     */
1770
+    function _reduce($x, $n, $mode)
1771
+    {
1772
+        switch ($mode) {
1773
+            case MATH_BIGINTEGER_MONTGOMERY:
1774
+                return $this->_montgomery($x, $n);
1775
+            case MATH_BIGINTEGER_BARRETT:
1776
+                return $this->_barrett($x, $n);
1777
+            case MATH_BIGINTEGER_POWEROF2:
1778
+                $lhs = new Math_BigInteger();
1779
+                $lhs->value = $x;
1780
+                $rhs = new Math_BigInteger();
1781
+                $rhs->value = $n;
1782
+                return $x->_mod2($n);
1783
+            case MATH_BIGINTEGER_CLASSIC:
1784
+                $lhs = new Math_BigInteger();
1785
+                $lhs->value = $x;
1786
+                $rhs = new Math_BigInteger();
1787
+                $rhs->value = $n;
1788
+                list(, $temp) = $lhs->divide($rhs);
1789
+                return $temp->value;
1790
+            case MATH_BIGINTEGER_NONE:
1791
+                return $x;
1792
+            default:
1793
+                // an invalid $mode was provided
1794
+        }
1795
+    }
1796
+
1797
+    /**
1798
+     * Modular reduction preperation
1799
+     *
1800
+     * @see _slidingWindow()
1801
+     * @access private
1802
+     * @param Array $x
1803
+     * @param Array $n
1804
+     * @param Integer $mode
1805
+     * @return Array
1806
+     */
1807
+    function _prepareReduce($x, $n, $mode)
1808
+    {
1809
+        if ($mode == MATH_BIGINTEGER_MONTGOMERY) {
1810
+            return $this->_prepMontgomery($x, $n);
1811
+        }
1812
+        return $this->_reduce($x, $n, $mode);
1813
+    }
1814
+
1815
+    /**
1816
+     * Modular multiply
1817
+     *
1818
+     * @see _slidingWindow()
1819
+     * @access private
1820
+     * @param Array $x
1821
+     * @param Array $y
1822
+     * @param Array $n
1823
+     * @param Integer $mode
1824
+     * @return Array
1825
+     */
1826
+    function _multiplyReduce($x, $y, $n, $mode)
1827
+    {
1828
+        if ($mode == MATH_BIGINTEGER_MONTGOMERY) {
1829
+            return $this->_montgomeryMultiply($x, $y, $n);
1830
+        }
1831
+        $temp = $this->_multiply($x, false, $y, false);
1832
+        return $this->_reduce($temp[MATH_BIGINTEGER_VALUE], $n, $mode);
1833
+    }
1834
+
1835
+    /**
1836
+     * Modular square
1837
+     *
1838
+     * @see _slidingWindow()
1839
+     * @access private
1840
+     * @param Array $x
1841
+     * @param Array $n
1842
+     * @param Integer $mode
1843
+     * @return Array
1844
+     */
1845
+    function _squareReduce($x, $n, $mode)
1846
+    {
1847
+        if ($mode == MATH_BIGINTEGER_MONTGOMERY) {
1848
+            return $this->_montgomeryMultiply($x, $x, $n);
1849
+        }
1850
+        return $this->_reduce($this->_square($x), $n, $mode);
1851
+    }
1852
+
1853
+    /**
1854
+     * Modulos for Powers of Two
1855
+     *
1856
+     * Calculates $x%$n, where $n = 2**$e, for some $e.  Since this is basically the same as doing $x & ($n-1),
1857
+     * we'll just use this function as a wrapper for doing that.
1858
+     *
1859
+     * @see _slidingWindow()
1860
+     * @access private
1861
+     * @param Math_BigInteger
1862
+     * @return Math_BigInteger
1863
+     */
1864
+    function _mod2($n)
1865
+    {
1866
+        $temp = new Math_BigInteger();
1867
+        $temp->value = array(1);
1868
+        return $this->bitwise_and($n->subtract($temp));
1869
+    }
1870
+
1871
+    /**
1872
+     * Barrett Modular Reduction
1873
+     *
1874
+     * See {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=14 HAC 14.3.3} /
1875
+     * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=165 MPM 6.2.5} for more information.  Modified slightly,
1876
+     * so as not to require negative numbers (initially, this script didn't support negative numbers).
1877
+     *
1878
+     * Employs "folding", as described at
1879
+     * {@link http://www.cosic.esat.kuleuven.be/publications/thesis-149.pdf#page=66 thesis-149.pdf#page=66}.  To quote from
1880
+     * it, "the idea [behind folding] is to find a value x' such that x (mod m) = x' (mod m), with x' being smaller than x."
1881
+     *
1882
+     * Unfortunately, the "Barrett Reduction with Folding" algorithm described in thesis-149.pdf is not, as written, all that
1883
+     * usable on account of (1) its not using reasonable radix points as discussed in
1884
+     * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=162 MPM 6.2.2} and (2) the fact that, even with reasonable
1885
+     * radix points, it only works when there are an even number of digits in the denominator.  The reason for (2) is that
1886
+     * (x >> 1) + (x >> 1) != x / 2 + x / 2.  If x is even, they're the same, but if x is odd, they're not.  See the in-line
1887
+     * comments for details.
1888
+     *
1889
+     * @see _slidingWindow()
1890
+     * @access private
1891
+     * @param Array $n
1892
+     * @param Array $m
1893
+     * @return Array
1894
+     */
1895
+    function _barrett($n, $m)
1896
+    {
1897
+        static $cache = array(
1898
+            MATH_BIGINTEGER_VARIABLE => array(),
1899
+            MATH_BIGINTEGER_DATA => array()
1900
+        );
1901
+
1902
+        $m_length = count($m);
1903
+
1904
+        // if ($this->_compare($n, $this->_square($m)) >= 0) {
1905
+        if (count($n) > 2 * $m_length) {
1906
+            $lhs = new Math_BigInteger();
1907
+            $rhs = new Math_BigInteger();
1908
+            $lhs->value = $n;
1909
+            $rhs->value = $m;
1910
+            list(, $temp) = $lhs->divide($rhs);
1911
+            return $temp->value;
1912
+        }
1913
+
1914
+        // if (m.length >> 1) + 2 <= m.length then m is too small and n can't be reduced
1915
+        if ($m_length < 5) {
1916
+            return $this->_regularBarrett($n, $m);
1917
+        }
1918
+
1919
+        // n = 2 * m.length
1920
+
1921
+        if ( ($key = array_search($m, $cache[MATH_BIGINTEGER_VARIABLE])) === false ) {
1922
+            $key = count($cache[MATH_BIGINTEGER_VARIABLE]);
1923
+            $cache[MATH_BIGINTEGER_VARIABLE][] = $m;
1924
+
1925
+            $lhs = new Math_BigInteger();
1926
+            $lhs_value = &$lhs->value;
1927
+            $lhs_value = $this->_array_repeat(0, $m_length + ($m_length >> 1));
1928
+            $lhs_value[] = 1;
1929
+            $rhs = new Math_BigInteger();
1930
+            $rhs->value = $m;
1931
+
1932
+            list($u, $m1) = $lhs->divide($rhs);
1933
+            $u = $u->value;
1934
+            $m1 = $m1->value;
1935
+
1936
+            $cache[MATH_BIGINTEGER_DATA][] = array(
1937
+                'u' => $u, // m.length >> 1 (technically (m.length >> 1) + 1)
1938
+                'm1'=> $m1 // m.length
1939
+            );
1940
+        } else {
1941
+            extract($cache[MATH_BIGINTEGER_DATA][$key]);
1942
+        }
1943
+
1944
+        $cutoff = $m_length + ($m_length >> 1);
1945
+        $lsd = array_slice($n, 0, $cutoff); // m.length + (m.length >> 1)
1946
+        $msd = array_slice($n, $cutoff);    // m.length >> 1
1947
+        $lsd = $this->_trim($lsd);
1948
+        $temp = $this->_multiply($msd, false, $m1, false);
1949
+        $n = $this->_add($lsd, false, $temp[MATH_BIGINTEGER_VALUE], false); // m.length + (m.length >> 1) + 1
1950
+
1951
+        if ($m_length & 1) {
1952
+            return $this->_regularBarrett($n[MATH_BIGINTEGER_VALUE], $m);
1953
+        }
1954
+
1955
+        // (m.length + (m.length >> 1) + 1) - (m.length - 1) == (m.length >> 1) + 2
1956
+        $temp = array_slice($n[MATH_BIGINTEGER_VALUE], $m_length - 1);
1957
+        // if even: ((m.length >> 1) + 2) + (m.length >> 1) == m.length + 2
1958
+        // if odd:  ((m.length >> 1) + 2) + (m.length >> 1) == (m.length - 1) + 2 == m.length + 1
1959
+        $temp = $this->_multiply($temp, false, $u, false);
1960
+        // if even: (m.length + 2) - ((m.length >> 1) + 1) = m.length - (m.length >> 1) + 1
1961
+        // if odd:  (m.length + 1) - ((m.length >> 1) + 1) = m.length - (m.length >> 1)
1962
+        $temp = array_slice($temp[MATH_BIGINTEGER_VALUE], ($m_length >> 1) + 1);
1963
+        // if even: (m.length - (m.length >> 1) + 1) + m.length = 2 * m.length - (m.length >> 1) + 1
1964
+        // if odd:  (m.length - (m.length >> 1)) + m.length     = 2 * m.length - (m.length >> 1)
1965
+        $temp = $this->_multiply($temp, false, $m, false);
1966
+
1967
+        // at this point, if m had an odd number of digits, we'd be subtracting a 2 * m.length - (m.length >> 1) digit
1968
+        // number from a m.length + (m.length >> 1) + 1 digit number.  ie. there'd be an extra digit and the while loop
1969
+        // following this comment would loop a lot (hence our calling _regularBarrett() in that situation).
1970
+
1971
+        $result = $this->_subtract($n[MATH_BIGINTEGER_VALUE], false, $temp[MATH_BIGINTEGER_VALUE], false);
1972
+
1973
+        while ($this->_compare($result[MATH_BIGINTEGER_VALUE], $result[MATH_BIGINTEGER_SIGN], $m, false) >= 0) {
1974
+            $result = $this->_subtract($result[MATH_BIGINTEGER_VALUE], $result[MATH_BIGINTEGER_SIGN], $m, false);
1975
+        }
1976
+
1977
+        return $result[MATH_BIGINTEGER_VALUE];
1978
+    }
1979
+
1980
+    /**
1981
+     * (Regular) Barrett Modular Reduction
1982
+     *
1983
+     * For numbers with more than four digits Math_BigInteger::_barrett() is faster.  The difference between that and this
1984
+     * is that this function does not fold the denominator into a smaller form.
1985
+     *
1986
+     * @see _slidingWindow()
1987
+     * @access private
1988
+     * @param Array $x
1989
+     * @param Array $n
1990
+     * @return Array
1991
+     */
1992
+    function _regularBarrett($x, $n)
1993
+    {
1994
+        static $cache = array(
1995
+            MATH_BIGINTEGER_VARIABLE => array(),
1996
+            MATH_BIGINTEGER_DATA => array()
1997
+        );
1998
+
1999
+        $n_length = count($n);
2000
+
2001
+        if (count($x) > 2 * $n_length) {
2002
+            $lhs = new Math_BigInteger();
2003
+            $rhs = new Math_BigInteger();
2004
+            $lhs->value = $x;
2005
+            $rhs->value = $n;
2006
+            list(, $temp) = $lhs->divide($rhs);
2007
+            return $temp->value;
2008
+        }
2009
+
2010
+        if ( ($key = array_search($n, $cache[MATH_BIGINTEGER_VARIABLE])) === false ) {
2011
+            $key = count($cache[MATH_BIGINTEGER_VARIABLE]);
2012
+            $cache[MATH_BIGINTEGER_VARIABLE][] = $n;
2013
+            $lhs = new Math_BigInteger();
2014
+            $lhs_value = &$lhs->value;
2015
+            $lhs_value = $this->_array_repeat(0, 2 * $n_length);
2016
+            $lhs_value[] = 1;
2017
+            $rhs = new Math_BigInteger();
2018
+            $rhs->value = $n;
2019
+            list($temp, ) = $lhs->divide($rhs); // m.length
2020
+            $cache[MATH_BIGINTEGER_DATA][] = $temp->value;
2021
+        }
2022
+
2023
+        // 2 * m.length - (m.length - 1) = m.length + 1
2024
+        $temp = array_slice($x, $n_length - 1);
2025
+        // (m.length + 1) + m.length = 2 * m.length + 1
2026
+        $temp = $this->_multiply($temp, false, $cache[MATH_BIGINTEGER_DATA][$key], false);
2027
+        // (2 * m.length + 1) - (m.length - 1) = m.length + 2
2028
+        $temp = array_slice($temp[MATH_BIGINTEGER_VALUE], $n_length + 1);
2029
+
2030
+        // m.length + 1
2031
+        $result = array_slice($x, 0, $n_length + 1);
2032
+        // m.length + 1
2033
+        $temp = $this->_multiplyLower($temp, false, $n, false, $n_length + 1);
2034
+        // $temp == array_slice($temp->_multiply($temp, false, $n, false)->value, 0, $n_length + 1)
2035
+
2036
+        if ($this->_compare($result, false, $temp[MATH_BIGINTEGER_VALUE], $temp[MATH_BIGINTEGER_SIGN]) < 0) {
2037
+            $corrector_value = $this->_array_repeat(0, $n_length + 1);
2038
+            $corrector_value[] = 1;
2039
+            $result = $this->_add($result, false, $corrector, false);
2040
+            $result = $result[MATH_BIGINTEGER_VALUE];
2041
+        }
2042
+
2043
+        // at this point, we're subtracting a number with m.length + 1 digits from another number with m.length + 1 digits
2044
+        $result = $this->_subtract($result, false, $temp[MATH_BIGINTEGER_VALUE], $temp[MATH_BIGINTEGER_SIGN]);
2045
+        while ($this->_compare($result[MATH_BIGINTEGER_VALUE], $result[MATH_BIGINTEGER_SIGN], $n, false) > 0) {
2046
+            $result = $this->_subtract($result[MATH_BIGINTEGER_VALUE], $result[MATH_BIGINTEGER_SIGN], $n, false);
2047
+        }
2048
+
2049
+        return $result[MATH_BIGINTEGER_VALUE];
2050
+    }
2051
+
2052
+    /**
2053
+     * Performs long multiplication up to $stop digits
2054
+     *
2055
+     * If you're going to be doing array_slice($product->value, 0, $stop), some cycles can be saved.
2056
+     *
2057
+     * @see _regularBarrett()
2058
+     * @param Array $x_value
2059
+     * @param Boolean $x_negative
2060
+     * @param Array $y_value
2061
+     * @param Boolean $y_negative
2062
+     * @return Array
2063
+     * @access private
2064
+     */
2065
+    function _multiplyLower($x_value, $x_negative, $y_value, $y_negative, $stop)
2066
+    {
2067
+        $x_length = count($x_value);
2068
+        $y_length = count($y_value);
2069
+
2070
+        if ( !$x_length || !$y_length ) { // a 0 is being multiplied
2071
+            return array(
2072
+                MATH_BIGINTEGER_VALUE => array(),
2073
+                MATH_BIGINTEGER_SIGN => false
2074
+            );
2075
+        }
2076
+
2077
+        if ( $x_length < $y_length ) {
2078
+            $temp = $x_value;
2079
+            $x_value = $y_value;
2080
+            $y_value = $temp;
2081
+
2082
+            $x_length = count($x_value);
2083
+            $y_length = count($y_value);
2084
+        }
2085
+
2086
+        $product_value = $this->_array_repeat(0, $x_length + $y_length);
2087
+
2088
+        // the following for loop could be removed if the for loop following it
2089
+        // (the one with nested for loops) initially set $i to 0, but
2090
+        // doing so would also make the result in one set of unnecessary adds,
2091
+        // since on the outermost loops first pass, $product->value[$k] is going
2092
+        // to always be 0
2093
+
2094
+        $carry = 0;
2095
+
2096
+        for ($j = 0; $j < $x_length; ++$j) { // ie. $i = 0, $k = $i
2097
+            $temp = $x_value[$j] * $y_value[0] + $carry; // $product_value[$k] == 0
2098
+            $carry = (int) ($temp / 0x4000000);
2099
+            $product_value[$j] = (int) ($temp - 0x4000000 * $carry);
2100
+        }
2101
+
2102
+        if ($j < $stop) {
2103
+            $product_value[$j] = $carry;
2104
+        }
2105
+
2106
+        // the above for loop is what the previous comment was talking about.  the
2107
+        // following for loop is the "one with nested for loops"
2108
+
2109
+        for ($i = 1; $i < $y_length; ++$i) {
2110
+            $carry = 0;
2111
+
2112
+            for ($j = 0, $k = $i; $j < $x_length && $k < $stop; ++$j, ++$k) {
2113
+                $temp = $product_value[$k] + $x_value[$j] * $y_value[$i] + $carry;
2114
+                $carry = (int) ($temp / 0x4000000);
2115
+                $product_value[$k] = (int) ($temp - 0x4000000 * $carry);
2116
+            }
2117
+
2118
+            if ($k < $stop) {
2119
+                $product_value[$k] = $carry;
2120
+            }
2121
+        }
2122
+
2123
+        return array(
2124
+            MATH_BIGINTEGER_VALUE => $this->_trim($product_value),
2125
+            MATH_BIGINTEGER_SIGN => $x_negative != $y_negative
2126
+        );
2127
+    }
2128
+
2129
+    /**
2130
+     * Montgomery Modular Reduction
2131
+     *
2132
+     * ($x->_prepMontgomery($n))->_montgomery($n) yields $x % $n.
2133
+     * {@link http://math.libtomcrypt.com/files/tommath.pdf#page=170 MPM 6.3} provides insights on how this can be
2134
+     * improved upon (basically, by using the comba method).  gcd($n, 2) must be equal to one for this function
2135
+     * to work correctly.
2136
+     *
2137
+     * @see _prepMontgomery()
2138
+     * @see _slidingWindow()
2139
+     * @access private
2140
+     * @param Array $x
2141
+     * @param Array $n
2142
+     * @return Array
2143
+     */
2144
+    function _montgomery($x, $n)
2145
+    {
2146
+        static $cache = array(
2147
+            MATH_BIGINTEGER_VARIABLE => array(),
2148
+            MATH_BIGINTEGER_DATA => array()
2149
+        );
2150
+
2151
+        if ( ($key = array_search($n, $cache[MATH_BIGINTEGER_VARIABLE])) === false ) {
2152
+            $key = count($cache[MATH_BIGINTEGER_VARIABLE]);
2153
+            $cache[MATH_BIGINTEGER_VARIABLE][] = $x;
2154
+            $cache[MATH_BIGINTEGER_DATA][] = $this->_modInverse67108864($n);
2155
+        }
2156
+
2157
+        $k = count($n);
2158
+
2159
+        $result = array(MATH_BIGINTEGER_VALUE => $x);
2160
+
2161
+        for ($i = 0; $i < $k; ++$i) {
2162
+            $temp = $result[MATH_BIGINTEGER_VALUE][$i] * $cache[MATH_BIGINTEGER_DATA][$key];
2163
+            $temp = (int) ($temp - 0x4000000 * ((int) ($temp / 0x4000000)));
2164
+            $temp = $this->_regularMultiply(array($temp), $n);
2165
+            $temp = array_merge($this->_array_repeat(0, $i), $temp);
2166
+            $result = $this->_add($result[MATH_BIGINTEGER_VALUE], false, $temp, false);
2167
+        }
2168
+
2169
+        $result[MATH_BIGINTEGER_VALUE] = array_slice($result[MATH_BIGINTEGER_VALUE], $k);
2170
+
2171
+        if ($this->_compare($result, false, $n, false) >= 0) {
2172
+            $result = $this->_subtract($result[MATH_BIGINTEGER_VALUE], false, $n, false);
2173
+        }
2174
+
2175
+        return $result[MATH_BIGINTEGER_VALUE];
2176
+    }
2177
+
2178
+    /**
2179
+     * Montgomery Multiply
2180
+     *
2181
+     * Interleaves the montgomery reduction and long multiplication algorithms together as described in 
2182
+     * {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=13 HAC 14.36}
2183
+     *
2184
+     * @see _prepMontgomery()
2185
+     * @see _montgomery()
2186
+     * @access private
2187
+     * @param Array $x
2188
+     * @param Array $y
2189
+     * @param Array $m
2190
+     * @return Array
2191
+     */
2192
+    function _montgomeryMultiply($x, $y, $m)
2193
+    {
2194
+        $temp = $this->_multiply($x, false, $y, false);
2195
+        return $this->_montgomery($temp[MATH_BIGINTEGER_VALUE], $m);
2196
+
2197
+        static $cache = array(
2198
+            MATH_BIGINTEGER_VARIABLE => array(),
2199
+            MATH_BIGINTEGER_DATA => array()
2200
+        );
2201
+
2202
+        if ( ($key = array_search($m, $cache[MATH_BIGINTEGER_VARIABLE])) === false ) {
2203
+            $key = count($cache[MATH_BIGINTEGER_VARIABLE]);
2204
+            $cache[MATH_BIGINTEGER_VARIABLE][] = $m;
2205
+            $cache[MATH_BIGINTEGER_DATA][] = $this->_modInverse67108864($m);
2206
+        }
2207
+
2208
+        $n = max(count($x), count($y), count($m));
2209
+        $x = array_pad($x, $n, 0);
2210
+        $y = array_pad($y, $n, 0);
2211
+        $m = array_pad($m, $n, 0);
2212
+        $a = array(MATH_BIGINTEGER_VALUE => $this->_array_repeat(0, $n + 1));
2213
+        for ($i = 0; $i < $n; ++$i) {
2214
+            $temp = $a[MATH_BIGINTEGER_VALUE][0] + $x[$i] * $y[0];
2215
+            $temp = (int) ($temp - 0x4000000 * ((int) ($temp / 0x4000000)));
2216
+            $temp = $temp * $cache[MATH_BIGINTEGER_DATA][$key];
2217
+            $temp = (int) ($temp - 0x4000000 * ((int) ($temp / 0x4000000)));
2218
+            $temp = $this->_add($this->_regularMultiply(array($x[$i]), $y), false, $this->_regularMultiply(array($temp), $m), false);
2219
+            $a = $this->_add($a[MATH_BIGINTEGER_VALUE], false, $temp[MATH_BIGINTEGER_VALUE], false);
2220
+            $a[MATH_BIGINTEGER_VALUE] = array_slice($a[MATH_BIGINTEGER_VALUE], 1);
2221
+        }
2222
+        if ($this->_compare($a[MATH_BIGINTEGER_VALUE], false, $m, false) >= 0) {
2223
+            $a = $this->_subtract($a[MATH_BIGINTEGER_VALUE], false, $m, false);
2224
+        }
2225
+        return $a[MATH_BIGINTEGER_VALUE];
2226
+    }
2227
+
2228
+    /**
2229
+     * Prepare a number for use in Montgomery Modular Reductions
2230
+     *
2231
+     * @see _montgomery()
2232
+     * @see _slidingWindow()
2233
+     * @access private
2234
+     * @param Array $x
2235
+     * @param Array $n
2236
+     * @return Array
2237
+     */
2238
+    function _prepMontgomery($x, $n)
2239
+    {
2240
+        $lhs = new Math_BigInteger();
2241
+        $lhs->value = array_merge($this->_array_repeat(0, count($n)), $x);
2242
+        $rhs = new Math_BigInteger();
2243
+        $rhs->value = $n;
2244
+
2245
+        list(, $temp) = $lhs->divide($rhs);
2246
+        return $temp->value;
2247
+    }
2248
+
2249
+    /**
2250
+     * Modular Inverse of a number mod 2**26 (eg. 67108864)
2251
+     *
2252
+     * Based off of the bnpInvDigit function implemented and justified in the following URL:
2253
+     *
2254
+     * {@link http://www-cs-students.stanford.edu/~tjw/jsbn/jsbn.js}
2255
+     *
2256
+     * The following URL provides more info:
2257
+     *
2258
+     * {@link http://groups.google.com/group/sci.crypt/msg/7a137205c1be7d85}
2259
+     *
2260
+     * As for why we do all the bitmasking...  strange things can happen when converting from floats to ints. For
2261
+     * instance, on some computers, var_dump((int) -4294967297) yields int(-1) and on others, it yields 
2262
+     * int(-2147483648).  To avoid problems stemming from this, we use bitmasks to guarantee that ints aren't
2263
+     * auto-converted to floats.  The outermost bitmask is present because without it, there's no guarantee that
2264
+     * the "residue" returned would be the so-called "common residue".  We use fmod, in the last step, because the
2265
+     * maximum possible $x is 26 bits and the maximum $result is 16 bits.  Thus, we have to be able to handle up to
2266
+     * 40 bits, which only 64-bit floating points will support.
2267
+     *
2268
+     * Thanks to Pedro Gimeno Fortea for input!
2269
+     *
2270
+     * @see _montgomery()
2271
+     * @access private
2272
+     * @param Array $x
2273
+     * @return Integer
2274
+     */
2275
+    function _modInverse67108864($x) // 2**26 == 67108864
2276
+    {
2277
+        $x = -$x[0];
2278
+        $result = $x & 0x3; // x**-1 mod 2**2
2279
+        $result = ($result * (2 - $x * $result)) & 0xF; // x**-1 mod 2**4
2280
+        $result = ($result * (2 - ($x & 0xFF) * $result))  & 0xFF; // x**-1 mod 2**8
2281
+        $result = ($result * ((2 - ($x & 0xFFFF) * $result) & 0xFFFF)) & 0xFFFF; // x**-1 mod 2**16
2282
+        $result = fmod($result * (2 - fmod($x * $result, 0x4000000)), 0x4000000); // x**-1 mod 2**26
2283
+        return $result & 0x3FFFFFF;
2284
+    }
2285
+
2286
+    /**
2287
+     * Calculates modular inverses.
2288
+     *
2289
+     * Say you have (30 mod 17 * x mod 17) mod 17 == 1.  x can be found using modular inverses.
2290
+     *
2291
+     * Here's an example:
2292
+     * <code>
2293
+     * <?php
2294
+     *    include('Math/BigInteger.php');
2295
+     *
2296
+     *    $a = new Math_BigInteger(30);
2297
+     *    $b = new Math_BigInteger(17);
2298
+     *
2299
+     *    $c = $a->modInverse($b);
2300
+     *    echo $c->toString(); // outputs 4
2301
+     *
2302
+     *    echo "\r\n";
2303
+     *
2304
+     *    $d = $a->multiply($c);
2305
+     *    list(, $d) = $d->divide($b);
2306
+     *    echo $d; // outputs 1 (as per the definition of modular inverse)
2307
+     * ?>
2308
+     * </code>
2309
+     *
2310
+     * @param Math_BigInteger $n
2311
+     * @return mixed false, if no modular inverse exists, Math_BigInteger, otherwise.
2312
+     * @access public
2313
+     * @internal See {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=21 HAC 14.64} for more information.
2314
+     */
2315
+    function modInverse($n)
2316
+    {
2317
+        switch ( MATH_BIGINTEGER_MODE ) {
2318
+            case MATH_BIGINTEGER_MODE_GMP:
2319
+                $temp = new Math_BigInteger();
2320
+                $temp->value = gmp_invert($this->value, $n->value);
2321
+
2322
+                return ( $temp->value === false ) ? false : $this->_normalize($temp);
2323
+        }
2324
+
2325
+        static $zero, $one;
2326
+        if (!isset($zero)) {
2327
+            $zero = new Math_BigInteger();
2328
+            $one = new Math_BigInteger(1);
2329
+        }
2330
+
2331
+        // $x mod $n == $x mod -$n.
2332
+        $n = $n->abs();
2333
+
2334
+        if ($this->compare($zero) < 0) {
2335
+            $temp = $this->abs();
2336
+            $temp = $temp->modInverse($n);
2337
+            return $negated === false ? false : $this->_normalize($n->subtract($temp));
2338
+        }
2339
+
2340
+        extract($this->extendedGCD($n));
2341
+
2342
+        if (!$gcd->equals($one)) {
2343
+            return false;
2344
+        }
2345
+
2346
+        $x = $x->compare($zero) < 0 ? $x->add($n) : $x;
2347
+
2348
+        return $this->compare($zero) < 0 ? $this->_normalize($n->subtract($x)) : $this->_normalize($x);
2349
+    }
2350
+
2351
+    /**
2352
+     * Calculates the greatest common divisor and B�zout's identity.
2353
+     *
2354
+     * Say you have 693 and 609.  The GCD is 21.  B�zout's identity states that there exist integers x and y such that
2355
+     * 693*x + 609*y == 21.  In point of fact, there are actually an infinite number of x and y combinations and which
2356
+     * combination is returned is dependant upon which mode is in use.  See
2357
+     * {@link http://en.wikipedia.org/wiki/B%C3%A9zout%27s_identity B�zout's identity - Wikipedia} for more information.
2358
+     *
2359
+     * Here's an example:
2360
+     * <code>
2361
+     * <?php
2362
+     *    include('Math/BigInteger.php');
2363
+     *
2364
+     *    $a = new Math_BigInteger(693);
2365
+     *    $b = new Math_BigInteger(609);
2366
+     *
2367
+     *    extract($a->extendedGCD($b));
2368
+     *
2369
+     *    echo $gcd->toString() . "\r\n"; // outputs 21
2370
+     *    echo $a->toString() * $x->toString() + $b->toString() * $y->toString(); // outputs 21
2371
+     * ?>
2372
+     * </code>
2373
+     *
2374
+     * @param Math_BigInteger $n
2375
+     * @return Math_BigInteger
2376
+     * @access public
2377
+     * @internal Calculates the GCD using the binary xGCD algorithim described in
2378
+     *    {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf#page=19 HAC 14.61}.  As the text above 14.61 notes,
2379
+     *    the more traditional algorithim requires "relatively costly multiple-precision divisions".
2380
+     */
2381
+    function extendedGCD($n)
2382
+    {
2383
+        switch ( MATH_BIGINTEGER_MODE ) {
2384
+            case MATH_BIGINTEGER_MODE_GMP:
2385
+                extract(gmp_gcdext($this->value, $n->value));
2386
+
2387
+                return array(
2388
+                    'gcd' => $this->_normalize(new Math_BigInteger($g)),
2389
+                    'x'   => $this->_normalize(new Math_BigInteger($s)),
2390
+                    'y'   => $this->_normalize(new Math_BigInteger($t))
2391
+                );
2392
+            case MATH_BIGINTEGER_MODE_BCMATH:
2393
+                // it might be faster to use the binary xGCD algorithim here, as well, but (1) that algorithim works
2394
+                // best when the base is a power of 2 and (2) i don't think it'd make much difference, anyway.  as is,
2395
+                // the basic extended euclidean algorithim is what we're using.
2396
+
2397
+                $u = $this->value;
2398
+                $v = $n->value;
2399
+
2400
+                $a = '1';
2401
+                $b = '0';
2402
+                $c = '0';
2403
+                $d = '1';
2404
+
2405
+                while (bccomp($v, '0', 0) != 0) {
2406
+                    $q = bcdiv($u, $v, 0);
2407
+
2408
+                    $temp = $u;
2409
+                    $u = $v;
2410
+                    $v = bcsub($temp, bcmul($v, $q, 0), 0);
2411
+
2412
+                    $temp = $a;
2413
+                    $a = $c;
2414
+                    $c = bcsub($temp, bcmul($a, $q, 0), 0);
2415
+
2416
+                    $temp = $b;
2417
+                    $b = $d;
2418
+                    $d = bcsub($temp, bcmul($b, $q, 0), 0);
2419
+                }
2420
+
2421
+                return array(
2422
+                    'gcd' => $this->_normalize(new Math_BigInteger($u)),
2423
+                    'x'   => $this->_normalize(new Math_BigInteger($a)),
2424
+                    'y'   => $this->_normalize(new Math_BigInteger($b))
2425
+                );
2426
+        }
2427
+
2428
+        $y = $n->copy();
2429
+        $x = $this->copy();
2430
+        $g = new Math_BigInteger();
2431
+        $g->value = array(1);
2432
+
2433
+        while ( !(($x->value[0] & 1)|| ($y->value[0] & 1)) ) {
2434
+            $x->_rshift(1);
2435
+            $y->_rshift(1);
2436
+            $g->_lshift(1);
2437
+        }
2438
+
2439
+        $u = $x->copy();
2440
+        $v = $y->copy();
2441
+
2442
+        $a = new Math_BigInteger();
2443
+        $b = new Math_BigInteger();
2444
+        $c = new Math_BigInteger();
2445
+        $d = new Math_BigInteger();
2446
+
2447
+        $a->value = $d->value = $g->value = array(1);
2448
+        $b->value = $c->value = array();
2449
+
2450
+        while ( !empty($u->value) ) {
2451
+            while ( !($u->value[0] & 1) ) {
2452
+                $u->_rshift(1);
2453
+                if ( (!empty($a->value) && ($a->value[0] & 1)) || (!empty($b->value) && ($b->value[0] & 1)) ) {
2454
+                    $a = $a->add($y);
2455
+                    $b = $b->subtract($x);
2456
+                }
2457
+                $a->_rshift(1);
2458
+                $b->_rshift(1);
2459
+            }
2460
+
2461
+            while ( !($v->value[0] & 1) ) {
2462
+                $v->_rshift(1);
2463
+                if ( (!empty($d->value) && ($d->value[0] & 1)) || (!empty($c->value) && ($c->value[0] & 1)) ) {
2464
+                    $c = $c->add($y);
2465
+                    $d = $d->subtract($x);
2466
+                }
2467
+                $c->_rshift(1);
2468
+                $d->_rshift(1);
2469
+            }
2470
+
2471
+            if ($u->compare($v) >= 0) {
2472
+                $u = $u->subtract($v);
2473
+                $a = $a->subtract($c);
2474
+                $b = $b->subtract($d);
2475
+            } else {
2476
+                $v = $v->subtract($u);
2477
+                $c = $c->subtract($a);
2478
+                $d = $d->subtract($b);
2479
+            }
2480
+        }
2481
+
2482
+        return array(
2483
+            'gcd' => $this->_normalize($g->multiply($v)),
2484
+            'x'   => $this->_normalize($c),
2485
+            'y'   => $this->_normalize($d)
2486
+        );
2487
+    }
2488
+
2489
+    /**
2490
+     * Calculates the greatest common divisor
2491
+     *
2492
+     * Say you have 693 and 609.  The GCD is 21.
2493
+     *
2494
+     * Here's an example:
2495
+     * <code>
2496
+     * <?php
2497
+     *    include('Math/BigInteger.php');
2498
+     *
2499
+     *    $a = new Math_BigInteger(693);
2500
+     *    $b = new Math_BigInteger(609);
2501
+     *
2502
+     *    $gcd = a->extendedGCD($b);
2503
+     *
2504
+     *    echo $gcd->toString() . "\r\n"; // outputs 21
2505
+     * ?>
2506
+     * </code>
2507
+     *
2508
+     * @param Math_BigInteger $n
2509
+     * @return Math_BigInteger
2510
+     * @access public
2511
+     */
2512
+    function gcd($n)
2513
+    {
2514
+        extract($this->extendedGCD($n));
2515
+        return $gcd;
2516
+    }
2517
+
2518
+    /**
2519
+     * Absolute value.
2520
+     *
2521
+     * @return Math_BigInteger
2522
+     * @access public
2523
+     */
2524
+    function abs()
2525
+    {
2526
+        $temp = new Math_BigInteger();
2527
+
2528
+        switch ( MATH_BIGINTEGER_MODE ) {
2529
+            case MATH_BIGINTEGER_MODE_GMP:
2530
+                $temp->value = gmp_abs($this->value);
2531
+                break;
2532
+            case MATH_BIGINTEGER_MODE_BCMATH:
2533
+                $temp->value = (bccomp($this->value, '0', 0) < 0) ? substr($this->value, 1) : $this->value;
2534
+                break;
2535
+            default:
2536
+                $temp->value = $this->value;
2537
+        }
2538
+
2539
+        return $temp;
2540
+    }
2541
+
2542
+    /**
2543
+     * Compares two numbers.
2544
+     *
2545
+     * Although one might think !$x->compare($y) means $x != $y, it, in fact, means the opposite.  The reason for this is
2546
+     * demonstrated thusly:
2547
+     *
2548
+     * $x  > $y: $x->compare($y)  > 0
2549
+     * $x  < $y: $x->compare($y)  < 0
2550
+     * $x == $y: $x->compare($y) == 0
2551
+     *
2552
+     * Note how the same comparison operator is used.  If you want to test for equality, use $x->equals($y).
2553
+     *
2554
+     * @param Math_BigInteger $x
2555
+     * @return Integer < 0 if $this is less than $x; > 0 if $this is greater than $x, and 0 if they are equal.
2556
+     * @access public
2557
+     * @see equals()
2558
+     * @internal Could return $this->subtract($x), but that's not as fast as what we do do.
2559
+     */
2560
+    function compare($y)
2561
+    {
2562
+        switch ( MATH_BIGINTEGER_MODE ) {
2563
+            case MATH_BIGINTEGER_MODE_GMP:
2564
+                return gmp_cmp($this->value, $y->value);
2565
+            case MATH_BIGINTEGER_MODE_BCMATH:
2566
+                return bccomp($this->value, $y->value, 0);
2567
+        }
2568
+
2569
+        return $this->_compare($this->value, $this->is_negative, $y->value, $y->is_negative);
2570
+    }
2571
+
2572
+    /**
2573
+     * Compares two numbers.
2574
+     *
2575
+     * @param Array $x_value
2576
+     * @param Boolean $x_negative
2577
+     * @param Array $y_value
2578
+     * @param Boolean $y_negative
2579
+     * @return Integer
2580
+     * @see compare()
2581
+     * @access private
2582
+     */
2583
+    function _compare($x_value, $x_negative, $y_value, $y_negative)
2584
+    {
2585
+        if ( $x_negative != $y_negative ) {
2586
+            return ( !$x_negative && $y_negative ) ? 1 : -1;
2587
+        }
2588
+
2589
+        $result = $x_negative ? -1 : 1;
2590
+
2591
+        if ( count($x_value) != count($y_value) ) {
2592
+            return ( count($x_value) > count($y_value) ) ? $result : -$result;
2593
+        }
2594
+        $size = max(count($x_value), count($y_value));
2595
+
2596
+        $x_value = array_pad($x_value, $size, 0);
2597
+        $y_value = array_pad($y_value, $size, 0);
2598
+
2599
+        for ($i = count($x_value) - 1; $i >= 0; --$i) {
2600
+            if ($x_value[$i] != $y_value[$i]) {
2601
+                return ( $x_value[$i] > $y_value[$i] ) ? $result : -$result;
2602
+            }
2603
+        }
2604
+
2605
+        return 0;
2606
+    }
2607
+
2608
+    /**
2609
+     * Tests the equality of two numbers.
2610
+     *
2611
+     * If you need to see if one number is greater than or less than another number, use Math_BigInteger::compare()
2612
+     *
2613
+     * @param Math_BigInteger $x
2614
+     * @return Boolean
2615
+     * @access public
2616
+     * @see compare()
2617
+     */
2618
+    function equals($x)
2619
+    {
2620
+        switch ( MATH_BIGINTEGER_MODE ) {
2621
+            case MATH_BIGINTEGER_MODE_GMP:
2622
+                return gmp_cmp($this->value, $x->value) == 0;
2623
+            default:
2624
+                return $this->value === $x->value && $this->is_negative == $x->is_negative;
2625
+        }
2626
+    }
2627
+
2628
+    /**
2629
+     * Set Precision
2630
+     *
2631
+     * Some bitwise operations give different results depending on the precision being used.  Examples include left
2632
+     * shift, not, and rotates.
2633
+     *
2634
+     * @param Math_BigInteger $x
2635
+     * @access public
2636
+     * @return Math_BigInteger
2637
+     */
2638
+    function setPrecision($bits)
2639
+    {
2640
+        $this->precision = $bits;
2641
+        if ( MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_BCMATH ) {
2642
+            $this->bitmask = new Math_BigInteger(chr((1 << ($bits & 0x7)) - 1) . str_repeat(chr(0xFF), $bits >> 3), 256);
2643
+        } else {
2644
+            $this->bitmask = new Math_BigInteger(bcpow('2', $bits, 0));
2645
+        }
2646
+
2647
+        $temp = $this->_normalize($this);
2648
+        $this->value = $temp->value;
2649
+    }
2650
+
2651
+    /**
2652
+     * Logical And
2653
+     *
2654
+     * @param Math_BigInteger $x
2655
+     * @access public
2656
+     * @internal Implemented per a request by Lluis Pamies i Juarez <lluis _a_ pamies.cat>
2657
+     * @return Math_BigInteger
2658
+     */
2659
+    function bitwise_and($x)
2660
+    {
2661
+        switch ( MATH_BIGINTEGER_MODE ) {
2662
+            case MATH_BIGINTEGER_MODE_GMP:
2663
+                $temp = new Math_BigInteger();
2664
+                $temp->value = gmp_and($this->value, $x->value);
2665
+
2666
+                return $this->_normalize($temp);
2667
+            case MATH_BIGINTEGER_MODE_BCMATH:
2668
+                $left = $this->toBytes();
2669
+                $right = $x->toBytes();
2670
+
2671
+                $length = max(strlen($left), strlen($right));
2672
+
2673
+                $left = str_pad($left, $length, chr(0), STR_PAD_LEFT);
2674
+                $right = str_pad($right, $length, chr(0), STR_PAD_LEFT);
2675
+
2676
+                return $this->_normalize(new Math_BigInteger($left & $right, 256));
2677
+        }
2678
+
2679
+        $result = $this->copy();
2680
+
2681
+        $length = min(count($x->value), count($this->value));
2682
+
2683
+        $result->value = array_slice($result->value, 0, $length);
2684
+
2685
+        for ($i = 0; $i < $length; ++$i) {
2686
+            $result->value[$i] = $result->value[$i] & $x->value[$i];
2687
+        }
2688
+
2689
+        return $this->_normalize($result);
2690
+    }
2691
+
2692
+    /**
2693
+     * Logical Or
2694
+     *
2695
+     * @param Math_BigInteger $x
2696
+     * @access public
2697
+     * @internal Implemented per a request by Lluis Pamies i Juarez <lluis _a_ pamies.cat>
2698
+     * @return Math_BigInteger
2699
+     */
2700
+    function bitwise_or($x)
2701
+    {
2702
+        switch ( MATH_BIGINTEGER_MODE ) {
2703
+            case MATH_BIGINTEGER_MODE_GMP:
2704
+                $temp = new Math_BigInteger();
2705
+                $temp->value = gmp_or($this->value, $x->value);
2706
+
2707
+                return $this->_normalize($temp);
2708
+            case MATH_BIGINTEGER_MODE_BCMATH:
2709
+                $left = $this->toBytes();
2710
+                $right = $x->toBytes();
2711
+
2712
+                $length = max(strlen($left), strlen($right));
2713
+
2714
+                $left = str_pad($left, $length, chr(0), STR_PAD_LEFT);
2715
+                $right = str_pad($right, $length, chr(0), STR_PAD_LEFT);
2716
+
2717
+                return $this->_normalize(new Math_BigInteger($left | $right, 256));
2718
+        }
2719
+
2720
+        $length = max(count($this->value), count($x->value));
2721
+        $result = $this->copy();
2722
+        $result->value = array_pad($result->value, 0, $length);
2723
+        $x->value = array_pad($x->value, 0, $length);
2724
+
2725
+        for ($i = 0; $i < $length; ++$i) {
2726
+            $result->value[$i] = $this->value[$i] | $x->value[$i];
2727
+        }
2728
+
2729
+        return $this->_normalize($result);
2730
+    }
2731
+
2732
+    /**
2733
+     * Logical Exclusive-Or
2734
+     *
2735
+     * @param Math_BigInteger $x
2736
+     * @access public
2737
+     * @internal Implemented per a request by Lluis Pamies i Juarez <lluis _a_ pamies.cat>
2738
+     * @return Math_BigInteger
2739
+     */
2740
+    function bitwise_xor($x)
2741
+    {
2742
+        switch ( MATH_BIGINTEGER_MODE ) {
2743
+            case MATH_BIGINTEGER_MODE_GMP:
2744
+                $temp = new Math_BigInteger();
2745
+                $temp->value = gmp_xor($this->value, $x->value);
2746
+
2747
+                return $this->_normalize($temp);
2748
+            case MATH_BIGINTEGER_MODE_BCMATH:
2749
+                $left = $this->toBytes();
2750
+                $right = $x->toBytes();
2751
+
2752
+                $length = max(strlen($left), strlen($right));
2753
+
2754
+                $left = str_pad($left, $length, chr(0), STR_PAD_LEFT);
2755
+                $right = str_pad($right, $length, chr(0), STR_PAD_LEFT);
2756
+
2757
+                return $this->_normalize(new Math_BigInteger($left ^ $right, 256));
2758
+        }
2759
+
2760
+        $length = max(count($this->value), count($x->value));
2761
+        $result = $this->copy();
2762
+        $result->value = array_pad($result->value, 0, $length);
2763
+        $x->value = array_pad($x->value, 0, $length);
2764
+
2765
+        for ($i = 0; $i < $length; ++$i) {
2766
+            $result->value[$i] = $this->value[$i] ^ $x->value[$i];
2767
+        }
2768
+
2769
+        return $this->_normalize($result);
2770
+    }
2771
+
2772
+    /**
2773
+     * Logical Not
2774
+     *
2775
+     * @access public
2776
+     * @internal Implemented per a request by Lluis Pamies i Juarez <lluis _a_ pamies.cat>
2777
+     * @return Math_BigInteger
2778
+     */
2779
+    function bitwise_not()
2780
+    {
2781
+        // calculuate "not" without regard to $this->precision
2782
+        // (will always result in a smaller number.  ie. ~1 isn't 1111 1110 - it's 0)
2783
+        $temp = $this->toBytes();
2784
+        $pre_msb = decbin(ord($temp[0]));
2785
+        $temp = ~$temp;
2786
+        $msb = decbin(ord($temp[0]));
2787
+        if (strlen($msb) == 8) {
2788
+            $msb = substr($msb, strpos($msb, '0'));
2789
+        }
2790
+        $temp[0] = chr(bindec($msb));
2791
+
2792
+        // see if we need to add extra leading 1's
2793
+        $current_bits = strlen($pre_msb) + 8 * strlen($temp) - 8;
2794
+        $new_bits = $this->precision - $current_bits;
2795
+        if ($new_bits <= 0) {
2796
+            return $this->_normalize(new Math_BigInteger($temp, 256));
2797
+        }
2798
+
2799
+        // generate as many leading 1's as we need to.
2800
+        $leading_ones = chr((1 << ($new_bits & 0x7)) - 1) . str_repeat(chr(0xFF), $new_bits >> 3);
2801
+        $this->_base256_lshift($leading_ones, $current_bits);
2802
+
2803
+        $temp = str_pad($temp, ceil($this->bits / 8), chr(0), STR_PAD_LEFT);
2804
+
2805
+        return $this->_normalize(new Math_BigInteger($leading_ones | $temp, 256));
2806
+    }
2807
+
2808
+    /**
2809
+     * Logical Right Shift
2810
+     *
2811
+     * Shifts BigInteger's by $shift bits, effectively dividing by 2**$shift.
2812
+     *
2813
+     * @param Integer $shift
2814
+     * @return Math_BigInteger
2815
+     * @access public
2816
+     * @internal The only version that yields any speed increases is the internal version.
2817
+     */
2818
+    function bitwise_rightShift($shift)
2819
+    {
2820
+        $temp = new Math_BigInteger();
2821
+
2822
+        switch ( MATH_BIGINTEGER_MODE ) {
2823
+            case MATH_BIGINTEGER_MODE_GMP:
2824
+                static $two;
2825
+
2826
+                if (!isset($two)) {
2827
+                    $two = gmp_init('2');
2828
+                }
2829
+
2830
+                $temp->value = gmp_div_q($this->value, gmp_pow($two, $shift));
2831
+
2832
+                break;
2833
+            case MATH_BIGINTEGER_MODE_BCMATH:
2834
+                $temp->value = bcdiv($this->value, bcpow('2', $shift, 0), 0);
2835
+
2836
+                break;
2837
+            default: // could just replace _lshift with this, but then all _lshift() calls would need to be rewritten
2838
+                     // and I don't want to do that...
2839
+                $temp->value = $this->value;
2840
+                $temp->_rshift($shift);
2841
+        }
2842
+
2843
+        return $this->_normalize($temp);
2844
+    }
2845
+
2846
+    /**
2847
+     * Logical Left Shift
2848
+     *
2849
+     * Shifts BigInteger's by $shift bits, effectively multiplying by 2**$shift.
2850
+     *
2851
+     * @param Integer $shift
2852
+     * @return Math_BigInteger
2853
+     * @access public
2854
+     * @internal The only version that yields any speed increases is the internal version.
2855
+     */
2856
+    function bitwise_leftShift($shift)
2857
+    {
2858
+        $temp = new Math_BigInteger();
2859
+
2860
+        switch ( MATH_BIGINTEGER_MODE ) {
2861
+            case MATH_BIGINTEGER_MODE_GMP:
2862
+                static $two;
2863
+
2864
+                if (!isset($two)) {
2865
+                    $two = gmp_init('2');
2866
+                }
2867
+
2868
+                $temp->value = gmp_mul($this->value, gmp_pow($two, $shift));
2869
+
2870
+                break;
2871
+            case MATH_BIGINTEGER_MODE_BCMATH:
2872
+                $temp->value = bcmul($this->value, bcpow('2', $shift, 0), 0);
2873
+
2874
+                break;
2875
+            default: // could just replace _rshift with this, but then all _lshift() calls would need to be rewritten
2876
+                     // and I don't want to do that...
2877
+                $temp->value = $this->value;
2878
+                $temp->_lshift($shift);
2879
+        }
2880
+
2881
+        return $this->_normalize($temp);
2882
+    }
2883
+
2884
+    /**
2885
+     * Logical Left Rotate
2886
+     *
2887
+     * Instead of the top x bits being dropped they're appended to the shifted bit string.
2888
+     *
2889
+     * @param Integer $shift
2890
+     * @return Math_BigInteger
2891
+     * @access public
2892
+     */
2893
+    function bitwise_leftRotate($shift)
2894
+    {
2895
+        $bits = $this->toBytes();
2896
+
2897
+        if ($this->precision > 0) {
2898
+            $precision = $this->precision;
2899
+            if ( MATH_BIGINTEGER_MODE == MATH_BIGINTEGER_MODE_BCMATH ) {
2900
+                $mask = $this->bitmask->subtract(new Math_BigInteger(1));
2901
+                $mask = $mask->toBytes();
2902
+            } else {
2903
+                $mask = $this->bitmask->toBytes();
2904
+            }
2905
+        } else {
2906
+            $temp = ord($bits[0]);
2907
+            for ($i = 0; $temp >> $i; ++$i);
2908
+            $precision = 8 * strlen($bits) - 8 + $i;
2909
+            $mask = chr((1 << ($precision & 0x7)) - 1) . str_repeat(chr(0xFF), $precision >> 3);
2910
+        }
2911
+
2912
+        if ($shift < 0) {
2913
+            $shift+= $precision;
2914
+        }
2915
+        $shift%= $precision;
2916
+
2917
+        if (!$shift) {
2918
+            return $this->copy();
2919
+        }
2920
+
2921
+        $left = $this->bitwise_leftShift($shift);
2922
+        $left = $left->bitwise_and(new Math_BigInteger($mask, 256));
2923
+        $right = $this->bitwise_rightShift($precision - $shift);
2924
+        $result = MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_BCMATH ? $left->bitwise_or($right) : $left->add($right);
2925
+        return $this->_normalize($result);
2926
+    }
2927
+
2928
+    /**
2929
+     * Logical Right Rotate
2930
+     *
2931
+     * Instead of the bottom x bits being dropped they're prepended to the shifted bit string.
2932
+     *
2933
+     * @param Integer $shift
2934
+     * @return Math_BigInteger
2935
+     * @access public
2936
+     */
2937
+    function bitwise_rightRotate($shift)
2938
+    {
2939
+        return $this->bitwise_leftRotate(-$shift);
2940
+    }
2941
+
2942
+    /**
2943
+     * Set random number generator function
2944
+     *
2945
+     * $generator should be the name of a random generating function whose first parameter is the minimum
2946
+     * value and whose second parameter is the maximum value.  If this function needs to be seeded, it should
2947
+     * be seeded prior to calling Math_BigInteger::random() or Math_BigInteger::randomPrime()
2948
+     *
2949
+     * If the random generating function is not explicitly set, it'll be assumed to be mt_rand().
2950
+     *
2951
+     * @see random()
2952
+     * @see randomPrime()
2953
+     * @param optional String $generator
2954
+     * @access public
2955
+     */
2956
+    function setRandomGenerator($generator)
2957
+    {
2958
+        $this->generator = $generator;
2959
+    }
2960
+
2961
+    /**
2962
+     * Generate a random number
2963
+     *
2964
+     * @param optional Integer $min
2965
+     * @param optional Integer $max
2966
+     * @return Math_BigInteger
2967
+     * @access public
2968
+     */
2969
+    function random($min = false, $max = false)
2970
+    {
2971
+        if ($min === false) {
2972
+            $min = new Math_BigInteger(0);
2973
+        }
2974
+
2975
+        if ($max === false) {
2976
+            $max = new Math_BigInteger(0x7FFFFFFF);
2977
+        }
2978
+
2979
+        $compare = $max->compare($min);
2980
+
2981
+        if (!$compare) {
2982
+            return $this->_normalize($min);
2983
+        } else if ($compare < 0) {
2984
+            // if $min is bigger then $max, swap $min and $max
2985
+            $temp = $max;
2986
+            $max = $min;
2987
+            $min = $temp;
2988
+        }
2989
+
2990
+        $generator = $this->generator;
2991
+
2992
+        $max = $max->subtract($min);
2993
+        $max = ltrim($max->toBytes(), chr(0));
2994
+        $size = strlen($max) - 1;
2995
+        $random = '';
2996
+
2997
+        $bytes = $size & 1;
2998
+        for ($i = 0; $i < $bytes; ++$i) {
2999
+            $random.= chr($generator(0, 255));
3000
+        }
3001
+
3002
+        $blocks = $size >> 1;
3003
+        for ($i = 0; $i < $blocks; ++$i) {
3004
+            // mt_rand(-2147483648, 0x7FFFFFFF) always produces -2147483648 on some systems
3005
+            $random.= pack('n', $generator(0, 0xFFFF));
3006
+        }
3007
+
3008
+        $temp = new Math_BigInteger($random, 256);
3009
+        if ($temp->compare(new Math_BigInteger(substr($max, 1), 256)) > 0) {
3010
+            $random = chr($generator(0, ord($max[0]) - 1)) . $random;
3011
+        } else {
3012
+            $random = chr($generator(0, ord($max[0])    )) . $random;
3013
+        }
3014
+
3015
+        $random = new Math_BigInteger($random, 256);
3016
+
3017
+        return $this->_normalize($random->add($min));
3018
+    }
3019
+
3020
+    /**
3021
+     * Generate a random prime number.
3022
+     *
3023
+     * If there's not a prime within the given range, false will be returned.  If more than $timeout seconds have elapsed,
3024
+     * give up and return false.
3025
+     *
3026
+     * @param optional Integer $min
3027
+     * @param optional Integer $max
3028
+     * @param optional Integer $timeout
3029
+     * @return Math_BigInteger
3030
+     * @access public
3031
+     * @internal See {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap4.pdf#page=15 HAC 4.44}.
3032
+     */
3033
+    function randomPrime($min = false, $max = false, $timeout = false)
3034
+    {
3035
+        $compare = $max->compare($min);
3036
+
3037
+        if (!$compare) {
3038
+            return $min;
3039
+        } else if ($compare < 0) {
3040
+            // if $min is bigger then $max, swap $min and $max
3041
+            $temp = $max;
3042
+            $max = $min;
3043
+            $min = $temp;
3044
+        }
3045
+
3046
+        // gmp_nextprime() requires PHP 5 >= 5.2.0 per <http://php.net/gmp-nextprime>.
3047
+        if ( MATH_BIGINTEGER_MODE == MATH_BIGINTEGER_MODE_GMP && function_exists('gmp_nextprime') ) {
3048
+            // we don't rely on Math_BigInteger::random()'s min / max when gmp_nextprime() is being used since this function
3049
+            // does its own checks on $max / $min when gmp_nextprime() is used.  When gmp_nextprime() is not used, however,
3050
+            // the same $max / $min checks are not performed.
3051
+            if ($min === false) {
3052
+                $min = new Math_BigInteger(0);
3053
+            }
3054
+
3055
+            if ($max === false) {
3056
+                $max = new Math_BigInteger(0x7FFFFFFF);
3057
+            }
3058
+
3059
+            $x = $this->random($min, $max);
3060
+
3061
+            $x->value = gmp_nextprime($x->value);
3062
+
3063
+            if ($x->compare($max) <= 0) {
3064
+                return $x;
3065
+            }
3066
+
3067
+            $x->value = gmp_nextprime($min->value);
3068
+
3069
+            if ($x->compare($max) <= 0) {
3070
+                return $x;
3071
+            }
3072
+
3073
+            return false;
3074
+        }
3075
+
3076
+        static $one, $two;
3077
+        if (!isset($one)) {
3078
+            $one = new Math_BigInteger(1);
3079
+            $two = new Math_BigInteger(2);
3080
+        }
3081
+
3082
+        $start = time();
3083
+
3084
+        $x = $this->random($min, $max);
3085
+        if ($x->equals($two)) {
3086
+            return $x;
3087
+        }
3088
+
3089
+        $x->_make_odd();
3090
+        if ($x->compare($max) > 0) {
3091
+            // if $x > $max then $max is even and if $min == $max then no prime number exists between the specified range
3092
+            if ($min->equals($max)) {
3093
+                return false;
3094
+            }
3095
+            $x = $min->copy();
3096
+            $x->_make_odd();
3097
+        }
3098
+
3099
+        $initial_x = $x->copy();
3100
+
3101
+        while (true) {
3102
+            if ($timeout !== false && time() - $start > $timeout) {
3103
+                return false;
3104
+            }
3105
+
3106
+            if ($x->isPrime()) {
3107
+                return $x;
3108
+            }
3109
+
3110
+            $x = $x->add($two);
3111
+
3112
+            if ($x->compare($max) > 0) {
3113
+                $x = $min->copy();
3114
+                if ($x->equals($two)) {
3115
+                    return $x;
3116
+                }
3117
+                $x->_make_odd();
3118
+            }
3119
+
3120
+            if ($x->equals($initial_x)) {
3121
+                return false;
3122
+            }
3123
+        }
3124
+    }
3125
+
3126
+    /**
3127
+     * Make the current number odd
3128
+     *
3129
+     * If the current number is odd it'll be unchanged.  If it's even, one will be added to it.
3130
+     *
3131
+     * @see randomPrime()
3132
+     * @access private
3133
+     */
3134
+    function _make_odd()
3135
+    {
3136
+        switch ( MATH_BIGINTEGER_MODE ) {
3137
+            case MATH_BIGINTEGER_MODE_GMP:
3138
+                gmp_setbit($this->value, 0);
3139
+                break;
3140
+            case MATH_BIGINTEGER_MODE_BCMATH:
3141
+                if ($this->value[strlen($this->value) - 1] % 2 == 0) {
3142
+                    $this->value = bcadd($this->value, '1');
3143
+                }
3144
+                break;
3145
+            default:
3146
+                $this->value[0] |= 1;
3147
+        }
3148
+    }
3149
+
3150
+    /**
3151
+     * Checks a numer to see if it's prime
3152
+     *
3153
+     * Assuming the $t parameter is not set, this function has an error rate of 2**-80.  The main motivation for the
3154
+     * $t parameter is distributability.  Math_BigInteger::randomPrime() can be distributed accross multiple pageloads
3155
+     * on a website instead of just one.
3156
+     *
3157
+     * @param optional Integer $t
3158
+     * @return Boolean
3159
+     * @access public
3160
+     * @internal Uses the
3161
+     *     {@link http://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test Miller-Rabin primality test}.  See 
3162
+     *     {@link http://www.cacr.math.uwaterloo.ca/hac/about/chap4.pdf#page=8 HAC 4.24}.
3163
+     */
3164
+    function isPrime($t = false)
3165
+    {
3166
+        $length = strlen($this->toBytes());
3167
+
3168
+        if (!$t) {
3169
+            // see HAC 4.49 "Note (controlling the error probability)"
3170
+                 if ($length >= 163) { $t =  2; } // floor(1300 / 8)
3171
+            else if ($length >= 106) { $t =  3; } // floor( 850 / 8)
3172
+            else if ($length >= 81 ) { $t =  4; } // floor( 650 / 8)
3173
+            else if ($length >= 68 ) { $t =  5; } // floor( 550 / 8)
3174
+            else if ($length >= 56 ) { $t =  6; } // floor( 450 / 8)
3175
+            else if ($length >= 50 ) { $t =  7; } // floor( 400 / 8)
3176
+            else if ($length >= 43 ) { $t =  8; } // floor( 350 / 8)
3177
+            else if ($length >= 37 ) { $t =  9; } // floor( 300 / 8)
3178
+            else if ($length >= 31 ) { $t = 12; } // floor( 250 / 8)
3179
+            else if ($length >= 25 ) { $t = 15; } // floor( 200 / 8)
3180
+            else if ($length >= 18 ) { $t = 18; } // floor( 150 / 8)
3181
+            else                     { $t = 27; }
3182
+        }
3183
+
3184
+        // ie. gmp_testbit($this, 0)
3185
+        // ie. isEven() or !isOdd()
3186
+        switch ( MATH_BIGINTEGER_MODE ) {
3187
+            case MATH_BIGINTEGER_MODE_GMP:
3188
+                return gmp_prob_prime($this->value, $t) != 0;
3189
+            case MATH_BIGINTEGER_MODE_BCMATH:
3190
+                if ($this->value === '2') {
3191
+                    return true;
3192
+                }
3193
+                if ($this->value[strlen($this->value) - 1] % 2 == 0) {
3194
+                    return false;
3195
+                }
3196
+                break;
3197
+            default:
3198
+                if ($this->value == array(2)) {
3199
+                    return true;
3200
+                }
3201
+                if (~$this->value[0] & 1) {
3202
+                    return false;
3203
+                }
3204
+        }
3205
+
3206
+        static $primes, $zero, $one, $two;
3207
+
3208
+        if (!isset($primes)) {
3209
+            $primes = array(
3210
+                3,    5,    7,    11,   13,   17,   19,   23,   29,   31,   37,   41,   43,   47,   53,   59,   
3211
+                61,   67,   71,   73,   79,   83,   89,   97,   101,  103,  107,  109,  113,  127,  131,  137,  
3212
+                139,  149,  151,  157,  163,  167,  173,  179,  181,  191,  193,  197,  199,  211,  223,  227,  
3213
+                229,  233,  239,  241,  251,  257,  263,  269,  271,  277,  281,  283,  293,  307,  311,  313,  
3214
+                317,  331,  337,  347,  349,  353,  359,  367,  373,  379,  383,  389,  397,  401,  409,  419,  
3215
+                421,  431,  433,  439,  443,  449,  457,  461,  463,  467,  479,  487,  491,  499,  503,  509,  
3216
+                521,  523,  541,  547,  557,  563,  569,  571,  577,  587,  593,  599,  601,  607,  613,  617,  
3217
+                619,  631,  641,  643,  647,  653,  659,  661,  673,  677,  683,  691,  701,  709,  719,  727,  
3218
+                733,  739,  743,  751,  757,  761,  769,  773,  787,  797,  809,  811,  821,  823,  827,  829,  
3219
+                839,  853,  857,  859,  863,  877,  881,  883,  887,  907,  911,  919,  929,  937,  941,  947,  
3220
+                953,  967,  971,  977,  983,  991,  997
3221
+            );
3222
+
3223
+            if ( MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_INTERNAL ) {
3224
+                for ($i = 0; $i < count($primes); ++$i) {
3225
+                    $primes[$i] = new Math_BigInteger($primes[$i]);
3226
+                }
3227
+            }
3228
+
3229
+            $zero = new Math_BigInteger();
3230
+            $one = new Math_BigInteger(1);
3231
+            $two = new Math_BigInteger(2);
3232
+        }
3233
+
3234
+        if ($this->equals($one)) {
3235
+            return false;
3236
+        }
3237
+
3238
+        // see HAC 4.4.1 "Random search for probable primes"
3239
+        if ( MATH_BIGINTEGER_MODE != MATH_BIGINTEGER_MODE_INTERNAL ) {
3240
+            foreach ($primes as $prime) {
3241
+                list(, $r) = $this->divide($prime);
3242
+                if ($r->equals($zero)) {
3243
+                    return $this->equals($prime);
3244
+                }
3245
+            }
3246
+        } else {
3247
+            $value = $this->value;
3248
+            foreach ($primes as $prime) {
3249
+                list(, $r) = $this->_divide_digit($value, $prime);
3250
+                if (!$r) {
3251
+                    return count($value) == 1 && $value[0] == $prime;
3252
+                }
3253
+            }
3254
+        }
3255
+
3256
+        $n   = $this->copy();
3257
+        $n_1 = $n->subtract($one);
3258
+        $n_2 = $n->subtract($two);
3259
+
3260
+        $r = $n_1->copy();
3261
+        $r_value = $r->value;
3262
+        // ie. $s = gmp_scan1($n, 0) and $r = gmp_div_q($n, gmp_pow(gmp_init('2'), $s));
3263
+        if ( MATH_BIGINTEGER_MODE == MATH_BIGINTEGER_MODE_BCMATH ) {
3264
+            $s = 0;
3265
+            // if $n was 1, $r would be 0 and this would be an infinite loop, hence our $this->equals($one) check earlier
3266
+            while ($r->value[strlen($r->value) - 1] % 2 == 0) {
3267
+                $r->value = bcdiv($r->value, '2', 0);
3268
+                ++$s;
3269
+            }
3270
+        } else {
3271
+            for ($i = 0, $r_length = count($r_value); $i < $r_length; ++$i) {
3272
+                $temp = ~$r_value[$i] & 0xFFFFFF;
3273
+                for ($j = 1; ($temp >> $j) & 1; ++$j);
3274
+                if ($j != 25) {
3275
+                    break;
3276
+                }
3277
+            }
3278
+            $s = 26 * $i + $j - 1;
3279
+            $r->_rshift($s);
3280
+        }
3281
+
3282
+        for ($i = 0; $i < $t; ++$i) {
3283
+            $a = $this->random($two, $n_2);
3284
+            $y = $a->modPow($r, $n);
3285
+
3286
+            if (!$y->equals($one) && !$y->equals($n_1)) {
3287
+                for ($j = 1; $j < $s && !$y->equals($n_1); ++$j) {
3288
+                    $y = $y->modPow($two, $n);
3289
+                    if ($y->equals($one)) {
3290
+                        return false;
3291
+                    }
3292
+                }
3293
+
3294
+                if (!$y->equals($n_1)) {
3295
+                    return false;
3296
+                }
3297
+            }
3298
+        }
3299
+        return true;
3300
+    }
3301
+
3302
+    /**
3303
+     * Logical Left Shift
3304
+     *
3305
+     * Shifts BigInteger's by $shift bits.
3306
+     *
3307
+     * @param Integer $shift
3308
+     * @access private
3309
+     */
3310
+    function _lshift($shift)
3311
+    {
3312
+        if ( $shift == 0 ) {
3313
+            return;
3314
+        }
3315
+
3316
+        $num_digits = (int) ($shift / 26);
3317
+        $shift %= 26;
3318
+        $shift = 1 << $shift;
3319
+
3320
+        $carry = 0;
3321
+
3322
+        for ($i = 0; $i < count($this->value); ++$i) {
3323
+            $temp = $this->value[$i] * $shift + $carry;
3324
+            $carry = (int) ($temp / 0x4000000);
3325
+            $this->value[$i] = (int) ($temp - $carry * 0x4000000);
3326
+        }
3327
+
3328
+        if ( $carry ) {
3329
+            $this->value[] = $carry;
3330
+        }
3331
+
3332
+        while ($num_digits--) {
3333
+            array_unshift($this->value, 0);
3334
+        }
3335
+    }
3336
+
3337
+    /**
3338
+     * Logical Right Shift
3339
+     *
3340
+     * Shifts BigInteger's by $shift bits.
3341
+     *
3342
+     * @param Integer $shift
3343
+     * @access private
3344
+     */
3345
+    function _rshift($shift)
3346
+    {
3347
+        if ($shift == 0) {
3348
+            return;
3349
+        }
3350
+
3351
+        $num_digits = (int) ($shift / 26);
3352
+        $shift %= 26;
3353
+        $carry_shift = 26 - $shift;
3354
+        $carry_mask = (1 << $shift) - 1;
3355
+
3356
+        if ( $num_digits ) {
3357
+            $this->value = array_slice($this->value, $num_digits);
3358
+        }
3359
+
3360
+        $carry = 0;
3361
+
3362
+        for ($i = count($this->value) - 1; $i >= 0; --$i) {
3363
+            $temp = $this->value[$i] >> $shift | $carry;
3364
+            $carry = ($this->value[$i] & $carry_mask) << $carry_shift;
3365
+            $this->value[$i] = $temp;
3366
+        }
3367
+
3368
+        $this->value = $this->_trim($this->value);
3369
+    }
3370
+
3371
+    /**
3372
+     * Normalize
3373
+     *
3374
+     * Removes leading zeros and truncates (if necessary) to maintain the appropriate precision
3375
+     *
3376
+     * @param Math_BigInteger
3377
+     * @return Math_BigInteger
3378
+     * @see _trim()
3379
+     * @access private
3380
+     */
3381
+    function _normalize($result)
3382
+    {
3383
+        $result->precision = $this->precision;
3384
+        $result->bitmask = $this->bitmask;
3385
+
3386
+        switch ( MATH_BIGINTEGER_MODE ) {
3387
+            case MATH_BIGINTEGER_MODE_GMP:
3388
+                if (!empty($result->bitmask->value)) {
3389
+                    $result->value = gmp_and($result->value, $result->bitmask->value);
3390
+                }
3391
+
3392
+                return $result;
3393
+            case MATH_BIGINTEGER_MODE_BCMATH:
3394
+                if (!empty($result->bitmask->value)) {
3395
+                    $result->value = bcmod($result->value, $result->bitmask->value);
3396
+                }
3397
+
3398
+                return $result;
3399
+        }
3400
+
3401
+        $value = &$result->value;
3402
+
3403
+        if ( !count($value) ) {
3404
+            return $result;
3405
+        }
3406
+
3407
+        $value = $this->_trim($value);
3408
+
3409
+        if (!empty($result->bitmask->value)) {
3410
+            $length = min(count($value), count($this->bitmask->value));
3411
+            $value = array_slice($value, 0, $length);
3412
+
3413
+            for ($i = 0; $i < $length; ++$i) {
3414
+                $value[$i] = $value[$i] & $this->bitmask->value[$i];
3415
+            }
3416
+        }
3417
+
3418
+        return $result;
3419
+    }
3420
+
3421
+    /**
3422
+     * Trim
3423
+     *
3424
+     * Removes leading zeros
3425
+     *
3426
+     * @return Math_BigInteger
3427
+     * @access private
3428
+     */
3429
+    function _trim($value)
3430
+    {
3431
+        for ($i = count($value) - 1; $i >= 0; --$i) {
3432
+            if ( $value[$i] ) {
3433
+                break;
3434
+            }
3435
+            unset($value[$i]);
3436
+        }
3437
+
3438
+        return $value;
3439
+    }
3440
+
3441
+    /**
3442
+     * Array Repeat
3443
+     *
3444
+     * @param $input Array
3445
+     * @param $multiplier mixed
3446
+     * @return Array
3447
+     * @access private
3448
+     */
3449
+    function _array_repeat($input, $multiplier)
3450
+    {
3451
+        return ($multiplier) ? array_fill(0, $multiplier, $input) : array();
3452
+    }
3453
+
3454
+    /**
3455
+     * Logical Left Shift
3456
+     *
3457
+     * Shifts binary strings $shift bits, essentially multiplying by 2**$shift.
3458
+     *
3459
+     * @param $x String
3460
+     * @param $shift Integer
3461
+     * @return String
3462
+     * @access private
3463
+     */
3464
+    function _base256_lshift(&$x, $shift)
3465
+    {
3466
+        if ($shift == 0) {
3467
+            return;
3468
+        }
3469
+
3470
+        $num_bytes = $shift >> 3; // eg. floor($shift/8)
3471
+        $shift &= 7; // eg. $shift % 8
3472
+
3473
+        $carry = 0;
3474
+        for ($i = strlen($x) - 1; $i >= 0; --$i) {
3475
+            $temp = ord($x[$i]) << $shift | $carry;
3476
+            $x[$i] = chr($temp);
3477
+            $carry = $temp >> 8;
3478
+        }
3479
+        $carry = ($carry != 0) ? chr($carry) : '';
3480
+        $x = $carry . $x . str_repeat(chr(0), $num_bytes);
3481
+    }
3482
+
3483
+    /**
3484
+     * Logical Right Shift
3485
+     *
3486
+     * Shifts binary strings $shift bits, essentially dividing by 2**$shift and returning the remainder.
3487
+     *
3488
+     * @param $x String
3489
+     * @param $shift Integer
3490
+     * @return String
3491
+     * @access private
3492
+     */
3493
+    function _base256_rshift(&$x, $shift)
3494
+    {
3495
+        if ($shift == 0) {
3496
+            $x = ltrim($x, chr(0));
3497
+            return '';
3498
+        }
3499
+
3500
+        $num_bytes = $shift >> 3; // eg. floor($shift/8)
3501
+        $shift &= 7; // eg. $shift % 8
3502
+
3503
+        $remainder = '';
3504
+        if ($num_bytes) {
3505
+            $start = $num_bytes > strlen($x) ? -strlen($x) : -$num_bytes;
3506
+            $remainder = substr($x, $start);
3507
+            $x = substr($x, 0, -$num_bytes);
3508
+        }
3509
+
3510
+        $carry = 0;
3511
+        $carry_shift = 8 - $shift;
3512
+        for ($i = 0; $i < strlen($x); ++$i) {
3513
+            $temp = (ord($x[$i]) >> $shift) | $carry;
3514
+            $carry = (ord($x[$i]) << $carry_shift) & 0xFF;
3515
+            $x[$i] = chr($temp);
3516
+        }
3517
+        $x = ltrim($x, chr(0));
3518
+
3519
+        $remainder = chr($carry >> $carry_shift) . $remainder;
3520
+
3521
+        return ltrim($remainder, chr(0));
3522
+    }
3523
+
3524
+    // one quirk about how the following functions are implemented is that PHP defines N to be an unsigned long
3525
+    // at 32-bits, while java's longs are 64-bits.
3526
+
3527
+    /**
3528
+     * Converts 32-bit integers to bytes.
3529
+     *
3530
+     * @param Integer $x
3531
+     * @return String
3532
+     * @access private
3533
+     */
3534
+    function _int2bytes($x)
3535
+    {
3536
+        return ltrim(pack('N', $x), chr(0));
3537
+    }
3538
+
3539
+    /**
3540
+     * Converts bytes to 32-bit integers
3541
+     *
3542
+     * @param String $x
3543
+     * @return Integer
3544
+     * @access private
3545
+     */
3546
+    function _bytes2int($x)
3547
+    {
3548
+        $temp = unpack('Nint', str_pad($x, 4, chr(0), STR_PAD_LEFT));
3549
+        return $temp['int'];
3550
+    }
3551
+}
0 3552
\ No newline at end of file
... ...
@@ -0,0 +1,1609 @@
1
+<?php
2
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
3
+
4
+/**
5
+ * Pure-PHP implementation of SFTP.
6
+ *
7
+ * PHP versions 4 and 5
8
+ *
9
+ * Currently only supports SFTPv3, which, according to wikipedia.org, "is the most widely used version,
10
+ * implemented by the popular OpenSSH SFTP server".  If you want SFTPv4/5/6 support, provide me with access
11
+ * to an SFTPv4/5/6 server.
12
+ *
13
+ * The API for this library is modeled after the API from PHP's {@link http://php.net/book.ftp FTP extension}.
14
+ *
15
+ * Here's a short example of how to use this library:
16
+ * <code>
17
+ * <?php
18
+ *    include('Net/SFTP.php');
19
+ *
20
+ *    $sftp = new Net_SFTP('www.domain.tld');
21
+ *    if (!$sftp->login('username', 'password')) {
22
+ *        exit('Login Failed');
23
+ *    }
24
+ *
25
+ *    echo $sftp->pwd() . "\r\n";
26
+ *    $sftp->put('filename.ext', 'hello, world!');
27
+ *    print_r($sftp->nlist());
28
+ * ?>
29
+ * </code>
30
+ *
31
+ * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy
32
+ * of this software and associated documentation files (the "Software"), to deal
33
+ * in the Software without restriction, including without limitation the rights
34
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
35
+ * copies of the Software, and to permit persons to whom the Software is
36
+ * furnished to do so, subject to the following conditions:
37
+ * 
38
+ * The above copyright notice and this permission notice shall be included in
39
+ * all copies or substantial portions of the Software.
40
+ * 
41
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
42
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
43
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
44
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
45
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
46
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
47
+ * THE SOFTWARE.
48
+ *
49
+ * @category   Net
50
+ * @package    Net_SFTP
51
+ * @author     Jim Wigginton <[email protected]>
52
+ * @copyright  MMIX Jim Wigginton
53
+ * @license    http://www.opensource.org/licenses/mit-license.html  MIT License
54
+ * @link       http://phpseclib.sourceforge.net
55
+ */
56
+
57
+/**
58
+ * Include Net_SSH2
59
+ */
60
+require_once('Net/SSH2.php');
61
+
62
+/**#@+
63
+ * @access public
64
+ * @see Net_SFTP::getLog()
65
+ */
66
+/**
67
+ * Returns the message numbers
68
+ */
69
+define('NET_SFTP_LOG_SIMPLE',  NET_SSH2_LOG_SIMPLE);
70
+/**
71
+ * Returns the message content
72
+ */
73
+define('NET_SFTP_LOG_COMPLEX', NET_SSH2_LOG_COMPLEX);
74
+/**#@-*/
75
+
76
+/**
77
+ * SFTP channel constant
78
+ *
79
+ * Net_SSH2::exec() uses 0 and Net_SSH2::read() / Net_SSH2::write() use 1.
80
+ *
81
+ * @see Net_SSH2::_send_channel_packet()
82
+ * @see Net_SSH2::_get_channel_packet()
83
+ * @access private
84
+ */
85
+define('NET_SFTP_CHANNEL', 2);
86
+
87
+/**#@+
88
+ * @access public
89
+ * @see Net_SFTP::put()
90
+ */
91
+/**
92
+ * Reads data from a local file.
93
+ */
94
+define('NET_SFTP_LOCAL_FILE', 1);
95
+/**
96
+ * Reads data from a string.
97
+ */
98
+define('NET_SFTP_STRING',  2);
99
+/**#@-*/
100
+
101
+/**
102
+ * Pure-PHP implementations of SFTP.
103
+ *
104
+ * @author  Jim Wigginton <[email protected]>
105
+ * @version 0.1.0
106
+ * @access  public
107
+ * @package Net_SFTP
108
+ */
109
+class Net_SFTP extends Net_SSH2 {
110
+    /**
111
+     * Packet Types
112
+     *
113
+     * @see Net_SFTP::Net_SFTP()
114
+     * @var Array
115
+     * @access private
116
+     */
117
+    var $packet_types = array();
118
+
119
+    /**
120
+     * Status Codes
121
+     *
122
+     * @see Net_SFTP::Net_SFTP()
123
+     * @var Array
124
+     * @access private
125
+     */
126
+    var $status_codes = array();
127
+
128
+    /**
129
+     * The Request ID
130
+     *
131
+     * The request ID exists in the off chance that a packet is sent out-of-order.  Of course, this library doesn't support
132
+     * concurrent actions, so it's somewhat academic, here.
133
+     *
134
+     * @var Integer
135
+     * @see Net_SFTP::_send_sftp_packet()
136
+     * @access private
137
+     */
138
+    var $request_id = false;
139
+
140
+    /**
141
+     * The Packet Type
142
+     *
143
+     * The request ID exists in the off chance that a packet is sent out-of-order.  Of course, this library doesn't support
144
+     * concurrent actions, so it's somewhat academic, here.
145
+     *
146
+     * @var Integer
147
+     * @see Net_SFTP::_get_sftp_packet()
148
+     * @access private
149
+     */
150
+    var $packet_type = -1;
151
+
152
+    /**
153
+     * Packet Buffer
154
+     *
155
+     * @var String
156
+     * @see Net_SFTP::_get_sftp_packet()
157
+     * @access private
158
+     */
159
+    var $packet_buffer = '';
160
+
161
+    /**
162
+     * Extensions supported by the server
163
+     *
164
+     * @var Array
165
+     * @see Net_SFTP::_initChannel()
166
+     * @access private
167
+     */
168
+    var $extensions = array();
169
+
170
+    /**
171
+     * Server SFTP version
172
+     *
173
+     * @var Integer
174
+     * @see Net_SFTP::_initChannel()
175
+     * @access private
176
+     */
177
+    var $version;
178
+
179
+    /**
180
+     * Current working directory
181
+     *
182
+     * @var String
183
+     * @see Net_SFTP::_realpath()
184
+     * @see Net_SFTP::chdir()
185
+     * @access private
186
+     */
187
+    var $pwd = false;
188
+
189
+    /**
190
+     * Packet Type Log
191
+     *
192
+     * @see Net_SFTP::getLog()
193
+     * @var Array
194
+     * @access private
195
+     */
196
+    var $packet_type_log = array();
197
+
198
+    /**
199
+     * Packet Log
200
+     *
201
+     * @see Net_SFTP::getLog()
202
+     * @var Array
203
+     * @access private
204
+     */
205
+    var $packet_log = array();
206
+
207
+    /**
208
+     * Error information
209
+     *
210
+     * @see Net_SFTP::getSFTPErrors()
211
+     * @see Net_SFTP::getLastSFTPError()
212
+     * @var String
213
+     * @access private
214
+     */
215
+    var $sftp_errors = array();
216
+
217
+    /**
218
+     * File Type
219
+     *
220
+     * @see Net_SFTP::_parseLongname()
221
+     * @var Integer
222
+     * @access private
223
+     */
224
+    var $fileType = 0;
225
+
226
+    /**
227
+     * Default Constructor.
228
+     *
229
+     * Connects to an SFTP server
230
+     *
231
+     * @param String $host
232
+     * @param optional Integer $port
233
+     * @param optional Integer $timeout
234
+     * @return Net_SFTP
235
+     * @access public
236
+     */
237
+    function Net_SFTP($host, $port = 22, $timeout = 10)
238
+    {
239
+        parent::Net_SSH2($host, $port, $timeout);
240
+        $this->packet_types = array(
241
+            1  => 'NET_SFTP_INIT',
242
+            2  => 'NET_SFTP_VERSION',
243
+            /* the format of SSH_FXP_OPEN changed between SFTPv4 and SFTPv5+:
244
+                   SFTPv5+: http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.1.1
245
+               pre-SFTPv5 : http://tools.ietf.org/html/draft-ietf-secsh-filexfer-04#section-6.3 */
246
+            3  => 'NET_SFTP_OPEN',
247
+            4  => 'NET_SFTP_CLOSE',
248
+            5  => 'NET_SFTP_READ',
249
+            6  => 'NET_SFTP_WRITE',
250
+            7  => 'NET_SFTP_LSTAT',
251
+            9  => 'NET_SFTP_SETSTAT',
252
+            11 => 'NET_SFTP_OPENDIR',
253
+            12 => 'NET_SFTP_READDIR',
254
+            13 => 'NET_SFTP_REMOVE',
255
+            14 => 'NET_SFTP_MKDIR',
256
+            15 => 'NET_SFTP_RMDIR',
257
+            16 => 'NET_SFTP_REALPATH',
258
+            17 => 'NET_SFTP_STAT',
259
+            /* the format of SSH_FXP_RENAME changed between SFTPv4 and SFTPv5+:
260
+                   SFTPv5+: http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.3
261
+               pre-SFTPv5 : http://tools.ietf.org/html/draft-ietf-secsh-filexfer-04#section-6.5 */
262
+            18 => 'NET_SFTP_RENAME',
263
+
264
+            101=> 'NET_SFTP_STATUS',
265
+            102=> 'NET_SFTP_HANDLE',
266
+            /* the format of SSH_FXP_NAME changed between SFTPv3 and SFTPv4+:
267
+                   SFTPv4+: http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-9.4
268
+               pre-SFTPv4 : http://tools.ietf.org/html/draft-ietf-secsh-filexfer-02#section-7 */
269
+            103=> 'NET_SFTP_DATA',
270
+            104=> 'NET_SFTP_NAME',
271
+            105=> 'NET_SFTP_ATTRS',
272
+
273
+            200=> 'NET_SFTP_EXTENDED'
274
+        );
275
+        $this->status_codes = array(
276
+            0 => 'NET_SFTP_STATUS_OK',
277
+            1 => 'NET_SFTP_STATUS_EOF',
278
+            2 => 'NET_SFTP_STATUS_NO_SUCH_FILE',
279
+            3 => 'NET_SFTP_STATUS_PERMISSION_DENIED',
280
+            4 => 'NET_SFTP_STATUS_FAILURE',
281
+            5 => 'NET_SFTP_STATUS_BAD_MESSAGE',
282
+            6 => 'NET_SFTP_STATUS_NO_CONNECTION',
283
+            7 => 'NET_SFTP_STATUS_CONNECTION_LOST',
284
+            8 => 'NET_SFTP_STATUS_OP_UNSUPPORTED'
285
+        );
286
+        // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-7.1
287
+        // the order, in this case, matters quite a lot - see Net_SFTP::_parseAttributes() to understand why
288
+        $this->attributes = array(
289
+            0x00000001 => 'NET_SFTP_ATTR_SIZE',
290
+            0x00000002 => 'NET_SFTP_ATTR_UIDGID', // defined in SFTPv3, removed in SFTPv4+
291
+            0x00000004 => 'NET_SFTP_ATTR_PERMISSIONS',
292
+            0x00000008 => 'NET_SFTP_ATTR_ACCESSTIME',
293
+            // 0x80000000 will yield a floating point on 32-bit systems and converting floating points to integers
294
+            // yields inconsistent behavior depending on how php is compiled.  so we left shift -1 (which, in 
295
+            // two's compliment, consists of all 1 bits) by 31.  on 64-bit systems this'll yield 0xFFFFFFFF80000000.
296
+            // that's not a problem, however, and 'anded' and a 32-bit number, as all the leading 1 bits are ignored.
297
+              -1 << 31 => 'NET_SFTP_ATTR_EXTENDED'
298
+        );
299
+        // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-04#section-6.3
300
+        // the flag definitions change somewhat in SFTPv5+.  if SFTPv5+ support is added to this library, maybe name
301
+        // the array for that $this->open5_flags and similarily alter the constant names.
302
+        $this->open_flags = array(
303
+            0x00000001 => 'NET_SFTP_OPEN_READ',
304
+            0x00000002 => 'NET_SFTP_OPEN_WRITE',
305
+            0x00000008 => 'NET_SFTP_OPEN_CREATE',
306
+            0x00000010 => 'NET_SFTP_OPEN_TRUNCATE'
307
+        );
308
+        // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-04#section-5.2
309
+        // see Net_SFTP::_parseLongname() for an explanation
310
+        $this->file_types = array(
311
+            1 => 'NET_SFTP_TYPE_REGULAR',
312
+            2 => 'NET_SFTP_TYPE_DIRECTORY',
313
+            3 => 'NET_SFTP_TYPE_SYMLINK',
314
+            4 => 'NET_SFTP_TYPE_SPECIAL'
315
+        );
316
+        $this->_define_array(
317
+            $this->packet_types,
318
+            $this->status_codes,
319
+            $this->attributes,
320
+            $this->open_flags,
321
+            $this->file_types
322
+        );
323
+    }
324
+
325
+    /**
326
+     * Login
327
+     *
328
+     * @param String $username
329
+     * @param optional String $password
330
+     * @return Boolean
331
+     * @access public
332
+     */
333
+    function login($username, $password = '')
334
+    {
335
+        if (!parent::login($username, $password)) {
336
+            return false;
337
+        }
338
+
339
+        $this->window_size_client_to_server[NET_SFTP_CHANNEL] = $this->window_size;
340
+
341
+        $packet = pack('CNa*N3',
342
+            NET_SSH2_MSG_CHANNEL_OPEN, strlen('session'), 'session', NET_SFTP_CHANNEL, $this->window_size, 0x4000);
343
+
344
+        if (!$this->_send_binary_packet($packet)) {
345
+            return false;
346
+        }
347
+
348
+        $this->channel_status[NET_SFTP_CHANNEL] = NET_SSH2_MSG_CHANNEL_OPEN;
349
+
350
+        $response = $this->_get_channel_packet(NET_SFTP_CHANNEL);
351
+        if ($response === false) {
352
+            return false;
353
+        }
354
+
355
+        $packet = pack('CNNa*CNa*',
356
+            NET_SSH2_MSG_CHANNEL_REQUEST, $this->server_channels[NET_SFTP_CHANNEL], strlen('subsystem'), 'subsystem', 1, strlen('sftp'), 'sftp');
357
+        if (!$this->_send_binary_packet($packet)) {
358
+            return false;
359
+        }
360
+
361
+        $this->channel_status[NET_SFTP_CHANNEL] = NET_SSH2_MSG_CHANNEL_REQUEST;
362
+
363
+        $response = $this->_get_channel_packet(NET_SFTP_CHANNEL);
364
+        if ($response === false) {
365
+            return false;
366
+        }
367
+
368
+        $this->channel_status[NET_SFTP_CHANNEL] = NET_SSH2_MSG_CHANNEL_DATA;
369
+
370
+        if (!$this->_send_sftp_packet(NET_SFTP_INIT, "\0\0\0\3")) {
371
+            return false;
372
+        }
373
+
374
+        $response = $this->_get_sftp_packet();
375
+        if ($this->packet_type != NET_SFTP_VERSION) {
376
+            user_error('Expected SSH_FXP_VERSION', E_USER_NOTICE);
377
+            return false;
378
+        }
379
+
380
+        extract(unpack('Nversion', $this->_string_shift($response, 4)));
381
+        $this->version = $version;
382
+        while (!empty($response)) {
383
+            extract(unpack('Nlength', $this->_string_shift($response, 4)));
384
+            $key = $this->_string_shift($response, $length);
385
+            extract(unpack('Nlength', $this->_string_shift($response, 4)));
386
+            $value = $this->_string_shift($response, $length);
387
+            $this->extensions[$key] = $value;
388
+        }
389
+
390
+        /*
391
+         SFTPv4+ defines a 'newline' extension.  SFTPv3 seems to have unofficial support for it via '[email protected]',
392
+         however, I'm not sure what '[email protected]' is supposed to do (the fact that it's unofficial means that it's
393
+         not in the official SFTPv3 specs) and '[email protected]' / 'newline' are likely not drop-in substitutes for
394
+         one another due to the fact that 'newline' comes with a SSH_FXF_TEXT bitmask whereas it seems unlikely that
395
+         '[email protected]' would.
396
+        */
397
+        /*
398
+        if (isset($this->extensions['[email protected]'])) {
399
+            $this->extensions['newline'] = $this->extensions['[email protected]'];
400
+            unset($this->extensions['[email protected]']);
401
+        }
402
+        */
403
+
404
+        $this->request_id = 1;
405
+
406
+        /*
407
+         A Note on SFTPv4/5/6 support:
408
+         <http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-5.1> states the following:
409
+
410
+         "If the client wishes to interoperate with servers that support noncontiguous version
411
+          numbers it SHOULD send '3'"
412
+
413
+         Given that the server only sends its version number after the client has already done so, the above
414
+         seems to be suggesting that v3 should be the default version.  This makes sense given that v3 is the
415
+         most popular.
416
+
417
+         <http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-5.5> states the following;
418
+
419
+         "If the server did not send the "versions" extension, or the version-from-list was not included, the
420
+          server MAY send a status response describing the failure, but MUST then close the channel without
421
+          processing any further requests."
422
+
423
+         So what do you do if you have a client whose initial SSH_FXP_INIT packet says it implements v3 and
424
+         a server whose initial SSH_FXP_VERSION reply says it implements v4 and only v4?  If it only implements
425
+         v4, the "versions" extension is likely not going to have been sent so version re-negotiation as discussed
426
+         in draft-ietf-secsh-filexfer-13 would be quite impossible.  As such, what Net_SFTP would do is close the
427
+         channel and reopen it with a new and updated SSH_FXP_INIT packet.
428
+        */
429
+        if ($this->version != 3) {
430
+            return false;
431
+        }
432
+
433
+        $this->pwd = $this->_realpath('.');
434
+
435
+        return true;
436
+    }
437
+
438
+    /**
439
+     * Returns the current directory name
440
+     *
441
+     * @return Mixed
442
+     * @access public
443
+     */
444
+    function pwd()
445
+    {
446
+        return $this->pwd;
447
+    }
448
+
449
+    /**
450
+     * Canonicalize the Server-Side Path Name
451
+     *
452
+     * SFTP doesn't provide a mechanism by which the current working directory can be changed, so we'll emulate it.  Returns
453
+     * the absolute (canonicalized) path.  If $mode is set to NET_SFTP_CONFIRM_DIR (as opposed to NET_SFTP_CONFIRM_NONE,
454
+     * which is what it is set to by default), false is returned if $dir is not a valid directory.
455
+     *
456
+     * @see Net_SFTP::chdir()
457
+     * @param String $dir
458
+     * @param optional Integer $mode
459
+     * @return Mixed
460
+     * @access private
461
+     */
462
+    function _realpath($dir)
463
+    {
464
+        /*
465
+        "This protocol represents file names as strings.  File names are
466
+         assumed to use the slash ('/') character as a directory separator.
467
+
468
+         File names starting with a slash are "absolute", and are relative to
469
+         the root of the file system.  Names starting with any other character
470
+         are relative to the user's default directory (home directory).  Note
471
+         that identifying the user is assumed to take place outside of this
472
+         protocol."
473
+
474
+         -- http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-6
475
+        */
476
+        $file = '';
477
+        if ($this->pwd !== false) {
478
+            // if the SFTP server returned the canonicalized path even for non-existant files this wouldn't be necessary
479
+            // on OpenSSH it isn't necessary but on other SFTP servers it is.  that and since the specs say nothing on
480
+            // the subject, we'll go ahead and work around it with the following.
481
+            if ($dir[strlen($dir) - 1] != '/') {
482
+                $file = basename($dir);
483
+                $dir = dirname($dir);
484
+            }
485
+
486
+            if ($dir == '.' || $dir == $this->pwd) {
487
+                return $this->pwd . $file;
488
+            }
489
+
490
+            if ($dir[0] != '/') {
491
+                $dir = $this->pwd . '/' . $dir;
492
+            }
493
+            // on the surface it seems like maybe resolving a path beginning with / is unnecessary, but such paths
494
+            // can contain .'s and ..'s just like any other.  we could parse those out as appropriate or we can let
495
+            // the server do it.  we'll do the latter.
496
+        }
497
+
498
+        /*
499
+         that SSH_FXP_REALPATH returns SSH_FXP_NAME does not necessarily mean that anything actually exists at the
500
+         specified path.  generally speaking, no attributes are returned with this particular SSH_FXP_NAME packet
501
+         regardless of whether or not a file actually exists.  and in SFTPv3, the longname field and the filename
502
+         field match for this particular SSH_FXP_NAME packet.  for other SSH_FXP_NAME packets, this will likely
503
+         not be the case, but for this one, it is.
504
+        */
505
+        // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.9
506
+        if (!$this->_send_sftp_packet(NET_SFTP_REALPATH, pack('Na*', strlen($dir), $dir))) {
507
+            return false;
508
+        }
509
+
510
+        $response = $this->_get_sftp_packet();
511
+        switch ($this->packet_type) {
512
+            case NET_SFTP_NAME:
513
+                // although SSH_FXP_NAME is implemented differently in SFTPv3 than it is in SFTPv4+, the following
514
+                // should work on all SFTP versions since the only part of the SSH_FXP_NAME packet the following looks
515
+                // at is the first part and that part is defined the same in SFTP versions 3 through 6.
516
+                $this->_string_shift($response, 4); // skip over the count - it should be 1, anyway
517
+                extract(unpack('Nlength', $this->_string_shift($response, 4)));
518
+                $realpath = $this->_string_shift($response, $length);
519
+                // the following is SFTPv3 only code.  see Net_SFTP::_parseLongname() for more information.
520
+                // per the above comment, this is a shot in the dark that, on most servers, won't help us in determining
521
+                // the file type for Net_SFTP::stat() and Net_SFTP::lstat() but it's worth a shot.
522
+                extract(unpack('Nlength', $this->_string_shift($response, 4)));
523
+                $this->fileType = $this->_parseLongname($this->_string_shift($response, $length));
524
+                break;
525
+            case NET_SFTP_STATUS:
526
+                extract(unpack('Nstatus/Nlength', $this->_string_shift($response, 8)));
527
+                $this->sftp_errors[] = $this->status_codes[$status] . ': ' . $this->_string_shift($response, $length);
528
+                return false;
529
+            default:
530
+                user_error('Expected SSH_FXP_NAME or SSH_FXP_STATUS', E_USER_NOTICE);
531
+                return false;
532
+        }
533
+
534
+        // if $this->pwd isn't set than the only thing $realpath could be is for '.', which is pretty much guaranteed to
535
+        // be a bonafide directory
536
+        return $realpath . '/' . $file;
537
+    }
538
+
539
+    /**
540
+     * Changes the current directory
541
+     *
542
+     * @param String $dir
543
+     * @return Boolean
544
+     * @access public
545
+     */
546
+    function chdir($dir)
547
+    {
548
+        if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) {
549
+            return false;
550
+        }
551
+
552
+        if ($dir[strlen($dir) - 1] != '/') {
553
+            $dir.= '/';
554
+        }
555
+        $dir = $this->_realpath($dir);
556
+
557
+        // confirm that $dir is, in fact, a valid directory
558
+        if (!$this->_send_sftp_packet(NET_SFTP_OPENDIR, pack('Na*', strlen($dir), $dir))) {
559
+            return false;
560
+        }
561
+
562
+        // see Net_SFTP::nlist() for a more thorough explanation of the following
563
+        $response = $this->_get_sftp_packet();
564
+        switch ($this->packet_type) {
565
+            case NET_SFTP_HANDLE:
566
+                $handle = substr($response, 4);
567
+                break;
568
+            case NET_SFTP_STATUS:
569
+                extract(unpack('Nstatus/Nlength', $this->_string_shift($response, 8)));
570
+                $this->sftp_errors[] = $this->status_codes[$status] . ': ' . $this->_string_shift($response, $length);
571
+                return false;
572
+            default:
573
+                user_error('Expected SSH_FXP_HANDLE or SSH_FXP_STATUS', E_USER_NOTICE);
574
+                return false;
575
+        }
576
+
577
+        if (!$this->_send_sftp_packet(NET_SFTP_CLOSE, pack('Na*', strlen($handle), $handle))) {
578
+            return false;
579
+        }
580
+
581
+        $response = $this->_get_sftp_packet();
582
+        if ($this->packet_type != NET_SFTP_STATUS) {
583
+            user_error('Expected SSH_FXP_STATUS', E_USER_NOTICE);
584
+            return false;
585
+        }
586
+
587
+        extract(unpack('Nstatus', $this->_string_shift($response, 4)));
588
+        if ($status != NET_SFTP_STATUS_OK) {
589
+            extract(unpack('Nlength', $this->_string_shift($response, 4)));
590
+            $this->sftp_errors[] = $this->status_codes[$status] . ': ' . $this->_string_shift($response, $length);
591
+            return false;
592
+        }
593
+
594
+        $this->pwd = $dir;
595
+        return true;
596
+    }
597
+
598
+    /**
599
+     * Returns a list of files in the given directory
600
+     *
601
+     * @param optional String $dir
602
+     * @return Mixed
603
+     * @access public
604
+     */
605
+    function nlist($dir = '.')
606
+    {
607
+        return $this->_list($dir, false);
608
+    }
609
+
610
+    /**
611
+     * Returns a detailed list of files in the given directory
612
+     *
613
+     * @param optional String $dir
614
+     * @return Mixed
615
+     * @access public
616
+     */
617
+    function rawlist($dir = '.')
618
+    {
619
+        return $this->_list($dir, true);
620
+    }
621
+
622
+    /**
623
+     * Reads a list, be it detailed or not, of files in the given directory
624
+     *
625
+     * @param optional String $dir
626
+     * @return Mixed
627
+     * @access private
628
+     */
629
+    function _list($dir, $raw = true)
630
+    {
631
+        if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) {
632
+            return false;
633
+        }
634
+
635
+        $dir = $this->_realpath($dir);
636
+        if ($dir === false) {
637
+            return false;
638
+        }
639
+
640
+        // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.1.2
641
+        if (!$this->_send_sftp_packet(NET_SFTP_OPENDIR, pack('Na*', strlen($dir), $dir))) {
642
+            return false;
643
+        }
644
+
645
+        $response = $this->_get_sftp_packet();
646
+        switch ($this->packet_type) {
647
+            case NET_SFTP_HANDLE:
648
+                // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-9.2
649
+                // since 'handle' is the last field in the SSH_FXP_HANDLE packet, we'll just remove the first four bytes that
650
+                // represent the length of the string and leave it at that
651
+                $handle = substr($response, 4);
652
+                break;
653
+            case NET_SFTP_STATUS:
654
+                // presumably SSH_FX_NO_SUCH_FILE or SSH_FX_PERMISSION_DENIED
655
+                extract(unpack('Nstatus/Nlength', $this->_string_shift($response, 8)));
656
+                $this->sftp_errors[] = $this->status_codes[$status] . ': ' . $this->_string_shift($response, $length);
657
+                return false;
658
+            default:
659
+                user_error('Expected SSH_FXP_HANDLE or SSH_FXP_STATUS', E_USER_NOTICE);
660
+                return false;
661
+        }
662
+
663
+        $contents = array();
664
+        while (true) {
665
+            // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.2.2
666
+            // why multiple SSH_FXP_READDIR packets would be sent when the response to a single one can span arbitrarily many
667
+            // SSH_MSG_CHANNEL_DATA messages is not known to me.
668
+            if (!$this->_send_sftp_packet(NET_SFTP_READDIR, pack('Na*', strlen($handle), $handle))) {
669
+                return false;
670
+            }
671
+
672
+            $response = $this->_get_sftp_packet();
673
+            switch ($this->packet_type) {
674
+                case NET_SFTP_NAME:
675
+                    extract(unpack('Ncount', $this->_string_shift($response, 4)));
676
+                    for ($i = 0; $i < $count; $i++) {
677
+                        extract(unpack('Nlength', $this->_string_shift($response, 4)));
678
+                        $shortname = $this->_string_shift($response, $length);
679
+                        extract(unpack('Nlength', $this->_string_shift($response, 4)));
680
+                        $longname = $this->_string_shift($response, $length);
681
+                        $attributes = $this->_parseAttributes($response); // we also don't care about the attributes
682
+                        if (!$raw) {
683
+                            $contents[] = $shortname;
684
+                        } else {
685
+                            $contents[$shortname] = $attributes;
686
+                            $fileType = $this->_parseLongname($longname);
687
+                            if ($fileType) {
688
+                                $contents[$shortname]['type'] = $fileType;
689
+                            }
690
+                        }
691
+                        // SFTPv6 has an optional boolean end-of-list field, but we'll ignore that, since the
692
+                        // final SSH_FXP_STATUS packet should tell us that, already.
693
+                    }
694
+                    break;
695
+                case NET_SFTP_STATUS:
696
+                    extract(unpack('Nstatus', $this->_string_shift($response, 4)));
697
+                    if ($status != NET_SFTP_STATUS_EOF) {
698
+                        extract(unpack('Nlength', $this->_string_shift($response, 4)));
699
+                        $this->sftp_errors[] = $this->status_codes[$status] . ': ' . $this->_string_shift($response, $length);
700
+                        return false;
701
+                    }
702
+                    break 2;
703
+                default:
704
+                    user_error('Expected SSH_FXP_NAME or SSH_FXP_STATUS', E_USER_NOTICE);
705
+                    return false;
706
+            }
707
+        }
708
+
709
+        if (!$this->_send_sftp_packet(NET_SFTP_CLOSE, pack('Na*', strlen($handle), $handle))) {
710
+            return false;
711
+        }
712
+
713
+        // "The client MUST release all resources associated with the handle regardless of the status."
714
+        //  -- http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.1.3
715
+        $response = $this->_get_sftp_packet();
716
+        if ($this->packet_type != NET_SFTP_STATUS) {
717
+            user_error('Expected SSH_FXP_STATUS', E_USER_NOTICE);
718
+            return false;
719
+        }
720
+
721
+        extract(unpack('Nstatus', $this->_string_shift($response, 4)));
722
+        if ($status != NET_SFTP_STATUS_OK) {
723
+            extract(unpack('Nlength', $this->_string_shift($response, 4)));
724
+            $this->sftp_errors[] = $this->status_codes[$status] . ': ' . $this->_string_shift($response, $length);
725
+            return false;
726
+        }
727
+
728
+        return $contents;
729
+    }
730
+
731
+    /**
732
+     * Returns the file size, in bytes, or false, on failure
733
+     *
734
+     * Files larger than 4GB will show up as being exactly 4GB.
735
+     *
736
+     * @param String $filename
737
+     * @return Mixed
738
+     * @access public
739
+     */
740
+    function size($filename)
741
+    {
742
+        if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) {
743
+            return false;
744
+        }
745
+
746
+        $filename = $this->_realpath($filename);
747
+        if ($filename === false) {
748
+            return false;
749
+        }
750
+
751
+        return $this->_size($filename);
752
+    }
753
+
754
+    /**
755
+     * Returns general information about a file.
756
+     *
757
+     * Returns an array on success and false otherwise.
758
+     *
759
+     * @param String $filename
760
+     * @return Mixed
761
+     * @access public
762
+     */
763
+    function stat($filename)
764
+    {
765
+        if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) {
766
+            return false;
767
+        }
768
+
769
+        $filename = $this->_realpath($filename);
770
+        if ($filename === false) {
771
+            return false;
772
+        }
773
+
774
+        return $this->_stat($filename, NET_SFTP_STAT);
775
+    }
776
+
777
+    /**
778
+     * Returns general information about a file or symbolic link.
779
+     *
780
+     * Returns an array on success and false otherwise.
781
+     *
782
+     * @param String $filename
783
+     * @return Mixed
784
+     * @access public
785
+     */
786
+    function lstat($filename)
787
+    {
788
+        if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) {
789
+            return false;
790
+        }
791
+
792
+        $filename = $this->_realpath($filename);
793
+        if ($filename === false) {
794
+            return false;
795
+        }
796
+
797
+        return $this->_stat($filename, NET_SFTP_LSTAT);
798
+    }
799
+
800
+    /**
801
+     * Returns general information about a file or symbolic link
802
+     *
803
+     * Determines information without calling Net_SFTP::_realpath().
804
+     * The second parameter can be either NET_SFTP_STAT or NET_SFTP_LSTAT.
805
+     *
806
+     * @param String $filename
807
+     * @param Integer $type
808
+     * @return Mixed
809
+     * @access private
810
+     */
811
+    function _stat($filename, $type)
812
+    {
813
+        // SFTPv4+ adds an additional 32-bit integer field - flags - to the following:
814
+        $packet = pack('Na*', strlen($filename), $filename);
815
+        if (!$this->_send_sftp_packet($type, $packet)) {
816
+            return false;
817
+        }
818
+
819
+        $response = $this->_get_sftp_packet();
820
+        switch ($this->packet_type) {
821
+            case NET_SFTP_ATTRS:
822
+                $attributes = $this->_parseAttributes($response);
823
+                if ($this->fileType) {
824
+                    $attributes['type'] = $this->fileType;
825
+                }
826
+                return $attributes;
827
+            case NET_SFTP_STATUS:
828
+                extract(unpack('Nstatus/Nlength', $this->_string_shift($response, 8)));
829
+                $this->sftp_errors[] = $this->status_codes[$status] . ': ' . $this->_string_shift($response, $length);
830
+                return false;
831
+        }
832
+
833
+        user_error('Expected SSH_FXP_ATTRS or SSH_FXP_STATUS', E_USER_NOTICE);
834
+        return false;
835
+    }
836
+
837
+    /**
838
+     * Returns the file size, in bytes, or false, on failure
839
+     *
840
+     * Determines the size without calling Net_SFTP::_realpath()
841
+     *
842
+     * @param String $filename
843
+     * @return Mixed
844
+     * @access private
845
+     */
846
+    function _size($filename)
847
+    {
848
+        $result = $this->_stat($filename, NET_SFTP_LSTAT);
849
+        return $result === false ? false : $result['size'];
850
+    }
851
+
852
+    /**
853
+     * Set permissions on a file.
854
+     *
855
+     * Returns the new file permissions on success or FALSE on error.
856
+     *
857
+     * @param Integer $mode
858
+     * @param String $filename
859
+     * @return Mixed
860
+     * @access public
861
+     */
862
+    function chmod($mode, $filename)
863
+    {
864
+        if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) {
865
+            return false;
866
+        }
867
+
868
+        $filename = $this->_realpath($filename);
869
+        if ($filename === false) {
870
+            return false;
871
+        }
872
+
873
+        // SFTPv4+ has an additional byte field - type - that would need to be sent, as well. setting it to
874
+        // SSH_FILEXFER_TYPE_UNKNOWN might work. if not, we'd have to do an SSH_FXP_STAT before doing an SSH_FXP_SETSTAT.
875
+        $attr = pack('N2', NET_SFTP_ATTR_PERMISSIONS, $mode & 07777);
876
+        if (!$this->_send_sftp_packet(NET_SFTP_SETSTAT, pack('Na*a*', strlen($filename), $filename, $attr))) {
877
+            return false;
878
+        }
879
+
880
+        /*
881
+         "Because some systems must use separate system calls to set various attributes, it is possible that a failure 
882
+          response will be returned, but yet some of the attributes may be have been successfully modified.  If possible,
883
+          servers SHOULD avoid this situation; however, clients MUST be aware that this is possible."
884
+
885
+          -- http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.6
886
+        */
887
+        $response = $this->_get_sftp_packet();
888
+        if ($this->packet_type != NET_SFTP_STATUS) {
889
+            user_error('Expected SSH_FXP_STATUS', E_USER_NOTICE);
890
+            return false;
891
+        }
892
+
893
+        extract(unpack('Nstatus', $this->_string_shift($response, 4)));
894
+        if ($status != NET_SFTP_STATUS_EOF) {
895
+            extract(unpack('Nlength', $this->_string_shift($response, 4)));
896
+            $this->sftp_errors[] = $this->status_codes[$status] . ': ' . $this->_string_shift($response, $length);
897
+        }
898
+
899
+        // rather than return what the permissions *should* be, we'll return what they actually are.  this will also
900
+        // tell us if the file actually exists.
901
+        // incidentally, SFTPv4+ adds an additional 32-bit integer field - flags - to the following:
902
+        $packet = pack('Na*', strlen($filename), $filename);
903
+        if (!$this->_send_sftp_packet(NET_SFTP_STAT, $packet)) {
904
+            return false;
905
+        }
906
+
907
+        $response = $this->_get_sftp_packet();
908
+        switch ($this->packet_type) {
909
+            case NET_SFTP_ATTRS:
910
+                $attrs = $this->_parseAttributes($response);
911
+                return $attrs['permissions'];
912
+            case NET_SFTP_STATUS:
913
+                extract(unpack('Nstatus/Nlength', $this->_string_shift($response, 8)));
914
+                $this->sftp_errors[] = $this->status_codes[$status] . ': ' . $this->_string_shift($response, $length);
915
+                return false;
916
+        }
917
+
918
+        user_error('Expected SSH_FXP_ATTRS or SSH_FXP_STATUS', E_USER_NOTICE);
919
+        return false;
920
+    }
921
+
922
+    /**
923
+     * Creates a directory.
924
+     *
925
+     * @param String $dir
926
+     * @return Boolean
927
+     * @access public
928
+     */
929
+    function mkdir($dir)
930
+    {
931
+        if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) {
932
+            return false;
933
+        }
934
+
935
+        $dir = $this->_realpath(rtrim($dir, '/'));
936
+        if ($dir === false) {
937
+            return false;
938
+        }
939
+
940
+        // by not providing any permissions, hopefully the server will use the logged in users umask - their 
941
+        // default permissions.
942
+        if (!$this->_send_sftp_packet(NET_SFTP_MKDIR, pack('Na*N', strlen($dir), $dir, 0))) {
943
+            return false;
944
+        }
945
+
946
+        $response = $this->_get_sftp_packet();
947
+        if ($this->packet_type != NET_SFTP_STATUS) {
948
+            user_error('Expected SSH_FXP_STATUS', E_USER_NOTICE);
949
+            return false;
950
+        }
951
+
952
+        extract(unpack('Nstatus', $this->_string_shift($response, 4)));
953
+        if ($status != NET_SFTP_STATUS_OK) {
954
+            extract(unpack('Nlength', $this->_string_shift($response, 4)));
955
+            $this->sftp_errors[] = $this->status_codes[$status] . ': ' . $this->_string_shift($response, $length);
956
+            return false;
957
+        }
958
+
959
+        return true;
960
+    }
961
+
962
+    /**
963
+     * Removes a directory.
964
+     *
965
+     * @param String $dir
966
+     * @return Boolean
967
+     * @access public
968
+     */
969
+    function rmdir($dir)
970
+    {
971
+        if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) {
972
+            return false;
973
+        }
974
+
975
+        $dir = $this->_realpath($dir);
976
+        if ($dir === false) {
977
+            return false;
978
+        }
979
+
980
+        if (!$this->_send_sftp_packet(NET_SFTP_RMDIR, pack('Na*', strlen($dir), $dir))) {
981
+            return false;
982
+        }
983
+
984
+        $response = $this->_get_sftp_packet();
985
+        if ($this->packet_type != NET_SFTP_STATUS) {
986
+            user_error('Expected SSH_FXP_STATUS', E_USER_NOTICE);
987
+            return false;
988
+        }
989
+
990
+        extract(unpack('Nstatus', $this->_string_shift($response, 4)));
991
+        if ($status != NET_SFTP_STATUS_OK) {
992
+            // presumably SSH_FX_NO_SUCH_FILE or SSH_FX_PERMISSION_DENIED?
993
+            extract(unpack('Nlength', $this->_string_shift($response, 4)));
994
+            $this->sftp_errors[] = $this->status_codes[$status] . ': ' . $this->_string_shift($response, $length);
995
+            return false;
996
+        }
997
+
998
+        return true;
999
+    }
1000
+
1001
+    /**
1002
+     * Uploads a file to the SFTP server.
1003
+     *
1004
+     * By default, Net_SFTP::put() does not read from the local filesystem.  $data is dumped directly into $remote_file.
1005
+     * So, for example, if you set $data to 'filename.ext' and then do Net_SFTP::get(), you will get a file, twelve bytes
1006
+     * long, containing 'filename.ext' as its contents.
1007
+     *
1008
+     * Setting $mode to NET_SFTP_LOCAL_FILE will change the above behavior.  With NET_SFTP_LOCAL_FILE, $remote_file will 
1009
+     * contain as many bytes as filename.ext does on your local filesystem.  If your filename.ext is 1MB then that is how
1010
+     * large $remote_file will be, as well.
1011
+     *
1012
+     * Currently, only binary mode is supported.  As such, if the line endings need to be adjusted, you will need to take
1013
+     * care of that, yourself.
1014
+     *
1015
+     * @param String $remote_file
1016
+     * @param String $data
1017
+     * @param optional Integer $mode
1018
+     * @return Boolean
1019
+     * @access public
1020
+     * @internal ASCII mode for SFTPv4/5/6 can be supported by adding a new function - Net_SFTP::setMode().
1021
+     */
1022
+    function put($remote_file, $data, $mode = NET_SFTP_STRING)
1023
+    {
1024
+        if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) {
1025
+            return false;
1026
+        }
1027
+
1028
+        $remote_file = $this->_realpath($remote_file);
1029
+        if ($remote_file === false) {
1030
+            return false;
1031
+        }
1032
+
1033
+        $packet = pack('Na*N2', strlen($remote_file), $remote_file, NET_SFTP_OPEN_WRITE | NET_SFTP_OPEN_CREATE | NET_SFTP_OPEN_TRUNCATE, 0);
1034
+        if (!$this->_send_sftp_packet(NET_SFTP_OPEN, $packet)) {
1035
+            return false;
1036
+        }
1037
+
1038
+        $response = $this->_get_sftp_packet();
1039
+        switch ($this->packet_type) {
1040
+            case NET_SFTP_HANDLE:
1041
+                $handle = substr($response, 4);
1042
+                break;
1043
+            case NET_SFTP_STATUS:
1044
+                extract(unpack('Nstatus/Nlength', $this->_string_shift($response, 8)));
1045
+                $this->sftp_errors[] = $this->status_codes[$status] . ': ' . $this->_string_shift($response, $length);
1046
+                return false;
1047
+            default:
1048
+                user_error('Expected SSH_FXP_HANDLE or SSH_FXP_STATUS', E_USER_NOTICE);
1049
+                return false;
1050
+        }
1051
+
1052
+        $initialize = true;
1053
+
1054
+        // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.2.3
1055
+        if ($mode == NET_SFTP_LOCAL_FILE) {
1056
+            if (!is_file($data)) {
1057
+                user_error("$data is not a valid file", E_USER_NOTICE);
1058
+                return false;
1059
+            }
1060
+            $fp = @fopen($data, 'rb');
1061
+            if (!$fp) {
1062
+                return false;
1063
+            }
1064
+            $sent = 0;
1065
+            $size = filesize($data);
1066
+        } else {
1067
+            $sent = 0;
1068
+            $size = strlen($data);
1069
+        }
1070
+
1071
+        $size = $size < 0 ? ($size & 0x7FFFFFFF) + 0x80000000 : $size;
1072
+
1073
+        $sftp_packet_size = 4096; // PuTTY uses 4096
1074
+        $i = 0;
1075
+        while ($sent < $size) {
1076
+            $temp = $mode == NET_SFTP_LOCAL_FILE ? fread($fp, $sftp_packet_size) : $this->_string_shift($data, $sftp_packet_size);
1077
+            $packet = pack('Na*N3a*', strlen($handle), $handle, 0, $sent, strlen($temp), $temp);
1078
+            if (!$this->_send_sftp_packet(NET_SFTP_WRITE, $packet)) {
1079
+                fclose($fp);
1080
+                return false;
1081
+            }
1082
+            $sent+= strlen($temp);
1083
+
1084
+            $i++;
1085
+
1086
+            if ($i == 50) {
1087
+                if (!$this->_read_put_responses($i)) {
1088
+                    $i = 0;
1089
+                    break;
1090
+                }
1091
+                $i = 0;
1092
+            }
1093
+        }
1094
+
1095
+        $this->_read_put_responses($i);
1096
+
1097
+        if ($mode == NET_SFTP_LOCAL_FILE) {
1098
+            fclose($fp);
1099
+        }
1100
+
1101
+        if (!$this->_send_sftp_packet(NET_SFTP_CLOSE, pack('Na*', strlen($handle), $handle))) {
1102
+            return false;
1103
+        }
1104
+
1105
+        $response = $this->_get_sftp_packet();
1106
+        if ($this->packet_type != NET_SFTP_STATUS) {
1107
+            user_error('Expected SSH_FXP_STATUS', E_USER_NOTICE);
1108
+            return false;
1109
+        }
1110
+
1111
+        extract(unpack('Nstatus', $this->_string_shift($response, 4)));
1112
+        if ($status != NET_SFTP_STATUS_OK) {
1113
+            extract(unpack('Nlength', $this->_string_shift($response, 4)));
1114
+            $this->sftp_errors[] = $this->status_codes[$status] . ': ' . $this->_string_shift($response, $length);
1115
+            return false;
1116
+        }
1117
+
1118
+        return true;
1119
+    }
1120
+
1121
+    /**
1122
+     * Reads multiple successive SSH_FXP_WRITE responses
1123
+     *
1124
+     * Sending an SSH_FXP_WRITE packet and immediately reading its response isn't as efficient as blindly sending out $i
1125
+     * SSH_FXP_WRITEs, in succession, and then reading $i responses.
1126
+     *
1127
+     * @param Integer $i
1128
+     * @return Boolean
1129
+     * @access private
1130
+     */
1131
+    function _read_put_responses($i)
1132
+    {
1133
+        while ($i--) {
1134
+            $response = $this->_get_sftp_packet();
1135
+            if ($this->packet_type != NET_SFTP_STATUS) {
1136
+                user_error('Expected SSH_FXP_STATUS', E_USER_NOTICE);
1137
+                return false;
1138
+            }
1139
+
1140
+            extract(unpack('Nstatus', $this->_string_shift($response, 4)));
1141
+            if ($status != NET_SFTP_STATUS_OK) {
1142
+                extract(unpack('Nlength', $this->_string_shift($response, 4)));
1143
+                $this->sftp_errors[] = $this->status_codes[$status] . ': ' . $this->_string_shift($response, $length);
1144
+                break;
1145
+            }
1146
+        }
1147
+
1148
+        return $i < 0;
1149
+    }
1150
+
1151
+    /**
1152
+     * Downloads a file from the SFTP server.
1153
+     *
1154
+     * Returns a string containing the contents of $remote_file if $local_file is left undefined or a boolean false if
1155
+     * the operation was unsuccessful.  If $local_file is defined, returns true or false depending on the success of the
1156
+     * operation
1157
+     *
1158
+     * @param String $remote_file
1159
+     * @param optional String $local_file
1160
+     * @return Mixed
1161
+     * @access public
1162
+     */
1163
+    function get($remote_file, $local_file = false)
1164
+    {
1165
+        if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) {
1166
+            return false;
1167
+        }
1168
+
1169
+        $remote_file = $this->_realpath($remote_file);
1170
+        if ($remote_file === false) {
1171
+            return false;
1172
+        }
1173
+
1174
+        $size = $this->_size($remote_file);
1175
+        if ($size === false) {
1176
+            return false;
1177
+        }
1178
+
1179
+        $packet = pack('Na*N2', strlen($remote_file), $remote_file, NET_SFTP_OPEN_READ, 0);
1180
+        if (!$this->_send_sftp_packet(NET_SFTP_OPEN, $packet)) {
1181
+            return false;
1182
+        }
1183
+
1184
+        $response = $this->_get_sftp_packet();
1185
+        switch ($this->packet_type) {
1186
+            case NET_SFTP_HANDLE:
1187
+                $handle = substr($response, 4);
1188
+                break;
1189
+            case NET_SFTP_STATUS: // presumably SSH_FX_NO_SUCH_FILE or SSH_FX_PERMISSION_DENIED
1190
+                extract(unpack('Nstatus/Nlength', $this->_string_shift($response, 8)));
1191
+                $this->sftp_errors[] = $this->status_codes[$status] . ': ' . $this->_string_shift($response, $length);
1192
+                return false;
1193
+            default:
1194
+                user_error('Expected SSH_FXP_HANDLE or SSH_FXP_STATUS', E_USER_NOTICE);
1195
+                return false;
1196
+        }
1197
+
1198
+        if ($local_file !== false) {
1199
+            $fp = fopen($local_file, 'wb');
1200
+            if (!$fp) {
1201
+                return false;
1202
+            }
1203
+        } else {
1204
+            $content = '';
1205
+        }
1206
+
1207
+        $read = 0;
1208
+        while ($read < $size) {
1209
+            $packet = pack('Na*N3', strlen($handle), $handle, 0, $read, 1 << 20);
1210
+            if (!$this->_send_sftp_packet(NET_SFTP_READ, $packet)) {
1211
+                return false;
1212
+            }
1213
+
1214
+            $response = $this->_get_sftp_packet();
1215
+            switch ($this->packet_type) {
1216
+                case NET_SFTP_DATA:
1217
+                    $temp = substr($response, 4);
1218
+                    $read+= strlen($temp);
1219
+                    if ($local_file === false) {
1220
+                        $content.= $temp;
1221
+                    } else {
1222
+                        fputs($fp, $temp);
1223
+                    }
1224
+                    break;
1225
+                case NET_SFTP_STATUS:
1226
+                    extract(unpack('Nstatus/Nlength', $this->_string_shift($response, 8)));
1227
+                    $this->sftp_errors[] = $this->status_codes[$status] . ': ' . $this->_string_shift($response, $length);
1228
+                    break 2;
1229
+                default:
1230
+                    user_error('Expected SSH_FXP_DATA or SSH_FXP_STATUS', E_USER_NOTICE);
1231
+                    return false;
1232
+            }
1233
+        }
1234
+
1235
+        if (!$this->_send_sftp_packet(NET_SFTP_CLOSE, pack('Na*', strlen($handle), $handle))) {
1236
+            return false;
1237
+        }
1238
+
1239
+        $response = $this->_get_sftp_packet();
1240
+        if ($this->packet_type != NET_SFTP_STATUS) {
1241
+            user_error('Expected SSH_FXP_STATUS', E_USER_NOTICE);
1242
+            return false;
1243
+        }
1244
+
1245
+        extract(unpack('Nstatus/Nlength', $this->_string_shift($response, 8)));
1246
+        $this->sftp_errors[] = $this->status_codes[$status] . ': ' . $this->_string_shift($response, $length);
1247
+
1248
+        // check the status from the NET_SFTP_STATUS case in the above switch after the file has been closed
1249
+        if ($status != NET_SFTP_STATUS_OK) {
1250
+            return false;
1251
+        }
1252
+
1253
+        extract(unpack('Nstatus', $this->_string_shift($response, 4)));
1254
+        if ($status != NET_SFTP_STATUS_OK) {
1255
+            extract(unpack('Nlength', $this->_string_shift($response, 4)));
1256
+            $this->sftp_errors[] = $this->status_codes[$status] . ': ' . $this->_string_shift($response, $length);
1257
+            return false;
1258
+        }
1259
+
1260
+        if (isset($content)) {
1261
+            return $content;
1262
+        }
1263
+
1264
+        fclose($fp);
1265
+        return true;
1266
+    }
1267
+
1268
+    /**
1269
+     * Deletes a file on the SFTP server.
1270
+     *
1271
+     * @param String $path
1272
+     * @return Boolean
1273
+     * @access public
1274
+     */
1275
+    function delete($path)
1276
+    {
1277
+        if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) {
1278
+            return false;
1279
+        }
1280
+
1281
+        $path = $this->_realpath($path);
1282
+        if ($path === false) {
1283
+            return false;
1284
+        }
1285
+
1286
+        // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.3
1287
+        if (!$this->_send_sftp_packet(NET_SFTP_REMOVE, pack('Na*', strlen($path), $path))) {
1288
+            return false;
1289
+        }
1290
+
1291
+        $response = $this->_get_sftp_packet();
1292
+        if ($this->packet_type != NET_SFTP_STATUS) {
1293
+            user_error('Expected SSH_FXP_STATUS', E_USER_NOTICE);
1294
+            return false;
1295
+        }
1296
+
1297
+        // if $status isn't SSH_FX_OK it's probably SSH_FX_NO_SUCH_FILE or SSH_FX_PERMISSION_DENIED
1298
+        extract(unpack('Nstatus', $this->_string_shift($response, 4)));
1299
+        if ($status != NET_SFTP_STATUS_OK) {
1300
+            extract(unpack('Nlength', $this->_string_shift($response, 4)));
1301
+            $this->sftp_errors[] = $this->status_codes[$status] . ': ' . $this->_string_shift($response, $length);
1302
+            return false;
1303
+        }
1304
+
1305
+        return true;
1306
+    }
1307
+
1308
+    /**
1309
+     * Renames a file or a directory on the SFTP server
1310
+     *
1311
+     * @param String $oldname
1312
+     * @param String $newname
1313
+     * @return Boolean
1314
+     * @access public
1315
+     */
1316
+    function rename($oldname, $newname)
1317
+    {
1318
+        if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) {
1319
+            return false;
1320
+        }
1321
+
1322
+        $oldname = $this->_realpath($oldname);
1323
+        $newname = $this->_realpath($newname);
1324
+        if ($oldname === false || $newname === false) {
1325
+            return false;
1326
+        }
1327
+
1328
+        // http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.3
1329
+        $packet = pack('Na*Na*', strlen($oldname), $oldname, strlen($newname), $newname);
1330
+        if (!$this->_send_sftp_packet(NET_SFTP_RENAME, $packet)) {
1331
+            return false;
1332
+        }
1333
+
1334
+        $response = $this->_get_sftp_packet();
1335
+        if ($this->packet_type != NET_SFTP_STATUS) {
1336
+            user_error('Expected SSH_FXP_STATUS', E_USER_NOTICE);
1337
+            return false;
1338
+        }
1339
+
1340
+        // if $status isn't SSH_FX_OK it's probably SSH_FX_NO_SUCH_FILE or SSH_FX_PERMISSION_DENIED
1341
+        extract(unpack('Nstatus', $this->_string_shift($response, 4)));
1342
+        if ($status != NET_SFTP_STATUS_OK) {
1343
+            extract(unpack('Nlength', $this->_string_shift($response, 4)));
1344
+            $this->sftp_errors[] = $this->status_codes[$status] . ': ' . $this->_string_shift($response, $length);
1345
+            return false;
1346
+        }
1347
+
1348
+        return true;
1349
+    }
1350
+
1351
+    /**
1352
+     * Parse Attributes
1353
+     *
1354
+     * See '7.  File Attributes' of draft-ietf-secsh-filexfer-13 for more info.
1355
+     *
1356
+     * @param String $response
1357
+     * @return Array
1358
+     * @access private
1359
+     */
1360
+    function _parseAttributes(&$response)
1361
+    {
1362
+        $attr = array();
1363
+        extract(unpack('Nflags', $this->_string_shift($response, 4)));
1364
+        // SFTPv4+ have a type field (a byte) that follows the above flag field
1365
+        foreach ($this->attributes as $key => $value) {
1366
+            switch ($flags & $key) {
1367
+                case NET_SFTP_ATTR_SIZE: // 0x00000001
1368
+                    // size is represented by a 64-bit integer, so we perhaps ought to be doing the following:
1369
+                    // $attr['size'] = new Math_BigInteger($this->_string_shift($response, 8), 256);
1370
+                    // of course, you shouldn't be using Net_SFTP to transfer files that are in excess of 4GB
1371
+                    // (0xFFFFFFFF bytes), anyway.  as such, we'll just represent all file sizes that are bigger than
1372
+                    // 4GB as being 4GB.
1373
+                    extract(unpack('Nupper/Nsize', $this->_string_shift($response, 8)));
1374
+                    if ($upper) {
1375
+                        $attr['size'] = 0xFFFFFFFF;
1376
+                    } else {
1377
+                        $attr['size'] = $size < 0 ? ($size & 0x7FFFFFFF) + 0x80000000 : $size;
1378
+                    }
1379
+                    break;
1380
+                case NET_SFTP_ATTR_UIDGID: // 0x00000002 (SFTPv3 only)
1381
+                    $attr+= unpack('Nuid/Ngid', $this->_string_shift($response, 8));
1382
+                    break;
1383
+                case NET_SFTP_ATTR_PERMISSIONS: // 0x00000004
1384
+                    $attr+= unpack('Npermissions', $this->_string_shift($response, 4));
1385
+                    break;
1386
+                case NET_SFTP_ATTR_ACCESSTIME: // 0x00000008
1387
+                    $attr+= unpack('Natime/Nmtime', $this->_string_shift($response, 8));
1388
+                    break;
1389
+                case NET_SFTP_ATTR_EXTENDED: // 0x80000000
1390
+                    extract(unpack('Ncount', $this->_string_shift($response, 4)));
1391
+                    for ($i = 0; $i < $count; $i++) {
1392
+                        extract(unpack('Nlength', $this->_string_shift($response, 4)));
1393
+                        $key = $this->_string_shift($response, $length);
1394
+                        extract(unpack('Nlength', $this->_string_shift($response, 4)));
1395
+                        $attr[$key] = $this->_string_shift($response, $length);                        
1396
+                    }
1397
+            }
1398
+        }
1399
+        return $attr;
1400
+    }
1401
+
1402
+    /**
1403
+     * Parse Longname
1404
+     *
1405
+     * SFTPv3 doesn't provide any easy way of identifying a file type.  You could try to open
1406
+     * a file as a directory and see if an error is returned or you could try to parse the
1407
+     * SFTPv3-specific longname field of the SSH_FXP_NAME packet.  That's what this function does.
1408
+     * The result is returned using the
1409
+     * {@link http://tools.ietf.org/html/draft-ietf-secsh-filexfer-04#section-5.2 SFTPv4 type constants}.
1410
+     *
1411
+     * If the longname is in an unrecognized format bool(false) is returned.
1412
+     *
1413
+     * @param String $longname
1414
+     * @return Mixed
1415
+     * @access private
1416
+     */
1417
+    function _parseLongname($longname)
1418
+    {
1419
+        // http://en.wikipedia.org/wiki/Unix_file_types
1420
+        if (preg_match('#^[^/]([r-][w-][x-]){3}#', $longname)) {
1421
+            switch ($longname[0]) {
1422
+                case '-':
1423
+                    return NET_SFTP_TYPE_REGULAR;
1424
+                case 'd':
1425
+                    return NET_SFTP_TYPE_DIRECTORY;
1426
+                case 'l':
1427
+                    return NET_SFTP_TYPE_SYMLINK;
1428
+                default:
1429
+                    return NET_SFTP_TYPE_SPECIAL;
1430
+            }
1431
+        }
1432
+
1433
+        return false;
1434
+    }
1435
+
1436
+    /**
1437
+     * Sends SFTP Packets
1438
+     *
1439
+     * See '6. General Packet Format' of draft-ietf-secsh-filexfer-13 for more info.
1440
+     *
1441
+     * @param Integer $type
1442
+     * @param String $data
1443
+     * @see Net_SFTP::_get_sftp_packet()
1444
+     * @see Net_SSH2::_send_channel_packet()
1445
+     * @return Boolean
1446
+     * @access private
1447
+     */
1448
+    function _send_sftp_packet($type, $data)
1449
+    {
1450
+        $packet = $this->request_id !== false ?
1451
+            pack('NCNa*', strlen($data) + 5, $type, $this->request_id, $data) :
1452
+            pack('NCa*',  strlen($data) + 1, $type, $data);
1453
+
1454
+        $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838
1455
+        $result = $this->_send_channel_packet(NET_SFTP_CHANNEL, $packet);
1456
+        $stop = strtok(microtime(), ' ') + strtok('');
1457
+
1458
+        if (defined('NET_SFTP_LOGGING')) {
1459
+            $this->packet_type_log[] = '-> ' . $this->packet_types[$type] . 
1460
+                                       ' (' . round($stop - $start, 4) . 's)';
1461
+            if (NET_SFTP_LOGGING == NET_SFTP_LOG_COMPLEX) {
1462
+                $this->packet_log[] = $data;
1463
+            }
1464
+        }
1465
+
1466
+        return $result;
1467
+    }
1468
+
1469
+    /**
1470
+     * Receives SFTP Packets
1471
+     *
1472
+     * See '6. General Packet Format' of draft-ietf-secsh-filexfer-13 for more info.
1473
+     *
1474
+     * Incidentally, the number of SSH_MSG_CHANNEL_DATA messages has no bearing on the number of SFTP packets present.
1475
+     * There can be one SSH_MSG_CHANNEL_DATA messages containing two SFTP packets or there can be two SSH_MSG_CHANNEL_DATA
1476
+     * messages containing one SFTP packet.
1477
+     *
1478
+     * @see Net_SFTP::_send_sftp_packet()
1479
+     * @return String
1480
+     * @access private
1481
+     */
1482
+    function _get_sftp_packet()
1483
+    {
1484
+        $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838
1485
+
1486
+        // SFTP packet length
1487
+        while (strlen($this->packet_buffer) < 4) {
1488
+            $temp = $this->_get_channel_packet(NET_SFTP_CHANNEL);
1489
+            if (is_bool($temp)) {
1490
+                $this->packet_type = false;
1491
+                $this->packet_buffer = '';
1492
+                return false;
1493
+            }
1494
+            $this->packet_buffer.= $temp;
1495
+        }
1496
+        extract(unpack('Nlength', $this->_string_shift($this->packet_buffer, 4)));
1497
+        $tempLength = $length;
1498
+        $tempLength-= strlen($this->packet_buffer);
1499
+
1500
+        // SFTP packet type and data payload
1501
+        while ($tempLength > 0) {
1502
+            $temp = $this->_get_channel_packet(NET_SFTP_CHANNEL);
1503
+            if (is_bool($temp)) {
1504
+                $this->packet_type = false;
1505
+                $this->packet_buffer = '';
1506
+                return false;
1507
+            }
1508
+            $this->packet_buffer.= $temp;
1509
+            $tempLength-= strlen($temp);
1510
+        }
1511
+
1512
+        $stop = strtok(microtime(), ' ') + strtok('');
1513
+
1514
+        $this->packet_type = ord($this->_string_shift($this->packet_buffer));
1515
+
1516
+        if ($this->request_id !== false) {
1517
+            $this->_string_shift($this->packet_buffer, 4); // remove the request id
1518
+            $length-= 5; // account for the request id and the packet type
1519
+        } else {
1520
+            $length-= 1; // account for the packet type
1521
+        }
1522
+
1523
+        $packet = $this->_string_shift($this->packet_buffer, $length);
1524
+
1525
+        if (defined('NET_SFTP_LOGGING')) {
1526
+            $this->packet_type_log[] = '<- ' . $this->packet_types[$this->packet_type] . 
1527
+                                       ' (' . round($stop - $start, 4) . 's)';
1528
+            if (NET_SFTP_LOGGING == NET_SFTP_LOG_COMPLEX) {
1529
+                $this->packet_log[] = $packet;
1530
+            }
1531
+        }
1532
+
1533
+        return $packet;
1534
+    }
1535
+
1536
+    /**
1537
+     * Returns a log of the packets that have been sent and received.
1538
+     *
1539
+     * Returns a string if NET_SFTP_LOGGING == NET_SFTP_LOG_COMPLEX, an array if NET_SFTP_LOGGING == NET_SFTP_LOG_SIMPLE and false if !defined('NET_SFTP_LOGGING')
1540
+     *
1541
+     * @access public
1542
+     * @return String or Array
1543
+     */
1544
+    function getSFTPLog()
1545
+    {
1546
+        if (!defined('NET_SFTP_LOGGING')) {
1547
+            return false;
1548
+        }
1549
+
1550
+        switch (NET_SFTP_LOGGING) {
1551
+            case NET_SFTP_LOG_COMPLEX:
1552
+                return $this->_format_log($this->packet_log, $this->packet_type_log);
1553
+                break;
1554
+            //case NET_SFTP_LOG_SIMPLE:
1555
+            default:
1556
+                return $this->packet_type_log;
1557
+        }
1558
+    }
1559
+
1560
+    /**
1561
+     * Returns all errors
1562
+     *
1563
+     * @return String
1564
+     * @access public
1565
+     */
1566
+    function getSFTPErrors()
1567
+    {
1568
+        return $this->sftp_errors;
1569
+    }
1570
+
1571
+    /**
1572
+     * Returns the last error
1573
+     *
1574
+     * @return String
1575
+     * @access public
1576
+     */
1577
+    function getLastSFTPError()
1578
+    {
1579
+        return count($this->sftp_errors) ? $this->sftp_errors[count($this->sftp_errors) - 1] : '';
1580
+    }
1581
+
1582
+    /**
1583
+     * Get supported SFTP versions
1584
+     *
1585
+     * @return Array
1586
+     * @access public
1587
+     */
1588
+    function getSupportedVersions()
1589
+    {
1590
+        $temp = array('version' => $this->version);
1591
+        if (isset($this->extensions['versions'])) {
1592
+            $temp['extensions'] = $this->extensions['versions'];
1593
+        }
1594
+        return $temp;
1595
+    }
1596
+
1597
+    /**
1598
+     * Disconnect
1599
+     *
1600
+     * @param Integer $reason
1601
+     * @return Boolean
1602
+     * @access private
1603
+     */
1604
+    function _disconnect($reason)
1605
+    {
1606
+        $this->pwd = false;
1607
+        parent::_disconnect($reason);
1608
+    }
1609
+}
0 1610
\ No newline at end of file
... ...
@@ -0,0 +1,1408 @@
1
+<?php
2
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
3
+
4
+/**
5
+ * Pure-PHP implementation of SSHv1.
6
+ *
7
+ * PHP versions 4 and 5
8
+ *
9
+ * Here's a short example of how to use this library:
10
+ * <code>
11
+ * <?php
12
+ *    include('Net/SSH1.php');
13
+ *
14
+ *    $ssh = new Net_SSH1('www.domain.tld');
15
+ *    if (!$ssh->login('username', 'password')) {
16
+ *        exit('Login Failed');
17
+ *    }
18
+ *
19
+ *    echo $ssh->exec('ls -la');
20
+ * ?>
21
+ * </code>
22
+ *
23
+ * Here's another short example:
24
+ * <code>
25
+ * <?php
26
+ *    include('Net/SSH1.php');
27
+ *
28
+ *    $ssh = new Net_SSH1('www.domain.tld');
29
+ *    if (!$ssh->login('username', 'password')) {
30
+ *        exit('Login Failed');
31
+ *    }
32
+ *
33
+ *    echo $ssh->read('username@username:~$');
34
+ *    $ssh->write("ls -la\n");
35
+ *    echo $ssh->read('username@username:~$');
36
+ * ?>
37
+ * </code>
38
+ *
39
+ * More information on the SSHv1 specification can be found by reading 
40
+ * {@link http://www.snailbook.com/docs/protocol-1.5.txt protocol-1.5.txt}.
41
+ *
42
+ * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy
43
+ * of this software and associated documentation files (the "Software"), to deal
44
+ * in the Software without restriction, including without limitation the rights
45
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
46
+ * copies of the Software, and to permit persons to whom the Software is
47
+ * furnished to do so, subject to the following conditions:
48
+ * 
49
+ * The above copyright notice and this permission notice shall be included in
50
+ * all copies or substantial portions of the Software.
51
+ * 
52
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
53
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
54
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
55
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
56
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
57
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
58
+ * THE SOFTWARE.
59
+ *
60
+ * @category   Net
61
+ * @package    Net_SSH1
62
+ * @author     Jim Wigginton <[email protected]>
63
+ * @copyright  MMVII Jim Wigginton
64
+ * @license    http://www.opensource.org/licenses/mit-license.html  MIT License
65
+ * @version    $Id: SSH1.php,v 1.15 2010/03/22 22:01:38 terrafrost Exp $
66
+ * @link       http://phpseclib.sourceforge.net
67
+ */
68
+
69
+/**
70
+ * Include Math_BigInteger
71
+ *
72
+ * Used to do RSA encryption.
73
+ */
74
+require_once('Math/BigInteger.php');
75
+
76
+/**
77
+ * Include Crypt_Null
78
+ */
79
+//require_once('Crypt/Null.php');
80
+
81
+/**
82
+ * Include Crypt_DES
83
+ */
84
+require_once('Crypt/DES.php');
85
+
86
+/**
87
+ * Include Crypt_TripleDES
88
+ */
89
+require_once('Crypt/TripleDES.php');
90
+
91
+/**
92
+ * Include Crypt_RC4
93
+ */
94
+require_once('Crypt/RC4.php');
95
+
96
+/**
97
+ * Include Crypt_Random
98
+ */
99
+require_once('Crypt/Random.php');
100
+
101
+/**#@+
102
+ * Encryption Methods
103
+ *
104
+ * @see Net_SSH1::getSupportedCiphers()
105
+ * @access public
106
+ */
107
+/**
108
+ * No encryption
109
+ *
110
+ * Not supported.
111
+ */
112
+define('NET_SSH1_CIPHER_NONE',       0);
113
+/**
114
+ * IDEA in CFB mode
115
+ *
116
+ * Not supported.
117
+ */
118
+define('NET_SSH1_CIPHER_IDEA',       1);
119
+/**
120
+ * DES in CBC mode
121
+ */
122
+define('NET_SSH1_CIPHER_DES',        2);
123
+/**
124
+ * Triple-DES in CBC mode
125
+ *
126
+ * All implementations are required to support this
127
+ */
128
+define('NET_SSH1_CIPHER_3DES',       3);
129
+/**
130
+ * TRI's Simple Stream encryption CBC
131
+ *
132
+ * Not supported nor is it defined in the official SSH1 specs.  OpenSSH, however, does define it (see cipher.h),
133
+ * although it doesn't use it (see cipher.c)
134
+ */
135
+define('NET_SSH1_CIPHER_BROKEN_TSS', 4);
136
+/**
137
+ * RC4
138
+ *
139
+ * Not supported.
140
+ *
141
+ * @internal According to the SSH1 specs:
142
+ *
143
+ *        "The first 16 bytes of the session key are used as the key for
144
+ *         the server to client direction.  The remaining 16 bytes are used
145
+ *         as the key for the client to server direction.  This gives
146
+ *         independent 128-bit keys for each direction."
147
+ *
148
+ *     This library currently only supports encryption when the same key is being used for both directions.  This is
149
+ *     because there's only one $crypto object.  Two could be added ($encrypt and $decrypt, perhaps).
150
+ */
151
+define('NET_SSH1_CIPHER_RC4',        5);
152
+/**
153
+ * Blowfish
154
+ *
155
+ * Not supported nor is it defined in the official SSH1 specs.  OpenSSH, however, defines it (see cipher.h) and
156
+ * uses it (see cipher.c)
157
+ */
158
+define('NET_SSH1_CIPHER_BLOWFISH',   6);
159
+/**#@-*/
160
+
161
+/**#@+
162
+ * Authentication Methods
163
+ *
164
+ * @see Net_SSH1::getSupportedAuthentications()
165
+ * @access public
166
+ */
167
+/**
168
+ * .rhosts or /etc/hosts.equiv
169
+ */
170
+define('NET_SSH1_AUTH_RHOSTS',     1);
171
+/**
172
+ * pure RSA authentication
173
+ */
174
+define('NET_SSH1_AUTH_RSA',        2);
175
+/**
176
+ * password authentication
177
+ *
178
+ * This is the only method that is supported by this library.
179
+ */
180
+define('NET_SSH1_AUTH_PASSWORD',   3);
181
+/**
182
+ * .rhosts with RSA host authentication
183
+ */
184
+define('NET_SSH1_AUTH_RHOSTS_RSA', 4);
185
+/**#@-*/
186
+
187
+/**#@+
188
+ * Terminal Modes
189
+ *
190
+ * @link http://3sp.com/content/developer/maverick-net/docs/Maverick.SSH.PseudoTerminalModesMembers.html
191
+ * @access private
192
+ */
193
+define('NET_SSH1_TTY_OP_END',  0);
194
+/**#@-*/
195
+
196
+/**
197
+ * The Response Type
198
+ *
199
+ * @see Net_SSH1::_get_binary_packet()
200
+ * @access private
201
+ */
202
+define('NET_SSH1_RESPONSE_TYPE', 1);
203
+
204
+/**
205
+ * The Response Data
206
+ *
207
+ * @see Net_SSH1::_get_binary_packet()
208
+ * @access private
209
+ */
210
+define('NET_SSH1_RESPONSE_DATA', 2);
211
+
212
+/**#@+
213
+ * Execution Bitmap Masks
214
+ *
215
+ * @see Net_SSH1::bitmap
216
+ * @access private
217
+ */
218
+define('NET_SSH1_MASK_CONSTRUCTOR', 0x00000001);
219
+define('NET_SSH1_MASK_LOGIN',       0x00000002);
220
+define('NET_SSH1_MASK_SHELL',       0x00000004);
221
+/**#@-*/
222
+
223
+/**#@+
224
+ * @access public
225
+ * @see Net_SSH1::getLog()
226
+ */
227
+/**
228
+ * Returns the message numbers
229
+ */
230
+define('NET_SSH1_LOG_SIMPLE',  1);
231
+/**
232
+ * Returns the message content
233
+ */
234
+define('NET_SSH1_LOG_COMPLEX', 2);
235
+/**#@-*/
236
+
237
+/**#@+
238
+ * @access public
239
+ * @see Net_SSH1::read()
240
+ */
241
+/**
242
+ * Returns when a string matching $expect exactly is found
243
+ */
244
+define('NET_SSH1_READ_SIMPLE',  1);
245
+/**
246
+ * Returns when a string matching the regular expression $expect is found
247
+ */
248
+define('NET_SSH1_READ_REGEX', 2);
249
+/**#@-*/
250
+
251
+/**
252
+ * Pure-PHP implementation of SSHv1.
253
+ *
254
+ * @author  Jim Wigginton <[email protected]>
255
+ * @version 0.1.0
256
+ * @access  public
257
+ * @package Net_SSH1
258
+ */
259
+class Net_SSH1 {
260
+    /**
261
+     * The SSH identifier
262
+     *
263
+     * @var String
264
+     * @access private
265
+     */
266
+    var $identifier = 'SSH-1.5-phpseclib';
267
+
268
+    /**
269
+     * The Socket Object
270
+     *
271
+     * @var Object
272
+     * @access private
273
+     */
274
+    var $fsock;
275
+
276
+    /**
277
+     * The cryptography object
278
+     *
279
+     * @var Object
280
+     * @access private
281
+     */
282
+    var $crypto = false;
283
+
284
+    /**
285
+     * Execution Bitmap
286
+     *
287
+     * The bits that are set represent functions that have been called already.  This is used to determine
288
+     * if a requisite function has been successfully executed.  If not, an error should be thrown.
289
+     *
290
+     * @var Integer
291
+     * @access private
292
+     */
293
+    var $bitmap = 0;
294
+
295
+    /**
296
+     * The Server Key Public Exponent
297
+     *
298
+     * Logged for debug purposes
299
+     *
300
+     * @see Net_SSH1::getServerKeyPublicExponent()
301
+     * @var String
302
+     * @access private
303
+     */
304
+    var $server_key_public_exponent;
305
+
306
+    /**
307
+     * The Server Key Public Modulus
308
+     *
309
+     * Logged for debug purposes
310
+     *
311
+     * @see Net_SSH1::getServerKeyPublicModulus()
312
+     * @var String
313
+     * @access private
314
+     */
315
+    var $server_key_public_modulus;
316
+
317
+    /**
318
+     * The Host Key Public Exponent
319
+     *
320
+     * Logged for debug purposes
321
+     *
322
+     * @see Net_SSH1::getHostKeyPublicExponent()
323
+     * @var String
324
+     * @access private
325
+     */
326
+    var $host_key_public_exponent;
327
+
328
+    /**
329
+     * The Host Key Public Modulus
330
+     *
331
+     * Logged for debug purposes
332
+     *
333
+     * @see Net_SSH1::getHostKeyPublicModulus()
334
+     * @var String
335
+     * @access private
336
+     */
337
+    var $host_key_public_modulus;
338
+
339
+    /**
340
+     * Supported Ciphers
341
+     *
342
+     * Logged for debug purposes
343
+     *
344
+     * @see Net_SSH1::getSupportedCiphers()
345
+     * @var Array
346
+     * @access private
347
+     */
348
+    var $supported_ciphers = array(
349
+        NET_SSH1_CIPHER_NONE       => 'No encryption',
350
+        NET_SSH1_CIPHER_IDEA       => 'IDEA in CFB mode',
351
+        NET_SSH1_CIPHER_DES        => 'DES in CBC mode',
352
+        NET_SSH1_CIPHER_3DES       => 'Triple-DES in CBC mode',
353
+        NET_SSH1_CIPHER_BROKEN_TSS => 'TRI\'s Simple Stream encryption CBC',
354
+        NET_SSH1_CIPHER_RC4        => 'RC4',
355
+        NET_SSH1_CIPHER_BLOWFISH   => 'Blowfish'
356
+    );
357
+
358
+    /**
359
+     * Supported Authentications
360
+     *
361
+     * Logged for debug purposes
362
+     *
363
+     * @see Net_SSH1::getSupportedAuthentications()
364
+     * @var Array
365
+     * @access private
366
+     */
367
+    var $supported_authentications = array(
368
+        NET_SSH1_AUTH_RHOSTS     => '.rhosts or /etc/hosts.equiv',
369
+        NET_SSH1_AUTH_RSA        => 'pure RSA authentication',
370
+        NET_SSH1_AUTH_PASSWORD   => 'password authentication',
371
+        NET_SSH1_AUTH_RHOSTS_RSA => '.rhosts with RSA host authentication'
372
+    );
373
+
374
+    /**
375
+     * Server Identification
376
+     *
377
+     * @see Net_SSH1::getServerIdentification()
378
+     * @var String
379
+     * @access private
380
+     */
381
+    var $server_identification = '';
382
+
383
+    /**
384
+     * Protocol Flags
385
+     *
386
+     * @see Net_SSH1::Net_SSH1()
387
+     * @var Array
388
+     * @access private
389
+     */
390
+    var $protocol_flags = array();
391
+
392
+    /**
393
+     * Protocol Flag Log
394
+     *
395
+     * @see Net_SSH1::getLog()
396
+     * @var Array
397
+     * @access private
398
+     */
399
+    var $protocol_flag_log = array();
400
+
401
+    /**
402
+     * Message Log
403
+     *
404
+     * @see Net_SSH1::getLog()
405
+     * @var Array
406
+     * @access private
407
+     */
408
+    var $message_log = array();
409
+
410
+    /**
411
+     * Interactive Buffer
412
+     *
413
+     * @see Net_SSH1::read()
414
+     * @var Array
415
+     * @access private
416
+     */
417
+    var $interactive_buffer = '';
418
+
419
+    /**
420
+     * Default Constructor.
421
+     *
422
+     * Connects to an SSHv1 server
423
+     *
424
+     * @param String $host
425
+     * @param optional Integer $port
426
+     * @param optional Integer $timeout
427
+     * @param optional Integer $cipher
428
+     * @return Net_SSH1
429
+     * @access public
430
+     */
431
+    function Net_SSH1($host, $port = 22, $timeout = 10, $cipher = NET_SSH1_CIPHER_3DES)
432
+    {
433
+        $this->protocol_flags = array(
434
+            1  => 'NET_SSH1_MSG_DISCONNECT',
435
+            2  => 'NET_SSH1_SMSG_PUBLIC_KEY',
436
+            3  => 'NET_SSH1_CMSG_SESSION_KEY',
437
+            4  => 'NET_SSH1_CMSG_USER',
438
+            9  => 'NET_SSH1_CMSG_AUTH_PASSWORD',
439
+            10 => 'NET_SSH1_CMSG_REQUEST_PTY',
440
+            12 => 'NET_SSH1_CMSG_EXEC_SHELL',
441
+            13 => 'NET_SSH1_CMSG_EXEC_CMD',
442
+            14 => 'NET_SSH1_SMSG_SUCCESS',
443
+            15 => 'NET_SSH1_SMSG_FAILURE',
444
+            16 => 'NET_SSH1_CMSG_STDIN_DATA',
445
+            17 => 'NET_SSH1_SMSG_STDOUT_DATA',
446
+            18 => 'NET_SSH1_SMSG_STDERR_DATA',
447
+            19 => 'NET_SSH1_CMSG_EOF',
448
+            20 => 'NET_SSH1_SMSG_EXITSTATUS',
449
+            33 => 'NET_SSH1_CMSG_EXIT_CONFIRMATION'
450
+        );
451
+
452
+        $this->_define_array($this->protocol_flags);
453
+
454
+        $this->fsock = @fsockopen($host, $port, $errno, $errstr, $timeout);
455
+        if (!$this->fsock) {
456
+            user_error(rtrim("Cannot connect to $host. Error $errno. $errstr"), E_USER_NOTICE);
457
+            return;
458
+        }
459
+
460
+        $this->server_identification = $init_line = fgets($this->fsock, 255);
461
+
462
+        if (defined('NET_SSH1_LOGGING')) {
463
+            $this->protocol_flags_log[] = '<-';
464
+            $this->protocol_flags_log[] = '->';
465
+
466
+            if (NET_SSH1_LOGGING == NET_SSH1_LOG_COMPLEX) {
467
+                $this->message_log[] = $this->server_identification;
468
+                $this->message_log[] = $this->identifier . "\r\n";
469
+            }
470
+        }
471
+
472
+        if (!preg_match('#SSH-([0-9\.]+)-(.+)#', $init_line, $parts)) {
473
+            user_error('Can only connect to SSH servers', E_USER_NOTICE);
474
+            return;
475
+        }
476
+        if ($parts[1][0] != 1) {
477
+            user_error("Cannot connect to SSH $parts[1] servers", E_USER_NOTICE);
478
+            return;
479
+        }
480
+
481
+        fputs($this->fsock, $this->identifier."\r\n");
482
+
483
+        $response = $this->_get_binary_packet();
484
+        if ($response[NET_SSH1_RESPONSE_TYPE] != NET_SSH1_SMSG_PUBLIC_KEY) {
485
+            user_error('Expected SSH_SMSG_PUBLIC_KEY', E_USER_NOTICE);
486
+            return;
487
+        }
488
+
489
+        $anti_spoofing_cookie = $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 8);
490
+
491
+        $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 4);
492
+
493
+        $temp = unpack('nlen', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 2));
494
+        $server_key_public_exponent = new Math_BigInteger($this->_string_shift($response[NET_SSH1_RESPONSE_DATA], ceil($temp['len'] / 8)), 256);
495
+        $this->server_key_public_exponent = $server_key_public_exponent;
496
+
497
+        $temp = unpack('nlen', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 2));
498
+        $server_key_public_modulus = new Math_BigInteger($this->_string_shift($response[NET_SSH1_RESPONSE_DATA], ceil($temp['len'] / 8)), 256);
499
+        $this->server_key_public_modulus = $server_key_public_modulus;
500
+
501
+        $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 4);
502
+
503
+        $temp = unpack('nlen', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 2));
504
+        $host_key_public_exponent = new Math_BigInteger($this->_string_shift($response[NET_SSH1_RESPONSE_DATA], ceil($temp['len'] / 8)), 256);
505
+        $this->host_key_public_exponent = $host_key_public_exponent;
506
+
507
+        $temp = unpack('nlen', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 2));
508
+        $host_key_public_modulus = new Math_BigInteger($this->_string_shift($response[NET_SSH1_RESPONSE_DATA], ceil($temp['len'] / 8)), 256);
509
+        $this->host_key_public_modulus = $host_key_public_modulus;
510
+
511
+        $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 4);
512
+
513
+        // get a list of the supported ciphers
514
+        extract(unpack('Nsupported_ciphers_mask', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 4)));
515
+        foreach ($this->supported_ciphers as $mask=>$name) {
516
+            if (($supported_ciphers_mask & (1 << $mask)) == 0) {
517
+                unset($this->supported_ciphers[$mask]);
518
+            }
519
+        }
520
+
521
+        // get a list of the supported authentications
522
+        extract(unpack('Nsupported_authentications_mask', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 4)));
523
+        foreach ($this->supported_authentications as $mask=>$name) {
524
+            if (($supported_authentications_mask & (1 << $mask)) == 0) {
525
+                unset($this->supported_authentications[$mask]);
526
+            }
527
+        }
528
+
529
+        $session_id = pack('H*', md5($host_key_public_modulus->toBytes() . $server_key_public_modulus->toBytes() . $anti_spoofing_cookie));
530
+
531
+        $session_key = '';
532
+        for ($i = 0; $i < 32; $i++) {
533
+            $session_key.= chr(crypt_random(0, 255));
534
+        }
535
+        $double_encrypted_session_key = $session_key ^ str_pad($session_id, 32, chr(0));
536
+
537
+        if ($server_key_public_modulus->compare($host_key_public_modulus) < 0) {
538
+            $double_encrypted_session_key = $this->_rsa_crypt(
539
+                $double_encrypted_session_key,
540
+                array(
541
+                    $server_key_public_exponent,
542
+                    $server_key_public_modulus
543
+                )
544
+            );
545
+            $double_encrypted_session_key = $this->_rsa_crypt(
546
+                $double_encrypted_session_key,
547
+                array(
548
+                    $host_key_public_exponent,
549
+                    $host_key_public_modulus
550
+                )
551
+            );
552
+        } else {
553
+            $double_encrypted_session_key = $this->_rsa_crypt(
554
+                $double_encrypted_session_key,
555
+                array(
556
+                    $host_key_public_exponent,
557
+                    $host_key_public_modulus
558
+                )
559
+            );
560
+            $double_encrypted_session_key = $this->_rsa_crypt(
561
+                $double_encrypted_session_key,
562
+                array(
563
+                    $server_key_public_exponent,
564
+                    $server_key_public_modulus
565
+                )
566
+            );
567
+        }
568
+
569
+        $cipher = isset($this->supported_ciphers[$cipher]) ? $cipher : NET_SSH1_CIPHER_3DES;
570
+        $data = pack('C2a*na*N', NET_SSH1_CMSG_SESSION_KEY, $cipher, $anti_spoofing_cookie, 8 * strlen($double_encrypted_session_key), $double_encrypted_session_key, 0);
571
+
572
+        if (!$this->_send_binary_packet($data)) {
573
+            user_error('Error sending SSH_CMSG_SESSION_KEY', E_USER_NOTICE);
574
+            return;
575
+        }
576
+
577
+        switch ($cipher) {
578
+            //case NET_SSH1_CIPHER_NONE:
579
+            //    $this->crypto = new Crypt_Null();
580
+            //    break;
581
+            case NET_SSH1_CIPHER_DES:
582
+                $this->crypto = new Crypt_DES();
583
+                $this->crypto->disablePadding();
584
+                $this->crypto->enableContinuousBuffer();
585
+                $this->crypto->setKey(substr($session_key, 0,  8));
586
+                break;
587
+            case NET_SSH1_CIPHER_3DES:
588
+                $this->crypto = new Crypt_TripleDES(CRYPT_DES_MODE_3CBC);
589
+                $this->crypto->disablePadding();
590
+                $this->crypto->enableContinuousBuffer();
591
+                $this->crypto->setKey(substr($session_key, 0, 24));
592
+                break;
593
+            //case NET_SSH1_CIPHER_RC4:
594
+            //    $this->crypto = new Crypt_RC4();
595
+            //    $this->crypto->enableContinuousBuffer();
596
+            //    $this->crypto->setKey(substr($session_key, 0,  16));
597
+            //    break;
598
+        }
599
+
600
+        $response = $this->_get_binary_packet();
601
+
602
+        if ($response[NET_SSH1_RESPONSE_TYPE] != NET_SSH1_SMSG_SUCCESS) {
603
+            user_error('Expected SSH_SMSG_SUCCESS', E_USER_NOTICE);
604
+            return;
605
+        }
606
+
607
+        $this->bitmap = NET_SSH1_MASK_CONSTRUCTOR;
608
+    }
609
+
610
+    /**
611
+     * Login
612
+     *
613
+     * @param String $username
614
+     * @param optional String $password
615
+     * @return Boolean
616
+     * @access public
617
+     */
618
+    function login($username, $password = '')
619
+    {
620
+        if (!($this->bitmap & NET_SSH1_MASK_CONSTRUCTOR)) {
621
+            return false;
622
+        }
623
+
624
+        $data = pack('CNa*', NET_SSH1_CMSG_USER, strlen($username), $username);
625
+
626
+        if (!$this->_send_binary_packet($data)) {
627
+            user_error('Error sending SSH_CMSG_USER', E_USER_NOTICE);
628
+            return false;
629
+        }
630
+
631
+        $response = $this->_get_binary_packet();
632
+
633
+        if ($response[NET_SSH1_RESPONSE_TYPE] == NET_SSH1_SMSG_SUCCESS) {
634
+            $this->bitmap |= NET_SSH1_MASK_LOGIN;
635
+            return true;
636
+        } else if ($response[NET_SSH1_RESPONSE_TYPE] != NET_SSH1_SMSG_FAILURE) {
637
+            user_error('Expected SSH_SMSG_SUCCESS or SSH_SMSG_FAILURE', E_USER_NOTICE);
638
+            return false;
639
+        }
640
+
641
+        $data = pack('CNa*', NET_SSH1_CMSG_AUTH_PASSWORD, strlen($password), $password);
642
+
643
+        if (!$this->_send_binary_packet($data)) {
644
+            user_error('Error sending SSH_CMSG_AUTH_PASSWORD', E_USER_NOTICE);
645
+            return false;
646
+        }
647
+
648
+        // remove the username and password from the last logged packet
649
+        if (defined('NET_SSH1_LOGGING') && NET_SSH1_LOGGING == NET_SSH1_LOG_COMPLEX) {
650
+            $data = pack('CNa*', NET_SSH1_CMSG_AUTH_PASSWORD, strlen('password'), 'password');
651
+            $this->message_log[count($this->message_log) - 1] = $data; // zzzzz
652
+        }
653
+
654
+        $response = $this->_get_binary_packet();
655
+
656
+        if ($response[NET_SSH1_RESPONSE_TYPE] == NET_SSH1_SMSG_SUCCESS) {
657
+            $this->bitmap |= NET_SSH1_MASK_LOGIN;
658
+            return true;
659
+        } else if ($response[NET_SSH1_RESPONSE_TYPE] == NET_SSH1_SMSG_FAILURE) {
660
+            return false;
661
+        } else {
662
+            user_error('Expected SSH_SMSG_SUCCESS or SSH_SMSG_FAILURE', E_USER_NOTICE);
663
+            return false;
664
+        }
665
+    }
666
+
667
+    /**
668
+     * Executes a command on a non-interactive shell, returns the output, and quits.
669
+     *
670
+     * An SSH1 server will close the connection after a command has been executed on a non-interactive shell.  SSH2
671
+     * servers don't, however, this isn't an SSH2 client.  The way this works, on the server, is by initiating a
672
+     * shell with the -s option, as discussed in the following links:
673
+     *
674
+     * {@link http://www.faqs.org/docs/bashman/bashref_65.html http://www.faqs.org/docs/bashman/bashref_65.html}
675
+     * {@link http://www.faqs.org/docs/bashman/bashref_62.html http://www.faqs.org/docs/bashman/bashref_62.html}
676
+     *
677
+     * To execute further commands, a new Net_SSH1 object will need to be created.
678
+     *
679
+     * Returns false on failure and the output, otherwise.
680
+     *
681
+     * @see Net_SSH1::interactiveRead()
682
+     * @see Net_SSH1::interactiveWrite()
683
+     * @param String $cmd
684
+     * @return mixed
685
+     * @access public
686
+     */
687
+    function exec($cmd, $block = true)
688
+    {
689
+        if (!($this->bitmap & NET_SSH1_MASK_LOGIN)) {
690
+            user_error('Operation disallowed prior to login()', E_USER_NOTICE);
691
+            return false;
692
+        }
693
+
694
+        $data = pack('CNa*', NET_SSH1_CMSG_EXEC_CMD, strlen($cmd), $cmd);
695
+
696
+        if (!$this->_send_binary_packet($data)) {
697
+            user_error('Error sending SSH_CMSG_EXEC_CMD', E_USER_NOTICE);
698
+            return false;
699
+        }
700
+
701
+        if (!$block) {
702
+            return true;
703
+        }
704
+
705
+        $output = '';
706
+        $response = $this->_get_binary_packet();
707
+
708
+        do {
709
+            $output.= substr($response[NET_SSH1_RESPONSE_DATA], 4);
710
+            $response = $this->_get_binary_packet();
711
+        } while ($response[NET_SSH1_RESPONSE_TYPE] != NET_SSH1_SMSG_EXITSTATUS);
712
+
713
+        $data = pack('C', NET_SSH1_CMSG_EXIT_CONFIRMATION);
714
+
715
+        // i don't think it's really all that important if this packet gets sent or not.
716
+        $this->_send_binary_packet($data);
717
+
718
+        fclose($this->fsock);
719
+
720
+        // reset the execution bitmap - a new Net_SSH1 object needs to be created.
721
+        $this->bitmap = 0;
722
+
723
+        return $output;
724
+    }
725
+
726
+    /**
727
+     * Creates an interactive shell
728
+     *
729
+     * @see Net_SSH1::interactiveRead()
730
+     * @see Net_SSH1::interactiveWrite()
731
+     * @return Boolean
732
+     * @access private
733
+     */
734
+    function _initShell()
735
+    {
736
+        // connect using the sample parameters in protocol-1.5.txt.
737
+        // according to wikipedia.org's entry on text terminals, "the fundamental type of application running on a text
738
+        // terminal is a command line interpreter or shell".  thus, opening a terminal session to run the shell.
739
+        $data = pack('CNa*N4C', NET_SSH1_CMSG_REQUEST_PTY, strlen('vt100'), 'vt100', 24, 80, 0, 0, NET_SSH1_TTY_OP_END);
740
+
741
+        if (!$this->_send_binary_packet($data)) {
742
+            user_error('Error sending SSH_CMSG_REQUEST_PTY', E_USER_NOTICE);
743
+            return false;
744
+        }
745
+
746
+        $response = $this->_get_binary_packet();
747
+
748
+        if ($response[NET_SSH1_RESPONSE_TYPE] != NET_SSH1_SMSG_SUCCESS) {
749
+            user_error('Expected SSH_SMSG_SUCCESS', E_USER_NOTICE);
750
+            return false;
751
+        }
752
+
753
+        $data = pack('C', NET_SSH1_CMSG_EXEC_SHELL);
754
+
755
+        if (!$this->_send_binary_packet($data)) {
756
+            user_error('Error sending SSH_CMSG_EXEC_SHELL', E_USER_NOTICE);
757
+            return false;
758
+        }
759
+
760
+        $this->bitmap |= NET_SSH1_MASK_SHELL;
761
+
762
+        //stream_set_blocking($this->fsock, 0);
763
+
764
+        return true;
765
+    }
766
+
767
+    /**
768
+     * Inputs a command into an interactive shell.
769
+     *
770
+     * @see Net_SSH1::interactiveWrite()
771
+     * @param String $cmd
772
+     * @return Boolean
773
+     * @access public
774
+     */
775
+    function write($cmd)
776
+    {
777
+        return $this->interactiveWrite($cmd);
778
+    }
779
+
780
+    /**
781
+     * Returns the output of an interactive shell when there's a match for $expect
782
+     *
783
+     * $expect can take the form of a string literal or, if $mode == NET_SSH1_READ_REGEX,
784
+     * a regular expression.
785
+     *
786
+     * @see Net_SSH1::write()
787
+     * @param String $expect
788
+     * @param Integer $mode
789
+     * @return Boolean
790
+     * @access public
791
+     */
792
+    function read($expect, $mode = NET_SSH1_READ_SIMPLE)
793
+    {
794
+        if (!($this->bitmap & NET_SSH1_MASK_LOGIN)) {
795
+            user_error('Operation disallowed prior to login()', E_USER_NOTICE);
796
+            return false;
797
+        }
798
+
799
+        if (!($this->bitmap & NET_SSH1_MASK_SHELL) && !$this->_initShell()) {
800
+            user_error('Unable to initiate an interactive shell session', E_USER_NOTICE);
801
+            return false;
802
+        }
803
+
804
+        $match = $expect;
805
+        while (true) {
806
+            if ($mode == NET_SSH1_READ_REGEX) {
807
+                preg_match($expect, $this->interactiveBuffer, $matches);
808
+                $match = $matches[0];
809
+            }
810
+            $pos = strpos($this->interactiveBuffer, $match);
811
+            if ($pos !== false) {
812
+                return $this->_string_shift($this->interactiveBuffer, $pos + strlen($match));
813
+            }
814
+            $response = $this->_get_binary_packet();
815
+            $this->interactiveBuffer.= substr($response[NET_SSH1_RESPONSE_DATA], 4);
816
+        }
817
+    }
818
+
819
+    /**
820
+     * Inputs a command into an interactive shell.
821
+     *
822
+     * @see Net_SSH1::interactiveRead()
823
+     * @param String $cmd
824
+     * @return Boolean
825
+     * @access public
826
+     */
827
+    function interactiveWrite($cmd)
828
+    {
829
+        if (!($this->bitmap & NET_SSH1_MASK_LOGIN)) {
830
+            user_error('Operation disallowed prior to login()', E_USER_NOTICE);
831
+            return false;
832
+        }
833
+
834
+        if (!($this->bitmap & NET_SSH1_MASK_SHELL) && !$this->_initShell()) {
835
+            user_error('Unable to initiate an interactive shell session', E_USER_NOTICE);
836
+            return false;
837
+        }
838
+
839
+        $data = pack('CNa*', NET_SSH1_CMSG_STDIN_DATA, strlen($cmd), $cmd);
840
+
841
+        if (!$this->_send_binary_packet($data)) {
842
+            user_error('Error sending SSH_CMSG_STDIN', E_USER_NOTICE);
843
+            return false;
844
+        }
845
+
846
+        return true;
847
+    }
848
+
849
+    /**
850
+     * Returns the output of an interactive shell when no more output is available.
851
+     *
852
+     * Requires PHP 4.3.0 or later due to the use of the stream_select() function.  If you see stuff like
853
+     * "", you're seeing ANSI escape codes.  According to
854
+     * {@link http://support.microsoft.com/kb/101875 How to Enable ANSI.SYS in a Command Window}, "Windows NT
855
+     * does not support ANSI escape sequences in Win32 Console applications", so if you're a Windows user,
856
+     * there's not going to be much recourse.
857
+     *
858
+     * @see Net_SSH1::interactiveRead()
859
+     * @return String
860
+     * @access public
861
+     */
862
+    function interactiveRead()
863
+    {
864
+        if (!($this->bitmap & NET_SSH1_MASK_LOGIN)) {
865
+            user_error('Operation disallowed prior to login()', E_USER_NOTICE);
866
+            return false;
867
+        }
868
+
869
+        if (!($this->bitmap & NET_SSH1_MASK_SHELL) && !$this->_initShell()) {
870
+            user_error('Unable to initiate an interactive shell session', E_USER_NOTICE);
871
+            return false;
872
+        }
873
+
874
+        $read = array($this->fsock);
875
+        $write = $except = null;
876
+        if (stream_select($read, $write, $except, 0)) {
877
+            $response = $this->_get_binary_packet();
878
+            return substr($response[NET_SSH1_RESPONSE_DATA], 4);
879
+        } else {
880
+            return '';
881
+        }
882
+    }
883
+
884
+    /**
885
+     * Disconnect
886
+     *
887
+     * @access public
888
+     */
889
+    function disconnect()
890
+    {
891
+        $this->_disconnect();
892
+    }
893
+
894
+    /**
895
+     * Destructor.
896
+     *
897
+     * Will be called, automatically, if you're supporting just PHP5.  If you're supporting PHP4, you'll need to call
898
+     * disconnect().
899
+     *
900
+     * @access public
901
+     */
902
+    function __destruct()
903
+    {
904
+        $this->_disconnect();
905
+    }
906
+
907
+    /**
908
+     * Disconnect
909
+     *
910
+     * @param String $msg
911
+     * @access private
912
+     */
913
+    function _disconnect($msg = 'Client Quit')
914
+    {
915
+        if ($this->bitmap) {
916
+            $data = pack('C', NET_SSH1_CMSG_EOF);
917
+            $this->_send_binary_packet($data);
918
+
919
+            $response = $this->_get_binary_packet();
920
+            switch ($response[NET_SSH1_RESPONSE_TYPE]) {
921
+                case NET_SSH1_SMSG_EXITSTATUS:
922
+                    $data = pack('C', NET_SSH1_CMSG_EXIT_CONFIRMATION);
923
+                    break;
924
+                default:
925
+                    $data = pack('CNa*', NET_SSH1_MSG_DISCONNECT, strlen($msg), $msg);
926
+            }
927
+
928
+            $this->_send_binary_packet($data);
929
+            fclose($this->fsock);
930
+            $this->bitmap = 0;
931
+        }
932
+    }
933
+
934
+    /**
935
+     * Gets Binary Packets
936
+     *
937
+     * See 'The Binary Packet Protocol' of protocol-1.5.txt for more info.
938
+     *
939
+     * Also, this function could be improved upon by adding detection for the following exploit:
940
+     * http://www.securiteam.com/securitynews/5LP042K3FY.html
941
+     *
942
+     * @see Net_SSH1::_send_binary_packet()
943
+     * @return Array
944
+     * @access private
945
+     */
946
+    function _get_binary_packet()
947
+    {
948
+        if (feof($this->fsock)) {
949
+            //user_error('connection closed prematurely', E_USER_NOTICE);
950
+            return false;
951
+        }
952
+
953
+        $temp = unpack('Nlength', fread($this->fsock, 4));
954
+
955
+        $padding_length = 8 - ($temp['length'] & 7);
956
+        $length = $temp['length'] + $padding_length;
957
+
958
+        $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838
959
+        $raw = fread($this->fsock, $length);
960
+        $stop = strtok(microtime(), ' ') + strtok('');
961
+
962
+        if ($this->crypto !== false) {
963
+            $raw = $this->crypto->decrypt($raw);
964
+        }
965
+
966
+        $padding = substr($raw, 0, $padding_length);
967
+        $type = $raw[$padding_length];
968
+        $data = substr($raw, $padding_length + 1, -4);
969
+
970
+        $temp = unpack('Ncrc', substr($raw, -4));
971
+
972
+        //if ( $temp['crc'] != $this->_crc($padding . $type . $data) ) {
973
+        //    user_error('Bad CRC in packet from server', E_USER_NOTICE);
974
+        //    return false;
975
+        //}
976
+
977
+        $type = ord($type);
978
+
979
+        if (defined('NET_SSH1_LOGGING')) {
980
+            $temp = isset($this->protocol_flags[$type]) ? $this->protocol_flags[$type] : 'UNKNOWN';
981
+            $this->protocol_flags_log[] = '<- ' . $temp .
982
+                                          ' (' . round($stop - $start, 4) . 's)';
983
+            if (NET_SSH1_LOGGING == NET_SSH1_LOG_COMPLEX) {
984
+                $this->message_log[] = $data;
985
+            }
986
+        }
987
+
988
+        return array(
989
+            NET_SSH1_RESPONSE_TYPE => $type,
990
+            NET_SSH1_RESPONSE_DATA => $data
991
+        );
992
+    }
993
+
994
+    /**
995
+     * Sends Binary Packets
996
+     *
997
+     * Returns true on success, false on failure.
998
+     *
999
+     * @see Net_SSH1::_get_binary_packet()
1000
+     * @param String $data
1001
+     * @return Boolean
1002
+     * @access private
1003
+     */
1004
+    function _send_binary_packet($data) {
1005
+        if (feof($this->fsock)) {
1006
+            //user_error('connection closed prematurely', E_USER_NOTICE);
1007
+            return false;
1008
+        }
1009
+
1010
+        if (defined('NET_SSH1_LOGGING')) {
1011
+            $temp = isset($this->protocol_flags[ord($data[0])]) ? $this->protocol_flags[ord($data[0])] : 'UNKNOWN';
1012
+            $this->protocol_flags_log[] = '-> ' . $temp .
1013
+                                          ' (' . round($stop - $start, 4) . 's)';
1014
+            if (NET_SSH1_LOGGING == NET_SSH1_LOG_COMPLEX) {
1015
+                $this->message_log[] = substr($data, 1);
1016
+            }
1017
+        }
1018
+
1019
+        $length = strlen($data) + 4;
1020
+
1021
+        $padding_length = 8 - ($length & 7);
1022
+        $padding = '';
1023
+        for ($i = 0; $i < $padding_length; $i++) {
1024
+            $padding.= chr(crypt_random(0, 255));
1025
+        }
1026
+
1027
+        $data = $padding . $data;
1028
+        $data.= pack('N', $this->_crc($data));
1029
+
1030
+        if ($this->crypto !== false) {
1031
+            $data = $this->crypto->encrypt($data);
1032
+        }
1033
+
1034
+        $packet = pack('Na*', $length, $data);
1035
+
1036
+        $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838
1037
+        $result = strlen($packet) == fputs($this->fsock, $packet);
1038
+        $stop = strtok(microtime(), ' ') + strtok('');
1039
+
1040
+        return $result;
1041
+    }
1042
+
1043
+    /**
1044
+     * Cyclic Redundancy Check (CRC)
1045
+     *
1046
+     * PHP's crc32 function is implemented slightly differently than the one that SSH v1 uses, so
1047
+     * we've reimplemented it. A more detailed discussion of the differences can be found after
1048
+     * $crc_lookup_table's initialization.
1049
+     *
1050
+     * @see Net_SSH1::_get_binary_packet()
1051
+     * @see Net_SSH1::_send_binary_packet()
1052
+     * @param String $data
1053
+     * @return Integer
1054
+     * @access private
1055
+     */
1056
+    function _crc($data)
1057
+    {
1058
+        static $crc_lookup_table = array(
1059
+            0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
1060
+            0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
1061
+            0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
1062
+            0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
1063
+            0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
1064
+            0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
1065
+            0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
1066
+            0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
1067
+            0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
1068
+            0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
1069
+            0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,
1070
+            0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
1071
+            0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,
1072
+            0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
1073
+            0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
1074
+            0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
1075
+            0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,
1076
+            0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
1077
+            0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,
1078
+            0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
1079
+            0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
1080
+            0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
1081
+            0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,
1082
+            0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
1083
+            0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
1084
+            0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
1085
+            0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
1086
+            0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
1087
+            0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,
1088
+            0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
1089
+            0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,
1090
+            0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
1091
+            0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
1092
+            0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
1093
+            0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
1094
+            0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
1095
+            0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,
1096
+            0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
1097
+            0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
1098
+            0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
1099
+            0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,
1100
+            0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
1101
+            0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,
1102
+            0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
1103
+            0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
1104
+            0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
1105
+            0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,
1106
+            0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
1107
+            0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
1108
+            0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
1109
+            0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
1110
+            0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
1111
+            0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,
1112
+            0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
1113
+            0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
1114
+            0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
1115
+            0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
1116
+            0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
1117
+            0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,
1118
+            0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
1119
+            0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,
1120
+            0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
1121
+            0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
1122
+            0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
1123
+        );
1124
+
1125
+        // For this function to yield the same output as PHP's crc32 function, $crc would have to be
1126
+        // set to 0xFFFFFFFF, initially - not 0x00000000 as it currently is.
1127
+        $crc = 0x00000000;
1128
+        $length = strlen($data);
1129
+
1130
+        for ($i=0;$i<$length;$i++) {
1131
+            // We AND $crc >> 8 with 0x00FFFFFF because we want the eight newly added bits to all
1132
+            // be zero.  PHP, unfortunately, doesn't always do this.  0x80000000 >> 8, as an example,
1133
+            // yields 0xFF800000 - not 0x00800000.  The following link elaborates:
1134
+            // http://www.php.net/manual/en/language.operators.bitwise.php#57281
1135
+            $crc = (($crc >> 8) & 0x00FFFFFF) ^ $crc_lookup_table[($crc & 0xFF) ^ ord($data[$i])];
1136
+        }
1137
+
1138
+        // In addition to having to set $crc to 0xFFFFFFFF, initially, the return value must be XOR'd with
1139
+        // 0xFFFFFFFF for this function to return the same thing that PHP's crc32 function would.
1140
+        return $crc;
1141
+    }
1142
+
1143
+    /**
1144
+     * String Shift
1145
+     *
1146
+     * Inspired by array_shift
1147
+     *
1148
+     * @param String $string
1149
+     * @param optional Integer $index
1150
+     * @return String
1151
+     * @access private
1152
+     */
1153
+    function _string_shift(&$string, $index = 1)
1154
+    {
1155
+        $substr = substr($string, 0, $index);
1156
+        $string = substr($string, $index);
1157
+        return $substr;
1158
+    }
1159
+
1160
+    /**
1161
+     * RSA Encrypt
1162
+     *
1163
+     * Returns mod(pow($m, $e), $n), where $n should be the product of two (large) primes $p and $q and where $e
1164
+     * should be a number with the property that gcd($e, ($p - 1) * ($q - 1)) == 1.  Could just make anything that
1165
+     * calls this call modexp, instead, but I think this makes things clearer, maybe...
1166
+     *
1167
+     * @see Net_SSH1::Net_SSH1()
1168
+     * @param Math_BigInteger $m
1169
+     * @param Array $key
1170
+     * @return Math_BigInteger
1171
+     * @access private
1172
+     */
1173
+    function _rsa_crypt($m, $key)
1174
+    {
1175
+        /*
1176
+        if (!class_exists('Crypt_RSA')) {
1177
+            require_once('Crypt/RSA.php');
1178
+        }
1179
+
1180
+        $rsa = new Crypt_RSA();
1181
+        $rsa->loadKey($key, CRYPT_RSA_PUBLIC_FORMAT_RAW);
1182
+        $rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
1183
+        return $rsa->encrypt($m);
1184
+        */
1185
+
1186
+        // To quote from protocol-1.5.txt:
1187
+        // The most significant byte (which is only partial as the value must be
1188
+        // less than the public modulus, which is never a power of two) is zero.
1189
+        //
1190
+        // The next byte contains the value 2 (which stands for public-key
1191
+        // encrypted data in the PKCS standard [PKCS#1]).  Then, there are non-
1192
+        // zero random bytes to fill any unused space, a zero byte, and the data
1193
+        // to be encrypted in the least significant bytes, the last byte of the
1194
+        // data in the least significant byte.
1195
+
1196
+        // Presumably the part of PKCS#1 they're refering to is "Section 7.2.1 Encryption Operation",
1197
+        // under "7.2 RSAES-PKCS1-v1.5" and "7 Encryption schemes" of the following URL:
1198
+        // ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-1/pkcs-1v2-1.pdf
1199
+        $temp = chr(0) . chr(2);
1200
+        $modulus = $key[1]->toBytes();
1201
+        $length = strlen($modulus) - strlen($m) - 3;
1202
+        for ($i = 0; $i < $length; $i++) {
1203
+            $temp.= chr(crypt_random(1, 255));
1204
+        }
1205
+        $temp.= chr(0) . $m;
1206
+
1207
+        $m = new Math_BigInteger($temp, 256);
1208
+        $m = $m->modPow($key[0], $key[1]);
1209
+
1210
+        return $m->toBytes();
1211
+    }
1212
+
1213
+    /**
1214
+     * Define Array
1215
+     *
1216
+     * Takes any number of arrays whose indices are integers and whose values are strings and defines a bunch of
1217
+     * named constants from it, using the value as the name of the constant and the index as the value of the constant.
1218
+     * If any of the constants that would be defined already exists, none of the constants will be defined.
1219
+     *
1220
+     * @param Array $array
1221
+     * @access private
1222
+     */
1223
+    function _define_array()
1224
+    {
1225
+        $args = func_get_args();
1226
+        foreach ($args as $arg) {
1227
+            foreach ($arg as $key=>$value) {
1228
+                if (!defined($value)) {
1229
+                    define($value, $key);
1230
+                } else {
1231
+                    break 2;
1232
+                }
1233
+            }
1234
+        }
1235
+    }
1236
+
1237
+    /**
1238
+     * Returns a log of the packets that have been sent and received.
1239
+     *
1240
+     * Returns a string if NET_SSH2_LOGGING == NET_SSH2_LOG_COMPLEX, an array if NET_SSH2_LOGGING == NET_SSH2_LOG_SIMPLE and false if !defined('NET_SSH2_LOGGING')
1241
+     *
1242
+     * @access public
1243
+     * @return String or Array
1244
+     */
1245
+    function getLog()
1246
+    {
1247
+        if (!defined('NET_SSH1_LOGGING')) {
1248
+            return false;
1249
+        }
1250
+
1251
+        switch (NET_SSH1_LOGGING) {
1252
+            case NET_SSH1_LOG_SIMPLE:
1253
+                return $this->message_number_log;
1254
+                break;
1255
+            case NET_SSH1_LOG_COMPLEX:
1256
+                return $this->_format_log($this->message_log, $this->protocol_flags_log);
1257
+                break;
1258
+            default:
1259
+                return false;
1260
+        }
1261
+    }
1262
+
1263
+    /**
1264
+     * Formats a log for printing
1265
+     *
1266
+     * @param Array $message_log
1267
+     * @param Array $message_number_log
1268
+     * @access private
1269
+     * @return String
1270
+     */
1271
+    function _format_log($message_log, $message_number_log)
1272
+    {
1273
+        static $boundary = ':', $long_width = 65, $short_width = 16;
1274
+
1275
+        $output = '';
1276
+        for ($i = 0; $i < count($message_log); $i++) {
1277
+            $output.= $message_number_log[$i] . "\r\n";
1278
+            $current_log = $message_log[$i];
1279
+            $j = 0;
1280
+            do {
1281
+                if (!empty($current_log)) {
1282
+                    $output.= str_pad(dechex($j), 7, '0', STR_PAD_LEFT) . '0  ';
1283
+                }
1284
+                $fragment = $this->_string_shift($current_log, $short_width);
1285
+                $hex = substr(
1286
+                           preg_replace(
1287
+                               '#(.)#es',
1288
+                               '"' . $boundary . '" . str_pad(dechex(ord(substr("\\1", -1))), 2, "0", STR_PAD_LEFT)',
1289
+                               $fragment),
1290
+                           strlen($boundary)
1291
+                       );
1292
+                // replace non ASCII printable characters with dots
1293
+                // http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters
1294
+                // also replace < with a . since < messes up the output on web browsers
1295
+                $raw = preg_replace('#[^\x20-\x7E]|<#', '.', $fragment);
1296
+                $output.= str_pad($hex, $long_width - $short_width, ' ') . $raw . "\r\n";
1297
+                $j++;
1298
+            } while (!empty($current_log));
1299
+            $output.= "\r\n";
1300
+        }
1301
+
1302
+        return $output;
1303
+    }
1304
+
1305
+    /**
1306
+     * Return the server key public exponent
1307
+     *
1308
+     * Returns, by default, the base-10 representation.  If $raw_output is set to true, returns, instead,
1309
+     * the raw bytes.  This behavior is similar to PHP's md5() function.
1310
+     *
1311
+     * @param optional Boolean $raw_output
1312
+     * @return String
1313
+     * @access public
1314
+     */
1315
+    function getServerKeyPublicExponent($raw_output = false)
1316
+    {
1317
+        return $raw_output ? $this->server_key_public_exponent->toBytes() : $this->server_key_public_exponent->toString();
1318
+    }
1319
+
1320
+    /**
1321
+     * Return the server key public modulus
1322
+     *
1323
+     * Returns, by default, the base-10 representation.  If $raw_output is set to true, returns, instead,
1324
+     * the raw bytes.  This behavior is similar to PHP's md5() function.
1325
+     *
1326
+     * @param optional Boolean $raw_output
1327
+     * @return String
1328
+     * @access public
1329
+     */
1330
+    function getServerKeyPublicModulus($raw_output = false)
1331
+    {
1332
+        return $raw_output ? $this->server_key_public_modulus->toBytes() : $this->server_key_public_modulus->toString();
1333
+    }
1334
+
1335
+    /**
1336
+     * Return the host key public exponent
1337
+     *
1338
+     * Returns, by default, the base-10 representation.  If $raw_output is set to true, returns, instead,
1339
+     * the raw bytes.  This behavior is similar to PHP's md5() function.
1340
+     *
1341
+     * @param optional Boolean $raw_output
1342
+     * @return String
1343
+     * @access public
1344
+     */
1345
+    function getHostKeyPublicExponent($raw_output = false)
1346
+    {
1347
+        return $raw_output ? $this->host_key_public_exponent->toBytes() : $this->host_key_public_exponent->toString();
1348
+    }
1349
+
1350
+    /**
1351
+     * Return the host key public modulus
1352
+     *
1353
+     * Returns, by default, the base-10 representation.  If $raw_output is set to true, returns, instead,
1354
+     * the raw bytes.  This behavior is similar to PHP's md5() function.
1355
+     *
1356
+     * @param optional Boolean $raw_output
1357
+     * @return String
1358
+     * @access public
1359
+     */
1360
+    function getHostKeyPublicModulus($raw_output = false)
1361
+    {
1362
+        return $raw_output ? $this->host_key_public_modulus->toBytes() : $this->host_key_public_modulus->toString();
1363
+    }
1364
+
1365
+    /**
1366
+     * Return a list of ciphers supported by SSH1 server.
1367
+     *
1368
+     * Just because a cipher is supported by an SSH1 server doesn't mean it's supported by this library. If $raw_output
1369
+     * is set to true, returns, instead, an array of constants.  ie. instead of array('Triple-DES in CBC mode'), you'll
1370
+     * get array(NET_SSH1_CIPHER_3DES).
1371
+     *
1372
+     * @param optional Boolean $raw_output
1373
+     * @return Array
1374
+     * @access public
1375
+     */
1376
+    function getSupportedCiphers($raw_output = false)
1377
+    {
1378
+        return $raw_output ? array_keys($this->supported_ciphers) : array_values($this->supported_ciphers);
1379
+    }
1380
+
1381
+    /**
1382
+     * Return a list of authentications supported by SSH1 server.
1383
+     *
1384
+     * Just because a cipher is supported by an SSH1 server doesn't mean it's supported by this library. If $raw_output
1385
+     * is set to true, returns, instead, an array of constants.  ie. instead of array('password authentication'), you'll
1386
+     * get array(NET_SSH1_AUTH_PASSWORD).
1387
+     *
1388
+     * @param optional Boolean $raw_output
1389
+     * @return Array
1390
+     * @access public
1391
+     */
1392
+    function getSupportedAuthentications($raw_output = false)
1393
+    {
1394
+        return $raw_output ? array_keys($this->supported_authentications) : array_values($this->supported_authentications);
1395
+    }
1396
+
1397
+    /**
1398
+     * Return the server identification.
1399
+     *
1400
+     * @return String
1401
+     * @access public
1402
+     */
1403
+    function getServerIdentification()
1404
+    {
1405
+        return rtrim($this->server_identification);
1406
+    }
1407
+}
1408
+?>
0 1409
\ No newline at end of file
... ...
@@ -0,0 +1,2660 @@
1
+<?php
2
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
3
+
4
+/**
5
+ * Pure-PHP implementation of SSHv2.
6
+ *
7
+ * PHP versions 4 and 5
8
+ *
9
+ * Here are some examples of how to use this library:
10
+ * <code>
11
+ * <?php
12
+ *    include('Net/SSH2.php');
13
+ *
14
+ *    $ssh = new Net_SSH2('www.domain.tld');
15
+ *    if (!$ssh->login('username', 'password')) {
16
+ *        exit('Login Failed');
17
+ *    }
18
+ *
19
+ *    echo $ssh->exec('pwd');
20
+ *    echo $ssh->exec('ls -la');
21
+ * ?>
22
+ * </code>
23
+ *
24
+ * <code>
25
+ * <?php
26
+ *    include('Crypt/RSA.php');
27
+ *    include('Net/SSH2.php');
28
+ *
29
+ *    $key = new Crypt_RSA();
30
+ *    //$key->setPassword('whatever');
31
+ *    $key->loadKey(file_get_contents('privatekey'));
32
+ *
33
+ *    $ssh = new Net_SSH2('www.domain.tld');
34
+ *    if (!$ssh->login('username', $key)) {
35
+ *        exit('Login Failed');
36
+ *    }
37
+ *
38
+ *    echo $ssh->read('username@username:~$');
39
+ *    $ssh->write("ls -la\n");
40
+ *    echo $ssh->read('username@username:~$');
41
+ * ?>
42
+ * </code>
43
+ *
44
+ * LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy
45
+ * of this software and associated documentation files (the "Software"), to deal
46
+ * in the Software without restriction, including without limitation the rights
47
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
48
+ * copies of the Software, and to permit persons to whom the Software is
49
+ * furnished to do so, subject to the following conditions:
50
+ * 
51
+ * The above copyright notice and this permission notice shall be included in
52
+ * all copies or substantial portions of the Software.
53
+ * 
54
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
55
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
56
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
57
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
58
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
59
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
60
+ * THE SOFTWARE.
61
+ *
62
+ * @category   Net
63
+ * @package    Net_SSH2
64
+ * @author     Jim Wigginton <[email protected]>
65
+ * @copyright  MMVII Jim Wigginton
66
+ * @license    http://www.opensource.org/licenses/mit-license.html  MIT License
67
+ * @version    $Id: SSH2.php,v 1.53 2010-10-24 01:24:30 terrafrost Exp $
68
+ * @link       http://phpseclib.sourceforge.net
69
+ */
70
+
71
+/**
72
+ * Include Math_BigInteger
73
+ *
74
+ * Used to do Diffie-Hellman key exchange and DSA/RSA signature verification.
75
+ */
76
+require_once('Math/BigInteger.php');
77
+
78
+/**
79
+ * Include Crypt_Random
80
+ */
81
+require_once('Crypt/Random.php');
82
+
83
+/**
84
+ * Include Crypt_Hash
85
+ */
86
+require_once('Crypt/Hash.php');
87
+
88
+/**
89
+ * Include Crypt_TripleDES
90
+ */
91
+require_once('Crypt/TripleDES.php');
92
+
93
+/**
94
+ * Include Crypt_RC4
95
+ */
96
+require_once('Crypt/RC4.php');
97
+
98
+/**
99
+ * Include Crypt_AES
100
+ */
101
+require_once('Crypt/AES.php');
102
+
103
+/**#@+
104
+ * Execution Bitmap Masks
105
+ *
106
+ * @see Net_SSH2::bitmap
107
+ * @access private
108
+ */
109
+define('NET_SSH2_MASK_CONSTRUCTOR', 0x00000001);
110
+define('NET_SSH2_MASK_LOGIN',       0x00000002);
111
+define('NET_SSH2_MASK_SHELL',       0x00000004);
112
+/**#@-*/
113
+
114
+/**#@+
115
+ * Channel constants
116
+ *
117
+ * RFC4254 refers not to client and server channels but rather to sender and recipient channels.  we don't refer
118
+ * to them in that way because RFC4254 toggles the meaning. the client sends a SSH_MSG_CHANNEL_OPEN message with
119
+ * a sender channel and the server sends a SSH_MSG_CHANNEL_OPEN_CONFIRMATION in response, with a sender and a
120
+ * recepient channel.  at first glance, you might conclude that SSH_MSG_CHANNEL_OPEN_CONFIRMATION's sender channel
121
+ * would be the same thing as SSH_MSG_CHANNEL_OPEN's sender channel, but it's not, per this snipet:
122
+ *     The 'recipient channel' is the channel number given in the original
123
+ *     open request, and 'sender channel' is the channel number allocated by
124
+ *     the other side.
125
+ *
126
+ * @see Net_SSH2::_send_channel_packet()
127
+ * @see Net_SSH2::_get_channel_packet()
128
+ * @access private
129
+ */
130
+define('NET_SSH2_CHANNEL_EXEC', 0); // PuTTy uses 0x100
131
+define('NET_SSH2_CHANNEL_SHELL',1);
132
+/**#@-*/
133
+
134
+/**#@+
135
+ * @access public
136
+ * @see Net_SSH2::getLog()
137
+ */
138
+/**
139
+ * Returns the message numbers
140
+ */
141
+define('NET_SSH2_LOG_SIMPLE',  1);
142
+/**
143
+ * Returns the message content
144
+ */
145
+define('NET_SSH2_LOG_COMPLEX', 2);
146
+/**#@-*/
147
+
148
+/**#@+
149
+ * @access public
150
+ * @see Net_SSH2::read()
151
+ */
152
+/**
153
+ * Returns when a string matching $expect exactly is found
154
+ */
155
+define('NET_SSH2_READ_SIMPLE',  1);
156
+/**
157
+ * Returns when a string matching the regular expression $expect is found
158
+ */
159
+define('NET_SSH2_READ_REGEX', 2);
160
+/**#@-*/
161
+
162
+/**
163
+ * Pure-PHP implementation of SSHv2.
164
+ *
165
+ * @author  Jim Wigginton <[email protected]>
166
+ * @version 0.1.0
167
+ * @access  public
168
+ * @package Net_SSH2
169
+ */
170
+class Net_SSH2 {
171
+    /**
172
+     * The SSH identifier
173
+     *
174
+     * @var String
175
+     * @access private
176
+     */
177
+    var $identifier = 'SSH-2.0-phpseclib_0.2';
178
+
179
+    /**
180
+     * The Socket Object
181
+     *
182
+     * @var Object
183
+     * @access private
184
+     */
185
+    var $fsock;
186
+
187
+    /**
188
+     * Execution Bitmap
189
+     *
190
+     * The bits that are set reprsent functions that have been called already.  This is used to determine
191
+     * if a requisite function has been successfully executed.  If not, an error should be thrown.
192
+     *
193
+     * @var Integer
194
+     * @access private
195
+     */
196
+    var $bitmap = 0;
197
+
198
+    /**
199
+     * Error information
200
+     *
201
+     * @see Net_SSH2::getErrors()
202
+     * @see Net_SSH2::getLastError()
203
+     * @var String
204
+     * @access private
205
+     */
206
+    var $errors = array();
207
+
208
+    /**
209
+     * Server Identifier
210
+     *
211
+     * @see Net_SSH2::getServerIdentification()
212
+     * @var String
213
+     * @access private
214
+     */
215
+    var $server_identifier = '';
216
+
217
+    /**
218
+     * Key Exchange Algorithms
219
+     *
220
+     * @see Net_SSH2::getKexAlgorithims()
221
+     * @var Array
222
+     * @access private
223
+     */
224
+    var $kex_algorithms;
225
+
226
+    /**
227
+     * Server Host Key Algorithms
228
+     *
229
+     * @see Net_SSH2::getServerHostKeyAlgorithms()
230
+     * @var Array
231
+     * @access private
232
+     */
233
+    var $server_host_key_algorithms;
234
+
235
+    /**
236
+     * Encryption Algorithms: Client to Server
237
+     *
238
+     * @see Net_SSH2::getEncryptionAlgorithmsClient2Server()
239
+     * @var Array
240
+     * @access private
241
+     */
242
+    var $encryption_algorithms_client_to_server;
243
+
244
+    /**
245
+     * Encryption Algorithms: Server to Client
246
+     *
247
+     * @see Net_SSH2::getEncryptionAlgorithmsServer2Client()
248
+     * @var Array
249
+     * @access private
250
+     */
251
+    var $encryption_algorithms_server_to_client;
252
+
253
+    /**
254
+     * MAC Algorithms: Client to Server
255
+     *
256
+     * @see Net_SSH2::getMACAlgorithmsClient2Server()
257
+     * @var Array
258
+     * @access private
259
+     */
260
+    var $mac_algorithms_client_to_server;
261
+
262
+    /**
263
+     * MAC Algorithms: Server to Client
264
+     *
265
+     * @see Net_SSH2::getMACAlgorithmsServer2Client()
266
+     * @var Array
267
+     * @access private
268
+     */
269
+    var $mac_algorithms_server_to_client;
270
+
271
+    /**
272
+     * Compression Algorithms: Client to Server
273
+     *
274
+     * @see Net_SSH2::getCompressionAlgorithmsClient2Server()
275
+     * @var Array
276
+     * @access private
277
+     */
278
+    var $compression_algorithms_client_to_server;
279
+
280
+    /**
281
+     * Compression Algorithms: Server to Client
282
+     *
283
+     * @see Net_SSH2::getCompressionAlgorithmsServer2Client()
284
+     * @var Array
285
+     * @access private
286
+     */
287
+    var $compression_algorithms_server_to_client;
288
+
289
+    /**
290
+     * Languages: Server to Client
291
+     *
292
+     * @see Net_SSH2::getLanguagesServer2Client()
293
+     * @var Array
294
+     * @access private
295
+     */
296
+    var $languages_server_to_client;
297
+
298
+    /**
299
+     * Languages: Client to Server
300
+     *
301
+     * @see Net_SSH2::getLanguagesClient2Server()
302
+     * @var Array
303
+     * @access private
304
+     */
305
+    var $languages_client_to_server;
306
+
307
+    /**
308
+     * Block Size for Server to Client Encryption
309
+     *
310
+     * "Note that the length of the concatenation of 'packet_length',
311
+     *  'padding_length', 'payload', and 'random padding' MUST be a multiple
312
+     *  of the cipher block size or 8, whichever is larger.  This constraint
313
+     *  MUST be enforced, even when using stream ciphers."
314
+     *
315
+     *  -- http://tools.ietf.org/html/rfc4253#section-6
316
+     *
317
+     * @see Net_SSH2::Net_SSH2()
318
+     * @see Net_SSH2::_send_binary_packet()
319
+     * @var Integer
320
+     * @access private
321
+     */
322
+    var $encrypt_block_size = 8;
323
+
324
+    /**
325
+     * Block Size for Client to Server Encryption
326
+     *
327
+     * @see Net_SSH2::Net_SSH2()
328
+     * @see Net_SSH2::_get_binary_packet()
329
+     * @var Integer
330
+     * @access private
331
+     */
332
+    var $decrypt_block_size = 8;
333
+
334
+    /**
335
+     * Server to Client Encryption Object
336
+     *
337
+     * @see Net_SSH2::_get_binary_packet()
338
+     * @var Object
339
+     * @access private
340
+     */
341
+    var $decrypt = false;
342
+
343
+    /**
344
+     * Client to Server Encryption Object
345
+     *
346
+     * @see Net_SSH2::_send_binary_packet()
347
+     * @var Object
348
+     * @access private
349
+     */
350
+    var $encrypt = false;
351
+
352
+    /**
353
+     * Client to Server HMAC Object
354
+     *
355
+     * @see Net_SSH2::_send_binary_packet()
356
+     * @var Object
357
+     * @access private
358
+     */
359
+    var $hmac_create = false;
360
+
361
+    /**
362
+     * Server to Client HMAC Object
363
+     *
364
+     * @see Net_SSH2::_get_binary_packet()
365
+     * @var Object
366
+     * @access private
367
+     */
368
+    var $hmac_check = false;
369
+
370
+    /**
371
+     * Size of server to client HMAC
372
+     *
373
+     * We need to know how big the HMAC will be for the server to client direction so that we know how many bytes to read.
374
+     * For the client to server side, the HMAC object will make the HMAC as long as it needs to be.  All we need to do is
375
+     * append it.
376
+     *
377
+     * @see Net_SSH2::_get_binary_packet()
378
+     * @var Integer
379
+     * @access private
380
+     */
381
+    var $hmac_size = false;
382
+
383
+    /**
384
+     * Server Public Host Key
385
+     *
386
+     * @see Net_SSH2::getServerPublicHostKey()
387
+     * @var String
388
+     * @access private
389
+     */
390
+    var $server_public_host_key;
391
+
392
+    /**
393
+     * Session identifer
394
+     *
395
+     * "The exchange hash H from the first key exchange is additionally
396
+     *  used as the session identifier, which is a unique identifier for
397
+     *  this connection."
398
+     *
399
+     *  -- http://tools.ietf.org/html/rfc4253#section-7.2
400
+     *
401
+     * @see Net_SSH2::_key_exchange()
402
+     * @var String
403
+     * @access private
404
+     */
405
+    var $session_id = false;
406
+
407
+    /**
408
+     * Exchange hash
409
+     *
410
+     * The current exchange hash
411
+     *
412
+     * @see Net_SSH2::_key_exchange()
413
+     * @var String
414
+     * @access private
415
+     */
416
+    var $exchange_hash = false;
417
+
418
+    /**
419
+     * Message Numbers
420
+     *
421
+     * @see Net_SSH2::Net_SSH2()
422
+     * @var Array
423
+     * @access private
424
+     */
425
+    var $message_numbers = array();
426
+
427
+    /**
428
+     * Disconnection Message 'reason codes' defined in RFC4253
429
+     *
430
+     * @see Net_SSH2::Net_SSH2()
431
+     * @var Array
432
+     * @access private
433
+     */
434
+    var $disconnect_reasons = array();
435
+
436
+    /**
437
+     * SSH_MSG_CHANNEL_OPEN_FAILURE 'reason codes', defined in RFC4254
438
+     *
439
+     * @see Net_SSH2::Net_SSH2()
440
+     * @var Array
441
+     * @access private
442
+     */
443
+    var $channel_open_failure_reasons = array();
444
+
445
+    /**
446
+     * Terminal Modes
447
+     *
448
+     * @link http://tools.ietf.org/html/rfc4254#section-8
449
+     * @see Net_SSH2::Net_SSH2()
450
+     * @var Array
451
+     * @access private
452
+     */
453
+    var $terminal_modes = array();
454
+
455
+    /**
456
+     * SSH_MSG_CHANNEL_EXTENDED_DATA's data_type_codes
457
+     *
458
+     * @link http://tools.ietf.org/html/rfc4254#section-5.2
459
+     * @see Net_SSH2::Net_SSH2()
460
+     * @var Array
461
+     * @access private
462
+     */
463
+    var $channel_extended_data_type_codes = array();
464
+
465
+    /**
466
+     * Send Sequence Number
467
+     *
468
+     * See 'Section 6.4.  Data Integrity' of rfc4253 for more info.
469
+     *
470
+     * @see Net_SSH2::_send_binary_packet()
471
+     * @var Integer
472
+     * @access private
473
+     */
474
+    var $send_seq_no = 0;
475
+
476
+    /**
477
+     * Get Sequence Number
478
+     *
479
+     * See 'Section 6.4.  Data Integrity' of rfc4253 for more info.
480
+     *
481
+     * @see Net_SSH2::_get_binary_packet()
482
+     * @var Integer
483
+     * @access private
484
+     */
485
+    var $get_seq_no = 0;
486
+
487
+    /**
488
+     * Server Channels
489
+     *
490
+     * Maps client channels to server channels
491
+     *
492
+     * @see Net_SSH2::_get_channel_packet()
493
+     * @see Net_SSH2::exec()
494
+     * @var Array
495
+     * @access private
496
+     */
497
+    var $server_channels = array();
498
+
499
+    /**
500
+     * Channel Buffers
501
+     *
502
+     * If a client requests a packet from one channel but receives two packets from another those packets should
503
+     * be placed in a buffer
504
+     *
505
+     * @see Net_SSH2::_get_channel_packet()
506
+     * @see Net_SSH2::exec()
507
+     * @var Array
508
+     * @access private
509
+     */
510
+    var $channel_buffers = array();
511
+
512
+    /**
513
+     * Channel Status
514
+     *
515
+     * Contains the type of the last sent message
516
+     *
517
+     * @see Net_SSH2::_get_channel_packet()
518
+     * @var Array
519
+     * @access private
520
+     */
521
+    var $channel_status = array();
522
+
523
+    /**
524
+     * Packet Size
525
+     *
526
+     * Maximum packet size indexed by channel
527
+     *
528
+     * @see Net_SSH2::_send_channel_packet()
529
+     * @var Array
530
+     * @access private
531
+     */
532
+    var $packet_size_client_to_server = array();
533
+
534
+    /**
535
+     * Message Number Log
536
+     *
537
+     * @see Net_SSH2::getLog()
538
+     * @var Array
539
+     * @access private
540
+     */
541
+    var $message_number_log = array();
542
+
543
+    /**
544
+     * Message Log
545
+     *
546
+     * @see Net_SSH2::getLog()
547
+     * @var Array
548
+     * @access private
549
+     */
550
+    var $message_log = array();
551
+
552
+    /**
553
+     * The Window Size
554
+     *
555
+     * Bytes the other party can send before it must wait for the window to be adjusted (0x7FFFFFFF = 4GB)
556
+     *
557
+     * @var Integer
558
+     * @see Net_SSH2::_send_channel_packet()
559
+     * @see Net_SSH2::exec()
560
+     * @access private
561
+     */
562
+    var $window_size = 0x7FFFFFFF;
563
+
564
+    /**
565
+     * Window size
566
+     *
567
+     * Window size indexed by channel
568
+     *
569
+     * @see Net_SSH2::_send_channel_packet()
570
+     * @var Array
571
+     * @access private
572
+     */
573
+    var $window_size_client_to_server = array();
574
+
575
+    /**
576
+     * Server signature
577
+     *
578
+     * Verified against $this->session_id
579
+     *
580
+     * @see Net_SSH2::getServerPublicHostKey()
581
+     * @var String
582
+     * @access private
583
+     */
584
+    var $signature = '';
585
+
586
+    /**
587
+     * Server signature format
588
+     *
589
+     * ssh-rsa or ssh-dss.
590
+     *
591
+     * @see Net_SSH2::getServerPublicHostKey()
592
+     * @var String
593
+     * @access private
594
+     */
595
+    var $signature_format = '';
596
+
597
+    /**
598
+     * Interactive Buffer
599
+     *
600
+     * @see Net_SSH2::read()
601
+     * @var Array
602
+     * @access private
603
+     */
604
+    var $interactiveBuffer = '';
605
+
606
+    /**
607
+     * Default Constructor.
608
+     *
609
+     * Connects to an SSHv2 server
610
+     *
611
+     * @param String $host
612
+     * @param optional Integer $port
613
+     * @param optional Integer $timeout
614
+     * @return Net_SSH2
615
+     * @access public
616
+     */
617
+    function Net_SSH2($host, $port = 22, $timeout = 10)
618
+    {
619
+        $this->message_numbers = array(
620
+            1 => 'NET_SSH2_MSG_DISCONNECT',
621
+            2 => 'NET_SSH2_MSG_IGNORE',
622
+            3 => 'NET_SSH2_MSG_UNIMPLEMENTED',
623
+            4 => 'NET_SSH2_MSG_DEBUG',
624
+            5 => 'NET_SSH2_MSG_SERVICE_REQUEST',
625
+            6 => 'NET_SSH2_MSG_SERVICE_ACCEPT',
626
+            20 => 'NET_SSH2_MSG_KEXINIT',
627
+            21 => 'NET_SSH2_MSG_NEWKEYS',
628
+            30 => 'NET_SSH2_MSG_KEXDH_INIT',
629
+            31 => 'NET_SSH2_MSG_KEXDH_REPLY',
630
+            50 => 'NET_SSH2_MSG_USERAUTH_REQUEST',
631
+            51 => 'NET_SSH2_MSG_USERAUTH_FAILURE',
632
+            52 => 'NET_SSH2_MSG_USERAUTH_SUCCESS',
633
+            53 => 'NET_SSH2_MSG_USERAUTH_BANNER',
634
+
635
+            80 => 'NET_SSH2_MSG_GLOBAL_REQUEST',
636
+            81 => 'NET_SSH2_MSG_REQUEST_SUCCESS',
637
+            82 => 'NET_SSH2_MSG_REQUEST_FAILURE',
638
+            90 => 'NET_SSH2_MSG_CHANNEL_OPEN',
639
+            91 => 'NET_SSH2_MSG_CHANNEL_OPEN_CONFIRMATION',
640
+            92 => 'NET_SSH2_MSG_CHANNEL_OPEN_FAILURE',
641
+            93 => 'NET_SSH2_MSG_CHANNEL_WINDOW_ADJUST',
642
+            94 => 'NET_SSH2_MSG_CHANNEL_DATA',
643
+            95 => 'NET_SSH2_MSG_CHANNEL_EXTENDED_DATA',
644
+            96 => 'NET_SSH2_MSG_CHANNEL_EOF',
645
+            97 => 'NET_SSH2_MSG_CHANNEL_CLOSE',
646
+            98 => 'NET_SSH2_MSG_CHANNEL_REQUEST',
647
+            99 => 'NET_SSH2_MSG_CHANNEL_SUCCESS',
648
+            100 => 'NET_SSH2_MSG_CHANNEL_FAILURE'
649
+        );
650
+        $this->disconnect_reasons = array(
651
+            1 => 'NET_SSH2_DISCONNECT_HOST_NOT_ALLOWED_TO_CONNECT',
652
+            2 => 'NET_SSH2_DISCONNECT_PROTOCOL_ERROR',
653
+            3 => 'NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED',
654
+            4 => 'NET_SSH2_DISCONNECT_RESERVED',
655
+            5 => 'NET_SSH2_DISCONNECT_MAC_ERROR',
656
+            6 => 'NET_SSH2_DISCONNECT_COMPRESSION_ERROR',
657
+            7 => 'NET_SSH2_DISCONNECT_SERVICE_NOT_AVAILABLE',
658
+            8 => 'NET_SSH2_DISCONNECT_PROTOCOL_VERSION_NOT_SUPPORTED',
659
+            9 => 'NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE',
660
+            10 => 'NET_SSH2_DISCONNECT_CONNECTION_LOST',
661
+            11 => 'NET_SSH2_DISCONNECT_BY_APPLICATION',
662
+            12 => 'NET_SSH2_DISCONNECT_TOO_MANY_CONNECTIONS',
663
+            13 => 'NET_SSH2_DISCONNECT_AUTH_CANCELLED_BY_USER',
664
+            14 => 'NET_SSH2_DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE',
665
+            15 => 'NET_SSH2_DISCONNECT_ILLEGAL_USER_NAME'
666
+        );
667
+        $this->channel_open_failure_reasons = array(
668
+            1 => 'NET_SSH2_OPEN_ADMINISTRATIVELY_PROHIBITED'
669
+        );
670
+        $this->terminal_modes = array(
671
+            0 => 'NET_SSH2_TTY_OP_END'
672
+        );
673
+        $this->channel_extended_data_type_codes = array(
674
+            1 => 'NET_SSH2_EXTENDED_DATA_STDERR'
675
+        );
676
+
677
+        $this->_define_array(
678
+            $this->message_numbers,
679
+            $this->disconnect_reasons,
680
+            $this->channel_open_failure_reasons,
681
+            $this->terminal_modes,
682
+            $this->channel_extended_data_type_codes,
683
+            array(60 => 'NET_SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ'),
684
+            array(60 => 'NET_SSH2_MSG_USERAUTH_PK_OK'),
685
+            array(60 => 'NET_SSH2_MSG_USERAUTH_INFO_REQUEST',
686
+                  61 => 'NET_SSH2_MSG_USERAUTH_INFO_RESPONSE')
687
+        );
688
+
689
+        $this->fsock = @fsockopen($host, $port, $errno, $errstr, $timeout);
690
+        if (!$this->fsock) {
691
+            user_error(rtrim("Cannot connect to $host. Error $errno. $errstr"), E_USER_NOTICE);
692
+            return;
693
+        }
694
+
695
+        /* According to the SSH2 specs,
696
+
697
+          "The server MAY send other lines of data before sending the version
698
+           string.  Each line SHOULD be terminated by a Carriage Return and Line
699
+           Feed.  Such lines MUST NOT begin with "SSH-", and SHOULD be encoded
700
+           in ISO-10646 UTF-8 [RFC3629] (language is not specified).  Clients
701
+           MUST be able to process such lines." */
702
+        $temp = '';
703
+        $extra = '';
704
+        while (!feof($this->fsock) && !preg_match('#^SSH-(\d\.\d+)#', $temp, $matches)) {
705
+            if (substr($temp, -2) == "\r\n") {
706
+                $extra.= $temp;
707
+                $temp = '';
708
+            }
709
+            $temp.= fgets($this->fsock, 255);
710
+        }
711
+
712
+        if (feof($this->fsock)) {
713
+            user_error('Connection closed by server', E_USER_NOTICE);
714
+            return false;
715
+        }
716
+
717
+        $ext = array();
718
+        if (extension_loaded('mcrypt')) {
719
+            $ext[] = 'mcrypt';
720
+        }
721
+        if (extension_loaded('gmp')) {
722
+            $ext[] = 'gmp';
723
+        } else if (extension_loaded('bcmath')) {
724
+            $ext[] = 'bcmath';
725
+        }
726
+
727
+        if (!empty($ext)) {
728
+            $this->identifier.= ' (' . implode(', ', $ext) . ')';
729
+        }
730
+
731
+        if (defined('NET_SSH2_LOGGING')) {
732
+            $this->message_number_log[] = '<-';
733
+            $this->message_number_log[] = '->';
734
+
735
+            if (NET_SSH2_LOGGING == NET_SSH2_LOG_COMPLEX) {
736
+                $this->message_log[] = $temp;
737
+                $this->message_log[] = $this->identifier . "\r\n";
738
+            }
739
+        }
740
+
741
+        $this->server_identifier = trim($temp, "\r\n");
742
+        if (!empty($extra)) {
743
+            $this->errors[] = utf8_decode($extra);
744
+        }
745
+
746
+        if ($matches[1] != '1.99' && $matches[1] != '2.0') {
747
+            user_error("Cannot connect to SSH $matches[1] servers", E_USER_NOTICE);
748
+            return;
749
+        }
750
+
751
+        fputs($this->fsock, $this->identifier . "\r\n");
752
+
753
+        $response = $this->_get_binary_packet();
754
+        if ($response === false) {
755
+            user_error('Connection closed by server', E_USER_NOTICE);
756
+            return;
757
+        }
758
+
759
+        if (ord($response[0]) != NET_SSH2_MSG_KEXINIT) {
760
+            user_error('Expected SSH_MSG_KEXINIT', E_USER_NOTICE);
761
+            return;
762
+        }
763
+
764
+        if (!$this->_key_exchange($response)) {
765
+            return;
766
+        }
767
+
768
+        $this->bitmap = NET_SSH2_MASK_CONSTRUCTOR;
769
+    }
770
+
771
+    /**
772
+     * Key Exchange
773
+     *
774
+     * @param String $kexinit_payload_server
775
+     * @access private
776
+     */
777
+    function _key_exchange($kexinit_payload_server)
778
+    {
779
+        static $kex_algorithms = array(
780
+            'diffie-hellman-group1-sha1', // REQUIRED
781
+            'diffie-hellman-group14-sha1' // REQUIRED
782
+        );
783
+
784
+        static $server_host_key_algorithms = array(
785
+            'ssh-rsa', // RECOMMENDED  sign   Raw RSA Key
786
+            'ssh-dss'  // REQUIRED     sign   Raw DSS Key
787
+        );
788
+
789
+        static $encryption_algorithms = array(
790
+            // from <http://tools.ietf.org/html/rfc4345#section-4>:
791
+            'arcfour256',
792
+            'arcfour128',
793
+
794
+            'arcfour',    // OPTIONAL          the ARCFOUR stream cipher with a 128-bit key
795
+
796
+            'aes128-cbc', // RECOMMENDED       AES with a 128-bit key
797
+            'aes192-cbc', // OPTIONAL          AES with a 192-bit key
798
+            'aes256-cbc', // OPTIONAL          AES in CBC mode, with a 256-bit key
799
+
800
+            // from <http://tools.ietf.org/html/rfc4344#section-4>:
801
+            'aes128-ctr', // RECOMMENDED       AES (Rijndael) in SDCTR mode, with 128-bit key
802
+            'aes192-ctr', // RECOMMENDED       AES with 192-bit key
803
+            'aes256-ctr', // RECOMMENDED       AES with 256-bit key
804
+            '3des-ctr',   // RECOMMENDED       Three-key 3DES in SDCTR mode
805
+
806
+            '3des-cbc',   // REQUIRED          three-key 3DES in CBC mode
807
+            'none'        // OPTIONAL          no encryption; NOT RECOMMENDED
808
+        );
809
+
810
+        static $mac_algorithms = array(
811
+            'hmac-sha1-96', // RECOMMENDED     first 96 bits of HMAC-SHA1 (digest length = 12, key length = 20)
812
+            'hmac-sha1',    // REQUIRED        HMAC-SHA1 (digest length = key length = 20)
813
+            'hmac-md5-96',  // OPTIONAL        first 96 bits of HMAC-MD5 (digest length = 12, key length = 16)
814
+            'hmac-md5',     // OPTIONAL        HMAC-MD5 (digest length = key length = 16)
815
+            'none'          // OPTIONAL        no MAC; NOT RECOMMENDED
816
+        );
817
+
818
+        static $compression_algorithms = array(
819
+            'none'   // REQUIRED        no compression
820
+            //'zlib' // OPTIONAL        ZLIB (LZ77) compression
821
+        );
822
+
823
+        static $str_kex_algorithms, $str_server_host_key_algorithms,
824
+               $encryption_algorithms_server_to_client, $mac_algorithms_server_to_client, $compression_algorithms_server_to_client,
825
+               $encryption_algorithms_client_to_server, $mac_algorithms_client_to_server, $compression_algorithms_client_to_server;
826
+
827
+        if (empty($str_kex_algorithms)) {
828
+            $str_kex_algorithms = implode(',', $kex_algorithms);
829
+            $str_server_host_key_algorithms = implode(',', $server_host_key_algorithms);
830
+            $encryption_algorithms_server_to_client = $encryption_algorithms_client_to_server = implode(',', $encryption_algorithms);
831
+            $mac_algorithms_server_to_client = $mac_algorithms_client_to_server = implode(',', $mac_algorithms);
832
+            $compression_algorithms_server_to_client = $compression_algorithms_client_to_server = implode(',', $compression_algorithms);
833
+        }
834
+
835
+        $client_cookie = '';
836
+        for ($i = 0; $i < 16; $i++) {
837
+            $client_cookie.= chr(crypt_random(0, 255));
838
+        }
839
+
840
+        $response = $kexinit_payload_server;
841
+        $this->_string_shift($response, 1); // skip past the message number (it should be SSH_MSG_KEXINIT)
842
+        $server_cookie = $this->_string_shift($response, 16);
843
+
844
+        $temp = unpack('Nlength', $this->_string_shift($response, 4));
845
+        $this->kex_algorithms = explode(',', $this->_string_shift($response, $temp['length']));
846
+
847
+        $temp = unpack('Nlength', $this->_string_shift($response, 4));
848
+        $this->server_host_key_algorithms = explode(',', $this->_string_shift($response, $temp['length']));
849
+
850
+        $temp = unpack('Nlength', $this->_string_shift($response, 4));
851
+        $this->encryption_algorithms_client_to_server = explode(',', $this->_string_shift($response, $temp['length']));
852
+
853
+        $temp = unpack('Nlength', $this->_string_shift($response, 4));
854
+        $this->encryption_algorithms_server_to_client = explode(',', $this->_string_shift($response, $temp['length']));
855
+
856
+        $temp = unpack('Nlength', $this->_string_shift($response, 4));
857
+        $this->mac_algorithms_client_to_server = explode(',', $this->_string_shift($response, $temp['length']));
858
+
859
+        $temp = unpack('Nlength', $this->_string_shift($response, 4));
860
+        $this->mac_algorithms_server_to_client = explode(',', $this->_string_shift($response, $temp['length']));
861
+
862
+        $temp = unpack('Nlength', $this->_string_shift($response, 4));
863
+        $this->compression_algorithms_client_to_server = explode(',', $this->_string_shift($response, $temp['length']));
864
+
865
+        $temp = unpack('Nlength', $this->_string_shift($response, 4));
866
+        $this->compression_algorithms_server_to_client = explode(',', $this->_string_shift($response, $temp['length']));
867
+
868
+        $temp = unpack('Nlength', $this->_string_shift($response, 4));
869
+        $this->languages_client_to_server = explode(',', $this->_string_shift($response, $temp['length']));
870
+
871
+        $temp = unpack('Nlength', $this->_string_shift($response, 4));
872
+        $this->languages_server_to_client = explode(',', $this->_string_shift($response, $temp['length']));
873
+
874
+        extract(unpack('Cfirst_kex_packet_follows', $this->_string_shift($response, 1)));
875
+        $first_kex_packet_follows = $first_kex_packet_follows != 0;
876
+
877
+        // the sending of SSH2_MSG_KEXINIT could go in one of two places.  this is the second place.
878
+        $kexinit_payload_client = pack('Ca*Na*Na*Na*Na*Na*Na*Na*Na*Na*Na*CN',
879
+            NET_SSH2_MSG_KEXINIT, $client_cookie, strlen($str_kex_algorithms), $str_kex_algorithms,
880
+            strlen($str_server_host_key_algorithms), $str_server_host_key_algorithms, strlen($encryption_algorithms_client_to_server),
881
+            $encryption_algorithms_client_to_server, strlen($encryption_algorithms_server_to_client), $encryption_algorithms_server_to_client,
882
+            strlen($mac_algorithms_client_to_server), $mac_algorithms_client_to_server, strlen($mac_algorithms_server_to_client),
883
+            $mac_algorithms_server_to_client, strlen($compression_algorithms_client_to_server), $compression_algorithms_client_to_server,
884
+            strlen($compression_algorithms_server_to_client), $compression_algorithms_server_to_client, 0, '', 0, '',
885
+            0, 0
886
+        );
887
+
888
+        if (!$this->_send_binary_packet($kexinit_payload_client)) {
889
+            return false;
890
+        }
891
+        // here ends the second place.
892
+
893
+        // we need to decide upon the symmetric encryption algorithms before we do the diffie-hellman key exchange
894
+        for ($i = 0; $i < count($encryption_algorithms) && !in_array($encryption_algorithms[$i], $this->encryption_algorithms_server_to_client); $i++);
895
+        if ($i == count($encryption_algorithms)) {
896
+            user_error('No compatible server to client encryption algorithms found', E_USER_NOTICE);
897
+            return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
898
+        }
899
+
900
+        // we don't initialize any crypto-objects, yet - we do that, later. for now, we need the lengths to make the
901
+        // diffie-hellman key exchange as fast as possible
902
+        $decrypt = $encryption_algorithms[$i];
903
+        switch ($decrypt) {
904
+            case '3des-cbc':
905
+            case '3des-ctr':
906
+                $decryptKeyLength = 24; // eg. 192 / 8
907
+                break;
908
+            case 'aes256-cbc':
909
+            case 'aes256-ctr':
910
+                $decryptKeyLength = 32; // eg. 256 / 8
911
+                break;
912
+            case 'aes192-cbc':
913
+            case 'aes192-ctr':
914
+                $decryptKeyLength = 24; // eg. 192 / 8
915
+                break;
916
+            case 'aes128-cbc':
917
+            case 'aes128-ctr':
918
+                $decryptKeyLength = 16; // eg. 128 / 8
919
+                break;
920
+            case 'arcfour':
921
+            case 'arcfour128':
922
+                $decryptKeyLength = 16; // eg. 128 / 8
923
+                break;
924
+            case 'arcfour256':
925
+                $decryptKeyLength = 32; // eg. 128 / 8
926
+                break;
927
+            case 'none';
928
+                $decryptKeyLength = 0;
929
+        }
930
+
931
+        for ($i = 0; $i < count($encryption_algorithms) && !in_array($encryption_algorithms[$i], $this->encryption_algorithms_client_to_server); $i++);
932
+        if ($i == count($encryption_algorithms)) {
933
+            user_error('No compatible client to server encryption algorithms found', E_USER_NOTICE);
934
+            return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
935
+        }
936
+
937
+        $encrypt = $encryption_algorithms[$i];
938
+        switch ($encrypt) {
939
+            case '3des-cbc':
940
+            case '3des-ctr':
941
+                $encryptKeyLength = 24;
942
+                break;
943
+            case 'aes256-cbc':
944
+            case 'aes256-ctr':
945
+                $encryptKeyLength = 32;
946
+                break;
947
+            case 'aes192-cbc':
948
+            case 'aes192-ctr':
949
+                $encryptKeyLength = 24;
950
+                break;
951
+            case 'aes128-cbc':
952
+            case 'aes128-ctr':
953
+                $encryptKeyLength = 16;
954
+                break;
955
+            case 'arcfour':
956
+            case 'arcfour128':
957
+                $encryptKeyLength = 16;
958
+                break;
959
+            case 'arcfour256':
960
+                $encryptKeyLength = 32;
961
+                break;
962
+            case 'none';
963
+                $encryptKeyLength = 0;
964
+        }
965
+
966
+        $keyLength = $decryptKeyLength > $encryptKeyLength ? $decryptKeyLength : $encryptKeyLength;
967
+
968
+        // through diffie-hellman key exchange a symmetric key is obtained
969
+        for ($i = 0; $i < count($kex_algorithms) && !in_array($kex_algorithms[$i], $this->kex_algorithms); $i++);
970
+        if ($i == count($kex_algorithms)) {
971
+            user_error('No compatible key exchange algorithms found', E_USER_NOTICE);
972
+            return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
973
+        }
974
+
975
+        switch ($kex_algorithms[$i]) {
976
+            // see http://tools.ietf.org/html/rfc2409#section-6.2 and 
977
+            // http://tools.ietf.org/html/rfc2412, appendex E
978
+            case 'diffie-hellman-group1-sha1':
979
+                $p = pack('H256', 'FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74' . 
980
+                                  '020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F1437' . 
981
+                                  '4FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED' . 
982
+                                  'EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFF');
983
+                $keyLength = $keyLength < 160 ? $keyLength : 160;
984
+                $hash = 'sha1';
985
+                break;
986
+            // see http://tools.ietf.org/html/rfc3526#section-3
987
+            case 'diffie-hellman-group14-sha1':
988
+                $p = pack('H512', 'FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74' . 
989
+                                  '020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F1437' . 
990
+                                  '4FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED' . 
991
+                                  'EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF05' . 
992
+                                  '98DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB' . 
993
+                                  '9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B' . 
994
+                                  'E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF695581718' . 
995
+                                  '3995497CEA956AE515D2261898FA051015728E5A8AACAA68FFFFFFFFFFFFFFFF');
996
+                $keyLength = $keyLength < 160 ? $keyLength : 160;
997
+                $hash = 'sha1';
998
+        }
999
+
1000
+        $p = new Math_BigInteger($p, 256);
1001
+        //$q = $p->bitwise_rightShift(1);
1002
+
1003
+        /* To increase the speed of the key exchange, both client and server may
1004
+           reduce the size of their private exponents.  It should be at least
1005
+           twice as long as the key material that is generated from the shared
1006
+           secret.  For more details, see the paper by van Oorschot and Wiener
1007
+           [VAN-OORSCHOT].
1008
+
1009
+           -- http://tools.ietf.org/html/rfc4419#section-6.2 */
1010
+        $q = new Math_BigInteger(1);
1011
+        $q = $q->bitwise_leftShift(2 * $keyLength);
1012
+        $q = $q->subtract(new Math_BigInteger(1));
1013
+
1014
+        $g = new Math_BigInteger(2);
1015
+        $x = new Math_BigInteger();
1016
+        $x->setRandomGenerator('crypt_random');
1017
+        $x = $x->random(new Math_BigInteger(1), $q);
1018
+        $e = $g->modPow($x, $p);
1019
+
1020
+        $eBytes = $e->toBytes(true);
1021
+        $data = pack('CNa*', NET_SSH2_MSG_KEXDH_INIT, strlen($eBytes), $eBytes);
1022
+
1023
+        if (!$this->_send_binary_packet($data)) {
1024
+            user_error('Connection closed by server', E_USER_NOTICE);
1025
+            return false;
1026
+        }
1027
+
1028
+        $response = $this->_get_binary_packet();
1029
+        if ($response === false) {
1030
+            user_error('Connection closed by server', E_USER_NOTICE);
1031
+            return false;
1032
+        }
1033
+        extract(unpack('Ctype', $this->_string_shift($response, 1)));
1034
+
1035
+        if ($type != NET_SSH2_MSG_KEXDH_REPLY) {
1036
+            user_error('Expected SSH_MSG_KEXDH_REPLY', E_USER_NOTICE);
1037
+            return false;
1038
+        }
1039
+
1040
+        $temp = unpack('Nlength', $this->_string_shift($response, 4));
1041
+        $this->server_public_host_key = $server_public_host_key = $this->_string_shift($response, $temp['length']);
1042
+
1043
+        $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
1044
+        $public_key_format = $this->_string_shift($server_public_host_key, $temp['length']);
1045
+
1046
+        $temp = unpack('Nlength', $this->_string_shift($response, 4));
1047
+        $fBytes = $this->_string_shift($response, $temp['length']);
1048
+        $f = new Math_BigInteger($fBytes, -256);
1049
+
1050
+        $temp = unpack('Nlength', $this->_string_shift($response, 4));
1051
+        $this->signature = $this->_string_shift($response, $temp['length']);
1052
+
1053
+        $temp = unpack('Nlength', $this->_string_shift($this->signature, 4));
1054
+        $this->signature_format = $this->_string_shift($this->signature, $temp['length']);
1055
+
1056
+        $key = $f->modPow($x, $p);
1057
+        $keyBytes = $key->toBytes(true);
1058
+
1059
+        $this->exchange_hash = pack('Na*Na*Na*Na*Na*Na*Na*Na*',
1060
+            strlen($this->identifier), $this->identifier, strlen($this->server_identifier), $this->server_identifier,
1061
+            strlen($kexinit_payload_client), $kexinit_payload_client, strlen($kexinit_payload_server),
1062
+            $kexinit_payload_server, strlen($this->server_public_host_key), $this->server_public_host_key, strlen($eBytes),
1063
+            $eBytes, strlen($fBytes), $fBytes, strlen($keyBytes), $keyBytes
1064
+        );
1065
+
1066
+        $this->exchange_hash = pack('H*', $hash($this->exchange_hash));
1067
+
1068
+        if ($this->session_id === false) {
1069
+            $this->session_id = $this->exchange_hash;
1070
+        }
1071
+
1072
+        for ($i = 0; $i < count($server_host_key_algorithms) && !in_array($server_host_key_algorithms[$i], $this->server_host_key_algorithms); $i++);
1073
+        if ($i == count($server_host_key_algorithms)) {
1074
+            user_error('No compatible server host key algorithms found', E_USER_NOTICE);
1075
+            return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
1076
+        }
1077
+
1078
+        if ($public_key_format != $server_host_key_algorithms[$i] || $this->signature_format != $server_host_key_algorithms[$i]) {
1079
+            user_error('Sever Host Key Algorithm Mismatch', E_USER_NOTICE);
1080
+            return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
1081
+        }
1082
+
1083
+        $packet = pack('C',
1084
+            NET_SSH2_MSG_NEWKEYS
1085
+        );
1086
+
1087
+        if (!$this->_send_binary_packet($packet)) {
1088
+            return false;
1089
+        }
1090
+
1091
+        $response = $this->_get_binary_packet();
1092
+
1093
+        if ($response === false) {
1094
+            user_error('Connection closed by server', E_USER_NOTICE);
1095
+            return false;
1096
+        }
1097
+
1098
+        extract(unpack('Ctype', $this->_string_shift($response, 1)));
1099
+
1100
+        if ($type != NET_SSH2_MSG_NEWKEYS) {
1101
+            user_error('Expected SSH_MSG_NEWKEYS', E_USER_NOTICE);
1102
+            return false;
1103
+        }
1104
+
1105
+        switch ($encrypt) {
1106
+            case '3des-cbc':
1107
+                $this->encrypt = new Crypt_TripleDES();
1108
+                // $this->encrypt_block_size = 64 / 8 == the default
1109
+                break;
1110
+            case '3des-ctr':
1111
+                $this->encrypt = new Crypt_TripleDES(CRYPT_DES_MODE_CTR);
1112
+                // $this->encrypt_block_size = 64 / 8 == the default
1113
+                break;
1114
+            case 'aes256-cbc':
1115
+            case 'aes192-cbc':
1116
+            case 'aes128-cbc':
1117
+                $this->encrypt = new Crypt_AES();
1118
+                $this->encrypt_block_size = 16; // eg. 128 / 8
1119
+                break;
1120
+            case 'aes256-ctr':
1121
+            case 'aes192-ctr':
1122
+            case 'aes128-ctr':
1123
+                $this->encrypt = new Crypt_AES(CRYPT_AES_MODE_CTR);
1124
+                $this->encrypt_block_size = 16; // eg. 128 / 8
1125
+                break;
1126
+            case 'arcfour':
1127
+            case 'arcfour128':
1128
+            case 'arcfour256':
1129
+                $this->encrypt = new Crypt_RC4();
1130
+                break;
1131
+            case 'none';
1132
+                //$this->encrypt = new Crypt_Null();
1133
+        }
1134
+
1135
+        switch ($decrypt) {
1136
+            case '3des-cbc':
1137
+                $this->decrypt = new Crypt_TripleDES();
1138
+                break;
1139
+            case '3des-ctr':
1140
+                $this->decrypt = new Crypt_TripleDES(CRYPT_DES_MODE_CTR);
1141
+                break;
1142
+            case 'aes256-cbc':
1143
+            case 'aes192-cbc':
1144
+            case 'aes128-cbc':
1145
+                $this->decrypt = new Crypt_AES();
1146
+                $this->decrypt_block_size = 16;
1147
+                break;
1148
+            case 'aes256-ctr':
1149
+            case 'aes192-ctr':
1150
+            case 'aes128-ctr':
1151
+                $this->decrypt = new Crypt_AES(CRYPT_AES_MODE_CTR);
1152
+                $this->decrypt_block_size = 16;
1153
+                break;
1154
+            case 'arcfour':
1155
+            case 'arcfour128':
1156
+            case 'arcfour256':
1157
+                $this->decrypt = new Crypt_RC4();
1158
+                break;
1159
+            case 'none';
1160
+                //$this->decrypt = new Crypt_Null();
1161
+        }
1162
+
1163
+        $keyBytes = pack('Na*', strlen($keyBytes), $keyBytes);
1164
+
1165
+        if ($this->encrypt) {
1166
+            $this->encrypt->enableContinuousBuffer();
1167
+            $this->encrypt->disablePadding();
1168
+
1169
+            $iv = pack('H*', $hash($keyBytes . $this->exchange_hash . 'A' . $this->session_id));
1170
+            while ($this->encrypt_block_size > strlen($iv)) {
1171
+                $iv.= pack('H*', $hash($keyBytes . $this->exchange_hash . $iv));
1172
+            }
1173
+            $this->encrypt->setIV(substr($iv, 0, $this->encrypt_block_size));
1174
+
1175
+            $key = pack('H*', $hash($keyBytes . $this->exchange_hash . 'C' . $this->session_id));
1176
+            while ($encryptKeyLength > strlen($key)) {
1177
+                $key.= pack('H*', $hash($keyBytes . $this->exchange_hash . $key));
1178
+            }
1179
+            $this->encrypt->setKey(substr($key, 0, $encryptKeyLength));
1180
+        }
1181
+
1182
+        if ($this->decrypt) {
1183
+            $this->decrypt->enableContinuousBuffer();
1184
+            $this->decrypt->disablePadding();
1185
+
1186
+            $iv = pack('H*', $hash($keyBytes . $this->exchange_hash . 'B' . $this->session_id));
1187
+            while ($this->decrypt_block_size > strlen($iv)) {
1188
+                $iv.= pack('H*', $hash($keyBytes . $this->exchange_hash . $iv));
1189
+            }
1190
+            $this->decrypt->setIV(substr($iv, 0, $this->decrypt_block_size));
1191
+
1192
+            $key = pack('H*', $hash($keyBytes . $this->exchange_hash . 'D' . $this->session_id));
1193
+            while ($decryptKeyLength > strlen($key)) {
1194
+                $key.= pack('H*', $hash($keyBytes . $this->exchange_hash . $key));
1195
+            }
1196
+            $this->decrypt->setKey(substr($key, 0, $decryptKeyLength));
1197
+        }
1198
+
1199
+        /* The "arcfour128" algorithm is the RC4 cipher, as described in
1200
+           [SCHNEIER], using a 128-bit key.  The first 1536 bytes of keystream
1201
+           generated by the cipher MUST be discarded, and the first byte of the
1202
+           first encrypted packet MUST be encrypted using the 1537th byte of
1203
+           keystream.
1204
+
1205
+           -- http://tools.ietf.org/html/rfc4345#section-4 */
1206
+        if ($encrypt == 'arcfour128' || $encrypt == 'arcfour256') {
1207
+            $this->encrypt->encrypt(str_repeat("\0", 1536));
1208
+        }
1209
+        if ($decrypt == 'arcfour128' || $decrypt == 'arcfour256') {
1210
+            $this->decrypt->decrypt(str_repeat("\0", 1536));
1211
+        }
1212
+
1213
+        for ($i = 0; $i < count($mac_algorithms) && !in_array($mac_algorithms[$i], $this->mac_algorithms_client_to_server); $i++);
1214
+        if ($i == count($mac_algorithms)) {
1215
+            user_error('No compatible client to server message authentication algorithms found', E_USER_NOTICE);
1216
+            return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
1217
+        }
1218
+
1219
+        $createKeyLength = 0; // ie. $mac_algorithms[$i] == 'none'
1220
+        switch ($mac_algorithms[$i]) {
1221
+            case 'hmac-sha1':
1222
+                $this->hmac_create = new Crypt_Hash('sha1');
1223
+                $createKeyLength = 20;
1224
+                break;
1225
+            case 'hmac-sha1-96':
1226
+                $this->hmac_create = new Crypt_Hash('sha1-96');
1227
+                $createKeyLength = 20;
1228
+                break;
1229
+            case 'hmac-md5':
1230
+                $this->hmac_create = new Crypt_Hash('md5');
1231
+                $createKeyLength = 16;
1232
+                break;
1233
+            case 'hmac-md5-96':
1234
+                $this->hmac_create = new Crypt_Hash('md5-96');
1235
+                $createKeyLength = 16;
1236
+        }
1237
+
1238
+        for ($i = 0; $i < count($mac_algorithms) && !in_array($mac_algorithms[$i], $this->mac_algorithms_server_to_client); $i++);
1239
+        if ($i == count($mac_algorithms)) {
1240
+            user_error('No compatible server to client message authentication algorithms found', E_USER_NOTICE);
1241
+            return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
1242
+        }
1243
+
1244
+        $checkKeyLength = 0;
1245
+        $this->hmac_size = 0;
1246
+        switch ($mac_algorithms[$i]) {
1247
+            case 'hmac-sha1':
1248
+                $this->hmac_check = new Crypt_Hash('sha1');
1249
+                $checkKeyLength = 20;
1250
+                $this->hmac_size = 20;
1251
+                break;
1252
+            case 'hmac-sha1-96':
1253
+                $this->hmac_check = new Crypt_Hash('sha1-96');
1254
+                $checkKeyLength = 20;
1255
+                $this->hmac_size = 12;
1256
+                break;
1257
+            case 'hmac-md5':
1258
+                $this->hmac_check = new Crypt_Hash('md5');
1259
+                $checkKeyLength = 16;
1260
+                $this->hmac_size = 16;
1261
+                break;
1262
+            case 'hmac-md5-96':
1263
+                $this->hmac_check = new Crypt_Hash('md5-96');
1264
+                $checkKeyLength = 16;
1265
+                $this->hmac_size = 12;
1266
+        }
1267
+
1268
+        $key = pack('H*', $hash($keyBytes . $this->exchange_hash . 'E' . $this->session_id));
1269
+        while ($createKeyLength > strlen($key)) {
1270
+            $key.= pack('H*', $hash($keyBytes . $this->exchange_hash . $key));
1271
+        }
1272
+        $this->hmac_create->setKey(substr($key, 0, $createKeyLength));
1273
+
1274
+        $key = pack('H*', $hash($keyBytes . $this->exchange_hash . 'F' . $this->session_id));
1275
+        while ($checkKeyLength > strlen($key)) {
1276
+            $key.= pack('H*', $hash($keyBytes . $this->exchange_hash . $key));
1277
+        }
1278
+        $this->hmac_check->setKey(substr($key, 0, $checkKeyLength));
1279
+
1280
+        for ($i = 0; $i < count($compression_algorithms) && !in_array($compression_algorithms[$i], $this->compression_algorithms_server_to_client); $i++);
1281
+        if ($i == count($compression_algorithms)) {
1282
+            user_error('No compatible server to client compression algorithms found', E_USER_NOTICE);
1283
+            return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
1284
+        }
1285
+        $this->decompress = $compression_algorithms[$i] == 'zlib';
1286
+
1287
+        for ($i = 0; $i < count($compression_algorithms) && !in_array($compression_algorithms[$i], $this->compression_algorithms_client_to_server); $i++);
1288
+        if ($i == count($compression_algorithms)) {
1289
+            user_error('No compatible client to server compression algorithms found', E_USER_NOTICE);
1290
+            return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
1291
+        }
1292
+        $this->compress = $compression_algorithms[$i] == 'zlib';
1293
+
1294
+        return true;
1295
+    }
1296
+
1297
+    /**
1298
+     * Login
1299
+     *
1300
+     * The $password parameter can be a plaintext password or a Crypt_RSA object.
1301
+     *
1302
+     * @param String $username
1303
+     * @param optional String $password
1304
+     * @return Boolean
1305
+     * @access public
1306
+     * @internal It might be worthwhile, at some point, to protect against {@link http://tools.ietf.org/html/rfc4251#section-9.3.9 traffic analysis}
1307
+     *           by sending dummy SSH_MSG_IGNORE messages.
1308
+     */
1309
+    function login($username, $password = '')
1310
+    {
1311
+        if (!($this->bitmap & NET_SSH2_MASK_CONSTRUCTOR)) {
1312
+            return false;
1313
+        }
1314
+
1315
+        $packet = pack('CNa*',
1316
+            NET_SSH2_MSG_SERVICE_REQUEST, strlen('ssh-userauth'), 'ssh-userauth'
1317
+        );
1318
+
1319
+        if (!$this->_send_binary_packet($packet)) {
1320
+            return false;
1321
+        }
1322
+
1323
+        $response = $this->_get_binary_packet();
1324
+        if ($response === false) {
1325
+            user_error('Connection closed by server', E_USER_NOTICE);
1326
+            return false;
1327
+        }
1328
+
1329
+        extract(unpack('Ctype', $this->_string_shift($response, 1)));
1330
+
1331
+        if ($type != NET_SSH2_MSG_SERVICE_ACCEPT) {
1332
+            user_error('Expected SSH_MSG_SERVICE_ACCEPT', E_USER_NOTICE);
1333
+            return false;
1334
+        }
1335
+
1336
+        // although PHP5's get_class() preserves the case, PHP4's does not
1337
+        if (is_object($password) && strtolower(get_class($password)) == 'crypt_rsa') {
1338
+            return $this->_privatekey_login($username, $password);
1339
+        }
1340
+
1341
+        $utf8_password = utf8_encode($password);
1342
+        $packet = pack('CNa*Na*Na*CNa*',
1343
+            NET_SSH2_MSG_USERAUTH_REQUEST, strlen($username), $username, strlen('ssh-connection'), 'ssh-connection',
1344
+            strlen('password'), 'password', 0, strlen($utf8_password), $utf8_password
1345
+        );
1346
+
1347
+        if (!$this->_send_binary_packet($packet)) {
1348
+            return false;
1349
+        }
1350
+
1351
+        // remove the username and password from the last logged packet
1352
+        if (defined('NET_SSH2_LOGGING') && NET_SSH2_LOGGING == NET_SSH2_LOG_COMPLEX) {
1353
+            $packet = pack('CNa*Na*Na*CNa*',
1354
+                NET_SSH2_MSG_USERAUTH_REQUEST, strlen('username'), 'username', strlen('ssh-connection'), 'ssh-connection',
1355
+                strlen('password'), 'password', 0, strlen('password'), 'password'
1356
+            );
1357
+            $this->message_log[count($this->message_log) - 1] = $packet;
1358
+        }
1359
+
1360
+        $response = $this->_get_binary_packet();
1361
+        if ($response === false) {
1362
+            user_error('Connection closed by server', E_USER_NOTICE);
1363
+            return false;
1364
+        }
1365
+
1366
+        extract(unpack('Ctype', $this->_string_shift($response, 1)));
1367
+
1368
+        switch ($type) {
1369
+            case NET_SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ: // in theory, the password can be changed
1370
+                if (defined('NET_SSH2_LOGGING')) {
1371
+                    $this->message_number_log[count($this->message_number_log) - 1] = 'NET_SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ';
1372
+                }
1373
+                extract(unpack('Nlength', $this->_string_shift($response, 4)));
1374
+                $this->errors[] = 'SSH_MSG_USERAUTH_PASSWD_CHANGEREQ: ' . utf8_decode($this->_string_shift($response, $length));
1375
+                return $this->_disconnect(NET_SSH2_DISCONNECT_AUTH_CANCELLED_BY_USER);
1376
+            case NET_SSH2_MSG_USERAUTH_FAILURE:
1377
+                // can we use keyboard-interactive authentication?  if not then either the login is bad or the server employees
1378
+                // multi-factor authentication
1379
+                extract(unpack('Nlength', $this->_string_shift($response, 4)));
1380
+                $auth_methods = explode(',', $this->_string_shift($response, $length));
1381
+                if (in_array('keyboard-interactive', $auth_methods)) {
1382
+                    if ($this->_keyboard_interactive_login($username, $password)) {
1383
+                        $this->bitmap |= NET_SSH2_MASK_LOGIN;
1384
+                        return true;
1385
+                    }
1386
+                    return false;
1387
+                }
1388
+                return false;
1389
+            case NET_SSH2_MSG_USERAUTH_SUCCESS:
1390
+                $this->bitmap |= NET_SSH2_MASK_LOGIN;
1391
+                return true;
1392
+        }
1393
+
1394
+        return false;
1395
+    }
1396
+
1397
+    /**
1398
+     * Login via keyboard-interactive authentication
1399
+     *
1400
+     * See {@link http://tools.ietf.org/html/rfc4256 RFC4256} for details.  This is not a full-featured keyboard-interactive authenticator.
1401
+     *
1402
+     * @param String $username
1403
+     * @param String $password
1404
+     * @return Boolean
1405
+     * @access private
1406
+     */
1407
+    function _keyboard_interactive_login($username, $password)
1408
+    {
1409
+        $packet = pack('CNa*Na*Na*Na*Na*', 
1410
+            NET_SSH2_MSG_USERAUTH_REQUEST, strlen($username), $username, strlen('ssh-connection'), 'ssh-connection',
1411
+            strlen('keyboard-interactive'), 'keyboard-interactive', 0, '', 0, ''
1412
+        );
1413
+
1414
+        if (!$this->_send_binary_packet($packet)) {
1415
+            return false;
1416
+        }
1417
+
1418
+        return $this->_keyboard_interactive_process($password);
1419
+    }
1420
+
1421
+    /**
1422
+     * Handle the keyboard-interactive requests / responses.
1423
+     *
1424
+     * @param String $responses...
1425
+     * @return Boolean
1426
+     * @access private
1427
+     */
1428
+    function _keyboard_interactive_process()
1429
+    {
1430
+        $responses = func_get_args();
1431
+
1432
+        $response = $this->_get_binary_packet();
1433
+        if ($response === false) {
1434
+            user_error('Connection closed by server', E_USER_NOTICE);
1435
+            return false;
1436
+        }
1437
+
1438
+        extract(unpack('Ctype', $this->_string_shift($response, 1)));
1439
+
1440
+        switch ($type) {
1441
+            case NET_SSH2_MSG_USERAUTH_INFO_REQUEST:
1442
+                // see http://tools.ietf.org/html/rfc4256#section-3.2
1443
+                if (defined('NET_SSH2_LOGGING')) {
1444
+                    $this->message_number_log[count($this->message_number_log) - 1] = str_replace(
1445
+                        'UNKNOWN',
1446
+                        'NET_SSH2_MSG_USERAUTH_INFO_REQUEST',
1447
+                        $this->message_number_log[count($this->message_number_log) - 1]
1448
+                    );
1449
+                }
1450
+
1451
+                extract(unpack('Nlength', $this->_string_shift($response, 4)));
1452
+                $this->_string_shift($response, $length); // name; may be empty
1453
+                extract(unpack('Nlength', $this->_string_shift($response, 4)));
1454
+                $this->_string_shift($response, $length); // instruction; may be empty
1455
+                extract(unpack('Nlength', $this->_string_shift($response, 4)));
1456
+                $this->_string_shift($response, $length); // language tag; may be empty
1457
+                extract(unpack('Nnum_prompts', $this->_string_shift($response, 4)));
1458
+                /*
1459
+                for ($i = 0; $i < $num_prompts; $i++) {
1460
+                    extract(unpack('Nlength', $this->_string_shift($response, 4)));
1461
+                    // prompt - ie. "Password: "; must not be empty
1462
+                    $this->_string_shift($response, $length);
1463
+                    $echo = $this->_string_shift($response) != chr(0);
1464
+                }
1465
+                */
1466
+
1467
+                /*
1468
+                   After obtaining the requested information from the user, the client
1469
+                   MUST respond with an SSH_MSG_USERAUTH_INFO_RESPONSE message.
1470
+                */
1471
+                // see http://tools.ietf.org/html/rfc4256#section-3.4
1472
+                $packet = $logged = pack('CN', NET_SSH2_MSG_USERAUTH_INFO_RESPONSE, count($responses));
1473
+                for ($i = 0; $i < count($responses); $i++) {
1474
+                    $packet.= pack('Na*', strlen($responses[$i]), $responses[$i]);
1475
+                    $logged.= pack('Na*', strlen('dummy-answer'), 'dummy-answer');
1476
+                }
1477
+
1478
+                if (!$this->_send_binary_packet($packet)) {
1479
+                    return false;
1480
+                }
1481
+
1482
+                if (defined('NET_SSH2_LOGGING')) {
1483
+                    $this->message_number_log[count($this->message_number_log) - 1] = str_replace(
1484
+                        'UNKNOWN',
1485
+                        'NET_SSH2_MSG_USERAUTH_INFO_RESPONSE',
1486
+                        $this->message_number_log[count($this->message_number_log) - 1]
1487
+                    );
1488
+                    $this->message_log[count($this->message_log) - 1] = $logged;
1489
+                }
1490
+
1491
+                /*
1492
+                   After receiving the response, the server MUST send either an
1493
+                   SSH_MSG_USERAUTH_SUCCESS, SSH_MSG_USERAUTH_FAILURE, or another
1494
+                   SSH_MSG_USERAUTH_INFO_REQUEST message.
1495
+                */
1496
+                // maybe phpseclib should force close the connection after x request / responses?  unless something like that is done
1497
+                // there could be an infinite loop of request / responses.
1498
+                return $this->_keyboard_interactive_process();
1499
+            case NET_SSH2_MSG_USERAUTH_SUCCESS:
1500
+                return true;
1501
+            case NET_SSH2_MSG_USERAUTH_FAILURE:
1502
+                return false;
1503
+        }
1504
+
1505
+        return false;
1506
+    }
1507
+
1508
+    /**
1509
+     * Login with an RSA private key
1510
+     *
1511
+     * @param String $username
1512
+     * @param Crypt_RSA $password
1513
+     * @return Boolean
1514
+     * @access private
1515
+     * @internal It might be worthwhile, at some point, to protect against {@link http://tools.ietf.org/html/rfc4251#section-9.3.9 traffic analysis}
1516
+     *           by sending dummy SSH_MSG_IGNORE messages.
1517
+     */
1518
+    function _privatekey_login($username, $privatekey)
1519
+    {
1520
+        // see http://tools.ietf.org/html/rfc4253#page-15
1521
+        $publickey = $privatekey->getPublicKey(CRYPT_RSA_PUBLIC_FORMAT_RAW);
1522
+        if ($publickey === false) {
1523
+            return false;
1524
+        }
1525
+
1526
+        $publickey = array(
1527
+            'e' => $publickey['e']->toBytes(true),
1528
+            'n' => $publickey['n']->toBytes(true)
1529
+        );
1530
+        $publickey = pack('Na*Na*Na*',
1531
+            strlen('ssh-rsa'), 'ssh-rsa', strlen($publickey['e']), $publickey['e'], strlen($publickey['n']), $publickey['n']
1532
+        );
1533
+
1534
+        $part1 = pack('CNa*Na*Na*',
1535
+            NET_SSH2_MSG_USERAUTH_REQUEST, strlen($username), $username, strlen('ssh-connection'), 'ssh-connection',
1536
+            strlen('publickey'), 'publickey'
1537
+        );
1538
+        $part2 = pack('Na*Na*', strlen('ssh-rsa'), 'ssh-rsa', strlen($publickey), $publickey);
1539
+
1540
+        $packet = $part1 . chr(0) . $part2;
1541
+        if (!$this->_send_binary_packet($packet)) {
1542
+            return false;
1543
+        }
1544
+
1545
+        $response = $this->_get_binary_packet();
1546
+        if ($response === false) {
1547
+            user_error('Connection closed by server', E_USER_NOTICE);
1548
+            return false;
1549
+        }
1550
+
1551
+        extract(unpack('Ctype', $this->_string_shift($response, 1)));
1552
+
1553
+        switch ($type) {
1554
+            case NET_SSH2_MSG_USERAUTH_FAILURE:
1555
+                extract(unpack('Nlength', $this->_string_shift($response, 4)));
1556
+                $this->errors[] = 'SSH_MSG_USERAUTH_FAILURE: ' . $this->_string_shift($response, $length);
1557
+                return $this->_disconnect(NET_SSH2_DISCONNECT_AUTH_CANCELLED_BY_USER);
1558
+            case NET_SSH2_MSG_USERAUTH_PK_OK:
1559
+                // we'll just take it on faith that the public key blob and the public key algorithm name are as
1560
+                // they should be
1561
+                if (defined('NET_SSH2_LOGGING')) {
1562
+                    $this->message_number_log[count($this->message_number_log) - 1] = str_replace(
1563
+                        'UNKNOWN',
1564
+                        'NET_SSH2_MSG_USERAUTH_PK_OK',
1565
+                        $this->message_number_log[count($this->message_number_log) - 1]
1566
+                    );
1567
+                }
1568
+        }
1569
+
1570
+        $packet = $part1 . chr(1) . $part2;
1571
+        $privatekey->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1);
1572
+        $signature = $privatekey->sign(pack('Na*a*', strlen($this->session_id), $this->session_id, $packet));
1573
+        $signature = pack('Na*Na*', strlen('ssh-rsa'), 'ssh-rsa', strlen($signature), $signature);
1574
+        $packet.= pack('Na*', strlen($signature), $signature);
1575
+
1576
+        if (!$this->_send_binary_packet($packet)) {
1577
+            return false;
1578
+        }
1579
+
1580
+        $response = $this->_get_binary_packet();
1581
+        if ($response === false) {
1582
+            user_error('Connection closed by server', E_USER_NOTICE);
1583
+            return false;
1584
+        }
1585
+
1586
+        extract(unpack('Ctype', $this->_string_shift($response, 1)));
1587
+
1588
+        switch ($type) {
1589
+            case NET_SSH2_MSG_USERAUTH_FAILURE:
1590
+                // either the login is bad or the server employees multi-factor authentication
1591
+                return false;
1592
+            case NET_SSH2_MSG_USERAUTH_SUCCESS:
1593
+                $this->bitmap |= NET_SSH2_MASK_LOGIN;
1594
+                return true;
1595
+        }
1596
+
1597
+        return false;
1598
+    }
1599
+
1600
+    /**
1601
+     * Execute Command
1602
+     *
1603
+     * If $block is set to false then Net_SSH2::_get_channel_packet(NET_SSH2_CHANNEL_EXEC) will need to be called manually.
1604
+     * In all likelihood, this is not a feature you want to be taking advantage of.
1605
+     *
1606
+     * @param String $command
1607
+     * @param optional Boolean $block
1608
+     * @return String
1609
+     * @access public
1610
+     */
1611
+    function exec($command, $block = true)
1612
+    {
1613
+        if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) {
1614
+            return false;
1615
+        }
1616
+
1617
+        // RFC4254 defines the (client) window size as "bytes the other party can send before it must wait for the window to
1618
+        // be adjusted".  0x7FFFFFFF is, at 4GB, the max size.  technically, it should probably be decremented, but, 
1619
+        // honestly, if you're transfering more than 4GB, you probably shouldn't be using phpseclib, anyway.
1620
+        // see http://tools.ietf.org/html/rfc4254#section-5.2 for more info
1621
+        $this->window_size_client_to_server[NET_SSH2_CHANNEL_EXEC] = 0x7FFFFFFF;
1622
+        // 0x8000 is the maximum max packet size, per http://tools.ietf.org/html/rfc4253#section-6.1, although since PuTTy
1623
+        // uses 0x4000, that's what will be used here, as well.
1624
+        $packet_size = 0x4000;
1625
+
1626
+        $packet = pack('CNa*N3',
1627
+            NET_SSH2_MSG_CHANNEL_OPEN, strlen('session'), 'session', NET_SSH2_CHANNEL_EXEC, $this->window_size_client_to_server[NET_SSH2_CHANNEL_EXEC], $packet_size);
1628
+
1629
+        if (!$this->_send_binary_packet($packet)) {
1630
+            return false;
1631
+        }
1632
+
1633
+        $this->channel_status[NET_SSH2_CHANNEL_EXEC] = NET_SSH2_MSG_CHANNEL_OPEN;
1634
+
1635
+        $response = $this->_get_channel_packet(NET_SSH2_CHANNEL_EXEC);
1636
+        if ($response === false) {
1637
+            return false;
1638
+        }
1639
+
1640
+        // sending a pty-req SSH_MSG_CHANNEL_REQUEST message is unnecessary and, in fact, in most cases, slows things
1641
+        // down.  the one place where it might be desirable is if you're doing something like Net_SSH2::exec('ping localhost &').
1642
+        // with a pty-req SSH_MSG_CHANNEL_REQUEST, exec() will return immediately and the ping process will then
1643
+        // then immediately terminate.  without such a request exec() will loop indefinitely.  the ping process won't end but
1644
+        // neither will your script.
1645
+
1646
+        // although, in theory, the size of SSH_MSG_CHANNEL_REQUEST could exceed the maximum packet size established by
1647
+        // SSH_MSG_CHANNEL_OPEN_CONFIRMATION, RFC4254#section-5.1 states that the "maximum packet size" refers to the 
1648
+        // "maximum size of an individual data packet". ie. SSH_MSG_CHANNEL_DATA.  RFC4254#section-5.2 corroborates.
1649
+        $packet = pack('CNNa*CNa*',
1650
+            NET_SSH2_MSG_CHANNEL_REQUEST, $this->server_channels[NET_SSH2_CHANNEL_EXEC], strlen('exec'), 'exec', 1, strlen($command), $command);
1651
+        if (!$this->_send_binary_packet($packet)) {
1652
+            return false;
1653
+        }
1654
+
1655
+        $this->channel_status[NET_SSH2_CHANNEL_EXEC] = NET_SSH2_MSG_CHANNEL_REQUEST;
1656
+
1657
+        $response = $this->_get_channel_packet(NET_SSH2_CHANNEL_EXEC);
1658
+        if ($response === false) {
1659
+            return false;
1660
+        }
1661
+
1662
+        $this->channel_status[NET_SSH2_CHANNEL_EXEC] = NET_SSH2_MSG_CHANNEL_DATA;
1663
+
1664
+        if (!$block) {
1665
+            return true;
1666
+        }
1667
+
1668
+        $output = '';
1669
+        while (true) {
1670
+            $temp = $this->_get_channel_packet(NET_SSH2_CHANNEL_EXEC);
1671
+            switch (true) {
1672
+                case $temp === true:
1673
+                    return $output;
1674
+                case $temp === false:
1675
+                    return false;
1676
+                default:
1677
+                    $output.= $temp;
1678
+            }
1679
+        }
1680
+    }
1681
+
1682
+    /**
1683
+     * Creates an interactive shell
1684
+     *
1685
+     * @see Net_SSH2::read()
1686
+     * @see Net_SSH2::write()
1687
+     * @return Boolean
1688
+     * @access private
1689
+     */
1690
+    function _initShell()
1691
+    {
1692
+        $this->window_size_client_to_server[NET_SSH2_CHANNEL_SHELL] = 0x7FFFFFFF;
1693
+        $packet_size = 0x4000;
1694
+
1695
+        $packet = pack('CNa*N3',
1696
+            NET_SSH2_MSG_CHANNEL_OPEN, strlen('session'), 'session', NET_SSH2_CHANNEL_SHELL, $this->window_size_client_to_server[NET_SSH2_CHANNEL_SHELL], $packet_size);
1697
+
1698
+        if (!$this->_send_binary_packet($packet)) {
1699
+            return false;
1700
+        }
1701
+
1702
+        $this->channel_status[NET_SSH2_CHANNEL_SHELL] = NET_SSH2_MSG_CHANNEL_OPEN;
1703
+
1704
+        $response = $this->_get_channel_packet(NET_SSH2_CHANNEL_SHELL);
1705
+        if ($response === false) {
1706
+            return false;
1707
+        }
1708
+
1709
+        $terminal_modes = pack('C', NET_SSH2_TTY_OP_END);
1710
+        $packet = pack('CNNa*CNa*N5a*',
1711
+            NET_SSH2_MSG_CHANNEL_REQUEST, $this->server_channels[NET_SSH2_CHANNEL_SHELL], strlen('pty-req'), 'pty-req', 1, strlen('vt100'), 'vt100',
1712
+            80, 24, 0, 0, strlen($terminal_modes), $terminal_modes);
1713
+
1714
+        if (!$this->_send_binary_packet($packet)) {
1715
+            return false;
1716
+        }
1717
+
1718
+
1719
+        $response = $this->_get_binary_packet();
1720
+        if ($response === false) {
1721
+            user_error('Connection closed by server', E_USER_NOTICE);
1722
+            return false;
1723
+        }
1724
+
1725
+        list(, $type) = unpack('C', $this->_string_shift($response, 1));
1726
+
1727
+        switch ($type) {
1728
+            case NET_SSH2_MSG_CHANNEL_SUCCESS:
1729
+                break;
1730
+            case NET_SSH2_MSG_CHANNEL_FAILURE:
1731
+            default:
1732
+                user_error('Unable to request pseudo-terminal', E_USER_NOTICE);
1733
+                return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION);
1734
+        }
1735
+
1736
+        $packet = pack('CNNa*C',
1737
+            NET_SSH2_MSG_CHANNEL_REQUEST, $this->server_channels[NET_SSH2_CHANNEL_SHELL], strlen('shell'), 'shell', 1);
1738
+        if (!$this->_send_binary_packet($packet)) {
1739
+            return false;
1740
+        }
1741
+
1742
+        $this->channel_status[NET_SSH2_CHANNEL_SHELL] = NET_SSH2_MSG_CHANNEL_REQUEST;
1743
+
1744
+        $response = $this->_get_channel_packet(NET_SSH2_CHANNEL_SHELL);
1745
+        if ($response === false) {
1746
+            return false;
1747
+        }
1748
+
1749
+        $this->channel_status[NET_SSH2_CHANNEL_SHELL] = NET_SSH2_MSG_CHANNEL_DATA;
1750
+
1751
+        $this->bitmap |= NET_SSH2_MASK_SHELL;
1752
+
1753
+        return true;
1754
+    }
1755
+
1756
+    /**
1757
+     * Returns the output of an interactive shell
1758
+     *
1759
+     * Returns when there's a match for $expect, which can take the form of a string literal or,
1760
+     * if $mode == NET_SSH2_READ_REGEX, a regular expression.
1761
+     *
1762
+     * @see Net_SSH2::read()
1763
+     * @param String $expect
1764
+     * @param Integer $mode
1765
+     * @return String
1766
+     * @access public
1767
+     */
1768
+    function read($expect, $mode = NET_SSH2_READ_SIMPLE)
1769
+    {
1770
+        if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) {
1771
+            user_error('Operation disallowed prior to login()', E_USER_NOTICE);
1772
+            return false;
1773
+        }
1774
+
1775
+        if (!($this->bitmap & NET_SSH2_MASK_SHELL) && !$this->_initShell()) {
1776
+            user_error('Unable to initiate an interactive shell session', E_USER_NOTICE);
1777
+            return false;
1778
+        }
1779
+
1780
+        $match = $expect;
1781
+        while (true) {
1782
+            if ($mode == NET_SSH2_READ_REGEX) {
1783
+                preg_match($expect, $this->interactiveBuffer, $matches);
1784
+                $match = $matches[0];
1785
+            }
1786
+            $pos = strpos($this->interactiveBuffer, $match);
1787
+            if ($pos !== false) {
1788
+                return $this->_string_shift($this->interactiveBuffer, $pos + strlen($match));
1789
+            }
1790
+            $response = $this->_get_channel_packet(NET_SSH2_CHANNEL_SHELL);
1791
+
1792
+            $this->interactiveBuffer.= $response;
1793
+        }
1794
+    }
1795
+
1796
+    /**
1797
+     * Inputs a command into an interactive shell.
1798
+     *
1799
+     * @see Net_SSH1::interactiveWrite()
1800
+     * @param String $cmd
1801
+     * @return Boolean
1802
+     * @access public
1803
+     */
1804
+    function write($cmd)
1805
+    {
1806
+        if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) {
1807
+            user_error('Operation disallowed prior to login()', E_USER_NOTICE);
1808
+            return false;
1809
+        }
1810
+
1811
+        if (!($this->bitmap & NET_SSH2_MASK_SHELL) && !$this->_initShell()) {
1812
+            user_error('Unable to initiate an interactive shell session', E_USER_NOTICE);
1813
+            return false;
1814
+        }
1815
+
1816
+        return $this->_send_channel_packet(NET_SSH2_CHANNEL_SHELL, $cmd);
1817
+    }
1818
+
1819
+    /**
1820
+     * Disconnect
1821
+     *
1822
+     * @access public
1823
+     */
1824
+    function disconnect()
1825
+    {
1826
+        $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION);
1827
+    }
1828
+
1829
+    /**
1830
+     * Destructor.
1831
+     *
1832
+     * Will be called, automatically, if you're supporting just PHP5.  If you're supporting PHP4, you'll need to call
1833
+     * disconnect().
1834
+     *
1835
+     * @access public
1836
+     */
1837
+    function __destruct()
1838
+    {
1839
+        $this->disconnect();
1840
+    }
1841
+
1842
+    /**
1843
+     * Gets Binary Packets
1844
+     *
1845
+     * See '6. Binary Packet Protocol' of rfc4253 for more info.
1846
+     *
1847
+     * @see Net_SSH2::_send_binary_packet()
1848
+     * @return String
1849
+     * @access private
1850
+     */
1851
+    function _get_binary_packet()
1852
+    {
1853
+        if (feof($this->fsock)) {
1854
+            user_error('Connection closed prematurely', E_USER_NOTICE);
1855
+            return false;
1856
+        }
1857
+
1858
+        $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838
1859
+        $raw = fread($this->fsock, $this->decrypt_block_size);
1860
+        $stop = strtok(microtime(), ' ') + strtok('');
1861
+
1862
+        if (empty($raw)) {
1863
+            return '';
1864
+        }
1865
+
1866
+        if ($this->decrypt !== false) {
1867
+            $raw = $this->decrypt->decrypt($raw);
1868
+        }
1869
+
1870
+        extract(unpack('Npacket_length/Cpadding_length', $this->_string_shift($raw, 5)));
1871
+
1872
+        $remaining_length = $packet_length + 4 - $this->decrypt_block_size;
1873
+        $buffer = '';
1874
+        while ($remaining_length > 0) {
1875
+            $temp = fread($this->fsock, $remaining_length);
1876
+            $buffer.= $temp;
1877
+            $remaining_length-= strlen($temp);
1878
+        }
1879
+        if (!empty($buffer)) {
1880
+            $raw.= $this->decrypt !== false ? $this->decrypt->decrypt($buffer) : $buffer;
1881
+            $buffer = $temp = '';
1882
+        }
1883
+
1884
+        $payload = $this->_string_shift($raw, $packet_length - $padding_length - 1);
1885
+        $padding = $this->_string_shift($raw, $padding_length); // should leave $raw empty
1886
+
1887
+        if ($this->hmac_check !== false) {
1888
+            $hmac = fread($this->fsock, $this->hmac_size);
1889
+            if ($hmac != $this->hmac_check->hash(pack('NNCa*', $this->get_seq_no, $packet_length, $padding_length, $payload . $padding))) {
1890
+                user_error('Invalid HMAC', E_USER_NOTICE);
1891
+                return false;
1892
+            }
1893
+        }
1894
+
1895
+        //if ($this->decompress) {
1896
+        //    $payload = gzinflate(substr($payload, 2));
1897
+        //}
1898
+
1899
+        $this->get_seq_no++;
1900
+
1901
+        if (defined('NET_SSH2_LOGGING')) {
1902
+            $temp = isset($this->message_numbers[ord($payload[0])]) ? $this->message_numbers[ord($payload[0])] : 'UNKNOWN (' . ord($payload[0]) . ')';
1903
+            $this->message_number_log[] = '<- ' . $temp .
1904
+                                          ' (' . round($stop - $start, 4) . 's)';
1905
+            if (NET_SSH2_LOGGING == NET_SSH2_LOG_COMPLEX) {
1906
+                $this->message_log[] = substr($payload, 1);
1907
+            }
1908
+        }
1909
+
1910
+        return $this->_filter($payload);
1911
+    }
1912
+
1913
+    /**
1914
+     * Filter Binary Packets
1915
+     *
1916
+     * Because some binary packets need to be ignored...
1917
+     *
1918
+     * @see Net_SSH2::_get_binary_packet()
1919
+     * @return String
1920
+     * @access private
1921
+     */
1922
+    function _filter($payload)
1923
+    {
1924
+        switch (ord($payload[0])) {
1925
+            case NET_SSH2_MSG_DISCONNECT:
1926
+                $this->_string_shift($payload, 1);
1927
+                extract(unpack('Nreason_code/Nlength', $this->_string_shift($payload, 8)));
1928
+                $this->errors[] = 'SSH_MSG_DISCONNECT: ' . $this->disconnect_reasons[$reason_code] . "\r\n" . utf8_decode($this->_string_shift($payload, $length));
1929
+                $this->bitmask = 0;
1930
+                return false;
1931
+            case NET_SSH2_MSG_IGNORE:
1932
+                $payload = $this->_get_binary_packet();
1933
+                break;
1934
+            case NET_SSH2_MSG_DEBUG:
1935
+                $this->_string_shift($payload, 2);
1936
+                extract(unpack('Nlength', $this->_string_shift($payload, 4)));
1937
+                $this->errors[] = 'SSH_MSG_DEBUG: ' . utf8_decode($this->_string_shift($payload, $length));
1938
+                $payload = $this->_get_binary_packet();
1939
+                break;
1940
+            case NET_SSH2_MSG_UNIMPLEMENTED:
1941
+                return false;
1942
+            case NET_SSH2_MSG_KEXINIT:
1943
+                if ($this->session_id !== false) {
1944
+                    if (!$this->_key_exchange($payload)) {
1945
+                        $this->bitmask = 0;
1946
+                        return false;
1947
+                    }
1948
+                    $payload = $this->_get_binary_packet();
1949
+                }
1950
+        }
1951
+
1952
+        // see http://tools.ietf.org/html/rfc4252#section-5.4; only called when the encryption has been activated and when we haven't already logged in
1953
+        if (($this->bitmap & NET_SSH2_MASK_CONSTRUCTOR) && !($this->bitmap & NET_SSH2_MASK_LOGIN) && ord($payload[0]) == NET_SSH2_MSG_USERAUTH_BANNER) {
1954
+            $this->_string_shift($payload, 1);
1955
+            extract(unpack('Nlength', $this->_string_shift($payload, 4)));
1956
+            $this->errors[] = 'SSH_MSG_USERAUTH_BANNER: ' . utf8_decode($this->_string_shift($payload, $length));
1957
+            $payload = $this->_get_binary_packet();
1958
+        }
1959
+
1960
+        // only called when we've already logged in
1961
+        if (($this->bitmap & NET_SSH2_MASK_CONSTRUCTOR) && ($this->bitmap & NET_SSH2_MASK_LOGIN)) {
1962
+            switch (ord($payload[0])) {
1963
+                case NET_SSH2_MSG_GLOBAL_REQUEST: // see http://tools.ietf.org/html/rfc4254#section-4
1964
+                    $this->_string_shift($payload, 1);
1965
+                    extract(unpack('Nlength', $this->_string_shift($payload)));
1966
+                    $this->errors[] = 'SSH_MSG_GLOBAL_REQUEST: ' . utf8_decode($this->_string_shift($payload, $length));
1967
+
1968
+                    if (!$this->_send_binary_packet(pack('C', NET_SSH2_MSG_REQUEST_FAILURE))) {
1969
+                        return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION);
1970
+                    }
1971
+
1972
+                    $payload = $this->_get_binary_packet();
1973
+                    break;
1974
+                case NET_SSH2_MSG_CHANNEL_OPEN: // see http://tools.ietf.org/html/rfc4254#section-5.1
1975
+                    $this->_string_shift($payload, 1);
1976
+                    extract(unpack('N', $this->_string_shift($payload, 4)));
1977
+                    $this->errors[] = 'SSH_MSG_CHANNEL_OPEN: ' . utf8_decode($this->_string_shift($payload, $length));
1978
+
1979
+                    $this->_string_shift($payload, 4); // skip over client channel
1980
+                    extract(unpack('Nserver_channel', $this->_string_shift($payload, 4)));
1981
+
1982
+                    $packet = pack('CN3a*Na*',
1983
+                        NET_SSH2_MSG_REQUEST_FAILURE, $server_channel, NET_SSH2_OPEN_ADMINISTRATIVELY_PROHIBITED, 0, '', 0, '');
1984
+
1985
+                    if (!$this->_send_binary_packet($packet)) {
1986
+                        return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION);
1987
+                    }
1988
+
1989
+                    $payload = $this->_get_binary_packet();
1990
+                    break;
1991
+                case NET_SSH2_MSG_CHANNEL_WINDOW_ADJUST:
1992
+                    $payload = $this->_get_binary_packet();
1993
+            }
1994
+        }
1995
+
1996
+        return $payload;
1997
+    }
1998
+
1999
+    /**
2000
+     * Gets channel data
2001
+     *
2002
+     * Returns the data as a string if it's available and false if not.
2003
+     *
2004
+     * @param $client_channel
2005
+     * @return Mixed
2006
+     * @access private
2007
+     */
2008
+    function _get_channel_packet($client_channel, $skip_extended = false)
2009
+    {
2010
+        if (!empty($this->channel_buffers[$client_channel])) {
2011
+            return array_shift($this->channel_buffers[$client_channel]);
2012
+        }
2013
+
2014
+        while (true) {
2015
+            $response = $this->_get_binary_packet();
2016
+            if ($response === false) {
2017
+                user_error('Connection closed by server', E_USER_NOTICE);
2018
+                return false;
2019
+            }
2020
+
2021
+            if (empty($response)) {
2022
+                return '';
2023
+            }
2024
+
2025
+            extract(unpack('Ctype/Nchannel', $this->_string_shift($response, 5)));
2026
+
2027
+            switch ($this->channel_status[$channel]) {
2028
+                case NET_SSH2_MSG_CHANNEL_OPEN:
2029
+                    switch ($type) {
2030
+                        case NET_SSH2_MSG_CHANNEL_OPEN_CONFIRMATION:
2031
+                            extract(unpack('Nserver_channel', $this->_string_shift($response, 4)));
2032
+                            $this->server_channels[$client_channel] = $server_channel;
2033
+                            $this->_string_shift($response, 4); // skip over (server) window size
2034
+                            $temp = unpack('Npacket_size_client_to_server', $this->_string_shift($response, 4));
2035
+                            $this->packet_size_client_to_server[$client_channel] = $temp['packet_size_client_to_server'];
2036
+                            return true;
2037
+                        //case NET_SSH2_MSG_CHANNEL_OPEN_FAILURE:
2038
+                        default:
2039
+                            user_error('Unable to open channel', E_USER_NOTICE);
2040
+                            return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION);
2041
+                    }
2042
+                    break;
2043
+                case NET_SSH2_MSG_CHANNEL_REQUEST:
2044
+                    switch ($type) {
2045
+                        case NET_SSH2_MSG_CHANNEL_SUCCESS:
2046
+                            return true;
2047
+                        //case NET_SSH2_MSG_CHANNEL_FAILURE:
2048
+                        default:
2049
+                            user_error('Unable to request pseudo-terminal', E_USER_NOTICE);
2050
+                            return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION);
2051
+                    }
2052
+
2053
+            }
2054
+
2055
+            switch ($type) {
2056
+                case NET_SSH2_MSG_CHANNEL_DATA:
2057
+                    /*
2058
+                    if ($client_channel == NET_SSH2_CHANNEL_EXEC) {
2059
+                        // SCP requires null packets, such as this, be sent.  further, in the case of the ssh.com SSH server
2060
+                        // this actually seems to make things twice as fast.  more to the point, the message right after 
2061
+                        // SSH_MSG_CHANNEL_DATA (usually SSH_MSG_IGNORE) won't block for as long as it would have otherwise.
2062
+                        // in OpenSSH it slows things down but only by a couple thousandths of a second.
2063
+                        $this->_send_channel_packet($client_channel, chr(0));
2064
+                    }
2065
+                    */
2066
+                    extract(unpack('Nlength', $this->_string_shift($response, 4)));
2067
+                    $data = $this->_string_shift($response, $length);
2068
+                    if ($client_channel == $channel) {
2069
+                        return $data;
2070
+                    }
2071
+                    if (!isset($this->channel_buffers[$client_channel])) {
2072
+                        $this->channel_buffers[$client_channel] = array();
2073
+                    }
2074
+                    $this->channel_buffers[$client_channel][] = $data;
2075
+                    break;
2076
+                case NET_SSH2_MSG_CHANNEL_EXTENDED_DATA:
2077
+                    if ($skip_extended) {
2078
+                        break;
2079
+                    }
2080
+                    /*
2081
+                    if ($client_channel == NET_SSH2_CHANNEL_EXEC) {
2082
+                        $this->_send_channel_packet($client_channel, chr(0));
2083
+                    }
2084
+                    */
2085
+                    // currently, there's only one possible value for $data_type_code: NET_SSH2_EXTENDED_DATA_STDERR
2086
+                    extract(unpack('Ndata_type_code/Nlength', $this->_string_shift($response, 8)));
2087
+                    $data = $this->_string_shift($response, $length);
2088
+                    if ($client_channel == $channel) {
2089
+                        return $data;
2090
+                    }
2091
+                    if (!isset($this->channel_buffers[$client_channel])) {
2092
+                        $this->channel_buffers[$client_channel] = array();
2093
+                    }
2094
+                    $this->channel_buffers[$client_channel][] = $data;
2095
+                    break;
2096
+                case NET_SSH2_MSG_CHANNEL_REQUEST:
2097
+                    extract(unpack('Nlength', $this->_string_shift($response, 4)));
2098
+                    $value = $this->_string_shift($response, $length);
2099
+                    switch ($value) {
2100
+                        case 'exit-signal':
2101
+                            $this->_string_shift($response, 1);
2102
+                            extract(unpack('Nlength', $this->_string_shift($response, 4)));
2103
+                            $this->errors[] = 'SSH_MSG_CHANNEL_REQUEST (exit-signal): ' . $this->_string_shift($response, $length);
2104
+                            $this->_string_shift($response, 1);
2105
+                            extract(unpack('Nlength', $this->_string_shift($response, 4)));
2106
+                            if ($length) {
2107
+                                $this->errors[count($this->errors)].= "\r\n" . $this->_string_shift($response, $length);
2108
+                            }
2109
+                        //case 'exit-status':
2110
+                        default:
2111
+                            // "Some systems may not implement signals, in which case they SHOULD ignore this message."
2112
+                            //  -- http://tools.ietf.org/html/rfc4254#section-6.9
2113
+                            break;
2114
+                    }
2115
+                    break;
2116
+                case NET_SSH2_MSG_CHANNEL_CLOSE:
2117
+                    $this->_send_binary_packet(pack('CN', NET_SSH2_MSG_CHANNEL_CLOSE, $this->server_channels[$channel]));
2118
+                    return true;
2119
+                case NET_SSH2_MSG_CHANNEL_EOF:
2120
+                    break;
2121
+                default:
2122
+                    user_error('Error reading channel data', E_USER_NOTICE);
2123
+                    return $this->_disconnect(NET_SSH2_DISCONNECT_BY_APPLICATION);
2124
+            }
2125
+        }
2126
+    }
2127
+
2128
+    /**
2129
+     * Sends Binary Packets
2130
+     *
2131
+     * See '6. Binary Packet Protocol' of rfc4253 for more info.
2132
+     *
2133
+     * @param String $data
2134
+     * @see Net_SSH2::_get_binary_packet()
2135
+     * @return Boolean
2136
+     * @access private
2137
+     */
2138
+    function _send_binary_packet($data)
2139
+    {
2140
+        if (feof($this->fsock)) {
2141
+            user_error('Connection closed prematurely', E_USER_NOTICE);
2142
+            return false;
2143
+        }
2144
+
2145
+        //if ($this->compress) {
2146
+        //    // the -4 removes the checksum:
2147
+        //    // http://php.net/function.gzcompress#57710
2148
+        //    $data = substr(gzcompress($data), 0, -4);
2149
+        //}
2150
+
2151
+        // 4 (packet length) + 1 (padding length) + 4 (minimal padding amount) == 9
2152
+        $packet_length = strlen($data) + 9;
2153
+        // round up to the nearest $this->encrypt_block_size
2154
+        $packet_length+= (($this->encrypt_block_size - 1) * $packet_length) % $this->encrypt_block_size;
2155
+        // subtracting strlen($data) is obvious - subtracting 5 is necessary because of packet_length and padding_length
2156
+        $padding_length = $packet_length - strlen($data) - 5;
2157
+
2158
+        $padding = '';
2159
+        for ($i = 0; $i < $padding_length; $i++) {
2160
+            $padding.= chr(crypt_random(0, 255));
2161
+        }
2162
+
2163
+        // we subtract 4 from packet_length because the packet_length field isn't supposed to include itself
2164
+        $packet = pack('NCa*', $packet_length - 4, $padding_length, $data . $padding);
2165
+
2166
+        $hmac = $this->hmac_create !== false ? $this->hmac_create->hash(pack('Na*', $this->send_seq_no, $packet)) : '';
2167
+        $this->send_seq_no++;
2168
+
2169
+        if ($this->encrypt !== false) {
2170
+            $packet = $this->encrypt->encrypt($packet);
2171
+        }
2172
+
2173
+        $packet.= $hmac;
2174
+
2175
+        $start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838
2176
+        $result = strlen($packet) == fputs($this->fsock, $packet);
2177
+        $stop = strtok(microtime(), ' ') + strtok('');
2178
+
2179
+        if (defined('NET_SSH2_LOGGING')) {
2180
+            $temp = isset($this->message_numbers[ord($data[0])]) ? $this->message_numbers[ord($data[0])] : 'UNKNOWN (' . ord($data[0]) . ')';
2181
+            $this->message_number_log[] = '-> ' . $temp .
2182
+                                          ' (' . round($stop - $start, 4) . 's)';
2183
+            if (NET_SSH2_LOGGING == NET_SSH2_LOG_COMPLEX) {
2184
+                $this->message_log[] = substr($data, 1);
2185
+            }
2186
+        }
2187
+
2188
+        return $result;
2189
+    }
2190
+
2191
+    /**
2192
+     * Sends channel data
2193
+     *
2194
+     * Spans multiple SSH_MSG_CHANNEL_DATAs if appropriate
2195
+     *
2196
+     * @param Integer $client_channel
2197
+     * @param String $data
2198
+     * @return Boolean
2199
+     * @access private
2200
+     */
2201
+    function _send_channel_packet($client_channel, $data)
2202
+    {
2203
+        while (strlen($data) > $this->packet_size_client_to_server[$client_channel]) {
2204
+            // resize the window, if appropriate
2205
+            $this->window_size_client_to_server[$client_channel]-= $this->packet_size_client_to_server[$client_channel];
2206
+            if ($this->window_size_client_to_server[$client_channel] < 0) {
2207
+                $packet = pack('CNN', NET_SSH2_MSG_CHANNEL_WINDOW_ADJUST, $this->server_channels[$client_channel], $this->window_size);
2208
+                if (!$this->_send_binary_packet($packet)) {
2209
+                    return false;
2210
+                }
2211
+                $this->window_size_client_to_server[$client_channel]+= $this->window_size;
2212
+            }
2213
+
2214
+            $packet = pack('CN2a*',
2215
+                NET_SSH2_MSG_CHANNEL_DATA,
2216
+                $this->server_channels[$client_channel],
2217
+                $this->packet_size_client_to_server[$client_channel],
2218
+                $this->_string_shift($data, $this->packet_size_client_to_server[$client_channel])
2219
+            );
2220
+
2221
+            if (!$this->_send_binary_packet($packet)) {
2222
+                return false;
2223
+            }
2224
+        }
2225
+
2226
+        // resize the window, if appropriate
2227
+        $this->window_size_client_to_server[$client_channel]-= strlen($data);
2228
+        if ($this->window_size_client_to_server[$client_channel] < 0) {
2229
+            $packet = pack('CNN', NET_SSH2_MSG_CHANNEL_WINDOW_ADJUST, $this->server_channels[$client_channel], $this->window_size);
2230
+            if (!$this->_send_binary_packet($packet)) {
2231
+                return false;
2232
+            }
2233
+            $this->window_size_client_to_server[$client_channel]+= $this->window_size;
2234
+        }
2235
+
2236
+        return $this->_send_binary_packet(pack('CN2a*',
2237
+            NET_SSH2_MSG_CHANNEL_DATA,
2238
+            $this->server_channels[$client_channel],
2239
+            strlen($data),
2240
+            $data));
2241
+    }
2242
+
2243
+    /**
2244
+     * Closes and flushes a channel
2245
+     *
2246
+     * Net_SSH2 doesn't properly close most channels.  For exec() channels are normally closed by the server
2247
+     * and for SFTP channels are presumably closed when the client disconnects.  This functions is intended
2248
+     * for SCP more than anything.
2249
+     *
2250
+     * @param Integer $client_channel
2251
+     * @return Boolean
2252
+     * @access private
2253
+     */
2254
+    function _close_channel($client_channel)
2255
+    {
2256
+        // see http://tools.ietf.org/html/rfc4254#section-5.3
2257
+
2258
+        $packet = pack('CN',
2259
+            NET_SSH2_MSG_CHANNEL_EOF,
2260
+            $this->server_channels[$client_channel]);
2261
+        if (!$this->_send_binary_packet($packet)) {
2262
+            return false;
2263
+        }
2264
+
2265
+        while ($this->_get_channel_packet($client_channel) !== true);
2266
+    }
2267
+
2268
+    /**
2269
+     * Disconnect
2270
+     *
2271
+     * @param Integer $reason
2272
+     * @return Boolean
2273
+     * @access private
2274
+     */
2275
+    function _disconnect($reason)
2276
+    {
2277
+        if ($this->bitmap) {
2278
+            $data = pack('CNNa*Na*', NET_SSH2_MSG_DISCONNECT, $reason, 0, '', 0, '');
2279
+            $this->_send_binary_packet($data);
2280
+            $this->bitmap = 0;
2281
+            fclose($this->fsock);
2282
+            return false;
2283
+        }
2284
+    }
2285
+
2286
+    /**
2287
+     * String Shift
2288
+     *
2289
+     * Inspired by array_shift
2290
+     *
2291
+     * @param String $string
2292
+     * @param optional Integer $index
2293
+     * @return String
2294
+     * @access private
2295
+     */
2296
+    function _string_shift(&$string, $index = 1)
2297
+    {
2298
+        $substr = substr($string, 0, $index);
2299
+        $string = substr($string, $index);
2300
+        return $substr;
2301
+    }
2302
+
2303
+    /**
2304
+     * Define Array
2305
+     *
2306
+     * Takes any number of arrays whose indices are integers and whose values are strings and defines a bunch of
2307
+     * named constants from it, using the value as the name of the constant and the index as the value of the constant.
2308
+     * If any of the constants that would be defined already exists, none of the constants will be defined.
2309
+     *
2310
+     * @param Array $array
2311
+     * @access private
2312
+     */
2313
+    function _define_array()
2314
+    {
2315
+        $args = func_get_args();
2316
+        foreach ($args as $arg) {
2317
+            foreach ($arg as $key=>$value) {
2318
+                if (!defined($value)) {
2319
+                    define($value, $key);
2320
+                } else {
2321
+                    break 2;
2322
+                }
2323
+            }
2324
+        }
2325
+    }
2326
+
2327
+    /**
2328
+     * Returns a log of the packets that have been sent and received.
2329
+     *
2330
+     * Returns a string if NET_SSH2_LOGGING == NET_SSH2_LOG_COMPLEX, an array if NET_SSH2_LOGGING == NET_SSH2_LOG_SIMPLE and false if !defined('NET_SSH2_LOGGING')
2331
+     *
2332
+     * @access public
2333
+     * @return String or Array
2334
+     */
2335
+    function getLog()
2336
+    {
2337
+        if (!defined('NET_SSH2_LOGGING')) {
2338
+            return false;
2339
+        }
2340
+
2341
+        switch (NET_SSH2_LOGGING) {
2342
+            case NET_SSH2_LOG_SIMPLE:
2343
+                return $this->message_number_log;
2344
+                break;
2345
+            case NET_SSH2_LOG_COMPLEX:
2346
+                return $this->_format_log($this->message_log, $this->message_number_log);
2347
+                break;
2348
+            default:
2349
+                return false;
2350
+        }
2351
+    }
2352
+
2353
+    /**
2354
+     * Formats a log for printing
2355
+     *
2356
+     * @param Array $message_log
2357
+     * @param Array $message_number_log
2358
+     * @access private
2359
+     * @return String
2360
+     */
2361
+    function _format_log($message_log, $message_number_log)
2362
+    {
2363
+        static $boundary = ':', $long_width = 65, $short_width = 16;
2364
+
2365
+        $output = '';
2366
+        for ($i = 0; $i < count($message_log); $i++) {
2367
+            $output.= $message_number_log[$i] . "\r\n";
2368
+            $current_log = $message_log[$i];
2369
+            $j = 0;
2370
+            do {
2371
+                if (!empty($current_log)) {
2372
+                    $output.= str_pad(dechex($j), 7, '0', STR_PAD_LEFT) . '0  ';
2373
+                }
2374
+                $fragment = $this->_string_shift($current_log, $short_width);
2375
+                $hex = substr(
2376
+                           preg_replace(
2377
+                               '#(.)#es',
2378
+                               '"' . $boundary . '" . str_pad(dechex(ord(substr("\\1", -1))), 2, "0", STR_PAD_LEFT)',
2379
+                               $fragment),
2380
+                           strlen($boundary)
2381
+                       );
2382
+                // replace non ASCII printable characters with dots
2383
+                // http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters
2384
+                // also replace < with a . since < messes up the output on web browsers
2385
+                $raw = preg_replace('#[^\x20-\x7E]|<#', '.', $fragment);
2386
+                $output.= str_pad($hex, $long_width - $short_width, ' ') . $raw . "\r\n";
2387
+                $j++;
2388
+            } while (!empty($current_log));
2389
+            $output.= "\r\n";
2390
+        }
2391
+
2392
+        return $output;
2393
+    }
2394
+
2395
+    /**
2396
+     * Returns all errors
2397
+     *
2398
+     * @return String
2399
+     * @access public
2400
+     */
2401
+    function getErrors()
2402
+    {
2403
+        return $this->errors;
2404
+    }
2405
+
2406
+    /**
2407
+     * Returns the last error
2408
+     *
2409
+     * @return String
2410
+     * @access public
2411
+     */
2412
+    function getLastError()
2413
+    {
2414
+        return $this->errors[count($this->errors) - 1];
2415
+    }
2416
+
2417
+    /**
2418
+     * Return the server identification.
2419
+     *
2420
+     * @return String
2421
+     * @access public
2422
+     */
2423
+    function getServerIdentification()
2424
+    {
2425
+        return $this->server_identifier;
2426
+    }
2427
+
2428
+    /**
2429
+     * Return a list of the key exchange algorithms the server supports.
2430
+     *
2431
+     * @return Array
2432
+     * @access public
2433
+     */
2434
+    function getKexAlgorithms()
2435
+    {
2436
+        return $this->kex_algorithms;
2437
+    }
2438
+
2439
+    /**
2440
+     * Return a list of the host key (public key) algorithms the server supports.
2441
+     *
2442
+     * @return Array
2443
+     * @access public
2444
+     */
2445
+    function getServerHostKeyAlgorithms()
2446
+    {
2447
+        return $this->server_host_key_algorithms;
2448
+    }
2449
+
2450
+    /**
2451
+     * Return a list of the (symmetric key) encryption algorithms the server supports, when receiving stuff from the client.
2452
+     *
2453
+     * @return Array
2454
+     * @access public
2455
+     */
2456
+    function getEncryptionAlgorithmsClient2Server()
2457
+    {
2458
+        return $this->encryption_algorithms_client_to_server;
2459
+    }
2460
+
2461
+    /**
2462
+     * Return a list of the (symmetric key) encryption algorithms the server supports, when sending stuff to the client.
2463
+     *
2464
+     * @return Array
2465
+     * @access public
2466
+     */
2467
+    function getEncryptionAlgorithmsServer2Client()
2468
+    {
2469
+        return $this->encryption_algorithms_server_to_client;
2470
+    }
2471
+
2472
+    /**
2473
+     * Return a list of the MAC algorithms the server supports, when receiving stuff from the client.
2474
+     *
2475
+     * @return Array
2476
+     * @access public
2477
+     */
2478
+    function getMACAlgorithmsClient2Server()
2479
+    {
2480
+        return $this->mac_algorithms_client_to_server;
2481
+    }
2482
+
2483
+    /**
2484
+     * Return a list of the MAC algorithms the server supports, when sending stuff to the client.
2485
+     *
2486
+     * @return Array
2487
+     * @access public
2488
+     */
2489
+    function getMACAlgorithmsServer2Client()
2490
+    {
2491
+        return $this->mac_algorithms_server_to_client;
2492
+    }
2493
+
2494
+    /**
2495
+     * Return a list of the compression algorithms the server supports, when receiving stuff from the client.
2496
+     *
2497
+     * @return Array
2498
+     * @access public
2499
+     */
2500
+    function getCompressionAlgorithmsClient2Server()
2501
+    {
2502
+        return $this->compression_algorithms_client_to_server;
2503
+    }
2504
+
2505
+    /**
2506
+     * Return a list of the compression algorithms the server supports, when sending stuff to the client.
2507
+     *
2508
+     * @return Array
2509
+     * @access public
2510
+     */
2511
+    function getCompressionAlgorithmsServer2Client()
2512
+    {
2513
+        return $this->compression_algorithms_server_to_client;
2514
+    }
2515
+
2516
+    /**
2517
+     * Return a list of the languages the server supports, when sending stuff to the client.
2518
+     *
2519
+     * @return Array
2520
+     * @access public
2521
+     */
2522
+    function getLanguagesServer2Client()
2523
+    {
2524
+        return $this->languages_server_to_client;
2525
+    }
2526
+
2527
+    /**
2528
+     * Return a list of the languages the server supports, when receiving stuff from the client.
2529
+     *
2530
+     * @return Array
2531
+     * @access public
2532
+     */
2533
+    function getLanguagesClient2Server()
2534
+    {
2535
+        return $this->languages_client_to_server;
2536
+    }
2537
+
2538
+    /**
2539
+     * Returns the server public host key.
2540
+     *
2541
+     * Caching this the first time you connect to a server and checking the result on subsequent connections
2542
+     * is recommended.  Returns false if the server signature is not signed correctly with the public host key.
2543
+     *
2544
+     * @return Mixed
2545
+     * @access public
2546
+     */
2547
+    function getServerPublicHostKey()
2548
+    {
2549
+        $signature = $this->signature;
2550
+        $server_public_host_key = $this->server_public_host_key;
2551
+
2552
+        extract(unpack('Nlength', $this->_string_shift($server_public_host_key, 4)));
2553
+        $this->_string_shift($server_public_host_key, $length);
2554
+
2555
+        switch ($this->signature_format) {
2556
+            case 'ssh-dss':
2557
+                $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
2558
+                $p = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
2559
+
2560
+                $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
2561
+                $q = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
2562
+
2563
+                $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
2564
+                $g = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
2565
+
2566
+                $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
2567
+                $y = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
2568
+
2569
+                /* The value for 'dss_signature_blob' is encoded as a string containing
2570
+                   r, followed by s (which are 160-bit integers, without lengths or
2571
+                   padding, unsigned, and in network byte order). */
2572
+                $temp = unpack('Nlength', $this->_string_shift($signature, 4));
2573
+                if ($temp['length'] != 40) {
2574
+                    user_error('Invalid signature', E_USER_NOTICE);
2575
+                    return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
2576
+                }
2577
+
2578
+                $r = new Math_BigInteger($this->_string_shift($signature, 20), 256);
2579
+                $s = new Math_BigInteger($this->_string_shift($signature, 20), 256);
2580
+
2581
+                if ($r->compare($q) >= 0 || $s->compare($q) >= 0) {
2582
+                    user_error('Invalid signature', E_USER_NOTICE);
2583
+                    return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
2584
+                }
2585
+
2586
+                $w = $s->modInverse($q);
2587
+
2588
+                $u1 = $w->multiply(new Math_BigInteger(sha1($this->exchange_hash), 16));
2589
+                list(, $u1) = $u1->divide($q);
2590
+
2591
+                $u2 = $w->multiply($r);
2592
+                list(, $u2) = $u2->divide($q);
2593
+
2594
+                $g = $g->modPow($u1, $p);
2595
+                $y = $y->modPow($u2, $p);
2596
+
2597
+                $v = $g->multiply($y);
2598
+                list(, $v) = $v->divide($p);
2599
+                list(, $v) = $v->divide($q);
2600
+
2601
+                if (!$v->equals($r)) {
2602
+                    user_error('Bad server signature', E_USER_NOTICE);
2603
+                    return $this->_disconnect(NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE);
2604
+                }
2605
+
2606
+                break;
2607
+            case 'ssh-rsa':
2608
+                $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
2609
+                $e = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
2610
+
2611
+                $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
2612
+                $n = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
2613
+                $nLength = $temp['length'];
2614
+
2615
+                /*
2616
+                $temp = unpack('Nlength', $this->_string_shift($signature, 4));
2617
+                $signature = $this->_string_shift($signature, $temp['length']);
2618
+
2619
+                if (!class_exists('Crypt_RSA')) {
2620
+                    require_once('Crypt/RSA.php');
2621
+                }
2622
+
2623
+                $rsa = new Crypt_RSA();
2624
+                $rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1);
2625
+                $rsa->loadKey(array('e' => $e, 'n' => $n), CRYPT_RSA_PUBLIC_FORMAT_RAW);
2626
+                if (!$rsa->verify($this->exchange_hash, $signature)) {
2627
+                    user_error('Bad server signature', E_USER_NOTICE);
2628
+                    return $this->_disconnect(NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE);
2629
+                }
2630
+                */
2631
+
2632
+                $temp = unpack('Nlength', $this->_string_shift($signature, 4));
2633
+                $s = new Math_BigInteger($this->_string_shift($signature, $temp['length']), 256);
2634
+
2635
+                // validate an RSA signature per "8.2 RSASSA-PKCS1-v1_5", "5.2.2 RSAVP1", and "9.1 EMSA-PSS" in the
2636
+                // following URL:
2637
+                // ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-1/pkcs-1v2-1.pdf
2638
+
2639
+                // also, see SSHRSA.c (rsa2_verifysig) in PuTTy's source.
2640
+
2641
+                if ($s->compare(new Math_BigInteger()) < 0 || $s->compare($n->subtract(new Math_BigInteger(1))) > 0) {
2642
+                    user_error('Invalid signature', E_USER_NOTICE);
2643
+                    return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
2644
+                }
2645
+
2646
+                $s = $s->modPow($e, $n);
2647
+                $s = $s->toBytes();
2648
+
2649
+                $h = pack('N4H*', 0x00302130, 0x0906052B, 0x0E03021A, 0x05000414, sha1($this->exchange_hash));
2650
+                $h = chr(0x01) . str_repeat(chr(0xFF), $nLength - 3 - strlen($h)) . $h;
2651
+
2652
+                if ($s != $h) {
2653
+                    user_error('Bad server signature', E_USER_NOTICE);
2654
+                    return $this->_disconnect(NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE);
2655
+                }
2656
+        }
2657
+
2658
+        return $this->server_public_host_key;
2659
+    }
2660
+}
0 2661
\ No newline at end of file
... ...
@@ -0,0 +1,41 @@
1
+<?php
2
+// $Id: array_fill.php,v 1.1 2007/07/02 04:19:55 terrafrost Exp $
3
+
4
+
5
+/**
6
+ * Replace array_fill()
7
+ *
8
+ * @category    PHP
9
+ * @package     PHP_Compat
10
+ * @license     http://www.opensource.org/licenses/mit-license.html  MIT License
11
+ * @copyright   2004-2007 Aidan Lister <[email protected]>, Arpad Ray <[email protected]>
12
+ * @link        http://php.net/function.array_fill
13
+ * @author      Jim Wigginton <[email protected]>
14
+ * @version     $Revision: 1.1 $
15
+ * @since       PHP 4.2.0
16
+ */
17
+function php_compat_array_fill($start_index, $num, $value)
18
+{
19
+    if ($num <= 0) {
20
+        user_error('array_fill(): Number of elements must be positive', E_USER_WARNING);
21
+
22
+        return false;
23
+    }
24
+
25
+    $temp = array();
26
+
27
+    $end_index = $start_index + $num;
28
+    for ($i = (int) $start_index; $i < $end_index; $i++) {
29
+        $temp[$i] = $value;
30
+    }
31
+
32
+    return $temp;
33
+}
34
+
35
+// Define
36
+if (!function_exists('array_fill')) {
37
+    function array_fill($start_index, $num, $value)
38
+    {
39
+        return php_compat_array_fill($start_index, $num, $value);
40
+    }
41
+}
0 42
\ No newline at end of file
... ...
@@ -0,0 +1,66 @@
1
+<?php
2
+// $Id: bcpowmod.php,v 1.1 2007-07-02 04:19:55 terrafrost Exp $
3
+
4
+
5
+/**
6
+ * Replace bcpowmod()
7
+ *
8
+ * @category    PHP
9
+ * @package     PHP_Compat
10
+ * @license     LGPL - http://www.gnu.org/licenses/lgpl.html
11
+ * @copyright   2004-2007 Aidan Lister <[email protected]>, Arpad Ray <[email protected]>
12
+ * @link        http://php.net/function.bcpowmod
13
+ * @author      Sara Golemon <[email protected]>
14
+ * @version     $Revision: 1.1 $
15
+ * @since       PHP 5.0.0
16
+ * @require     PHP 4.0.0 (user_error)
17
+ */
18
+function php_compat_bcpowmod($x, $y, $modulus, $scale = 0)
19
+{
20
+    // Sanity check
21
+    if (!is_scalar($x)) {
22
+        user_error('bcpowmod() expects parameter 1 to be string, ' .
23
+            gettype($x) . ' given', E_USER_WARNING);
24
+        return false;
25
+    }
26
+
27
+    if (!is_scalar($y)) {
28
+        user_error('bcpowmod() expects parameter 2 to be string, ' .
29
+            gettype($y) . ' given', E_USER_WARNING);
30
+        return false;
31
+    }
32
+
33
+    if (!is_scalar($modulus)) {
34
+        user_error('bcpowmod() expects parameter 3 to be string, ' .
35
+            gettype($modulus) . ' given', E_USER_WARNING);
36
+        return false;
37
+    }
38
+
39
+    if (!is_scalar($scale)) {
40
+        user_error('bcpowmod() expects parameter 4 to be integer, ' .
41
+            gettype($scale) . ' given', E_USER_WARNING);
42
+        return false;
43
+    }
44
+
45
+    $t = '1';
46
+    while (bccomp($y, '0')) {
47
+        if (bccomp(bcmod($y, '2'), '0')) {
48
+            $t = bcmod(bcmul($t, $x), $modulus);
49
+            $y = bcsub($y, '1');
50
+        }
51
+
52
+        $x = bcmod(bcmul($x, $x), $modulus);
53
+        $y = bcdiv($y, '2');
54
+    }
55
+
56
+    return $t;    
57
+}
58
+
59
+
60
+// Define
61
+if (!function_exists('bcpowmod')) {
62
+    function bcpowmod($x, $y, $modulus, $scale = 0)
63
+    {
64
+        return php_compat_bcpowmod($x, $y, $modulus, $scale);
65
+    }
66
+}
0 67
\ No newline at end of file
... ...
@@ -0,0 +1,59 @@
1
+<?php
2
+/**
3
+ * Replace str_split()
4
+ *
5
+ * @category    PHP
6
+ * @package     PHP_Compat
7
+ * @license     LGPL - http://www.gnu.org/licenses/lgpl.html
8
+ * @copyright   2004-2007 Aidan Lister <[email protected]>, Arpad Ray <[email protected]>
9
+ * @link        http://php.net/function.str_split
10
+ * @author      Aidan Lister <[email protected]>
11
+ * @version     $Revision: 1.1 $
12
+ * @since       PHP 5
13
+ * @require     PHP 4.0.0 (user_error)
14
+ */
15
+function php_compat_str_split($string, $split_length = 1)
16
+{
17
+    if (!is_scalar($split_length)) {
18
+        user_error('str_split() expects parameter 2 to be long, ' .
19
+            gettype($split_length) . ' given', E_USER_WARNING);
20
+        return false;
21
+    }
22
+
23
+    $split_length = (int) $split_length;
24
+    if ($split_length < 1) {
25
+        user_error('str_split() The length of each segment must be greater than zero', E_USER_WARNING);
26
+        return false;
27
+    }
28
+    
29
+    // Select split method
30
+    if ($split_length < 65536) {
31
+        // Faster, but only works for less than 2^16
32
+        preg_match_all('/.{1,' . $split_length . '}/s', $string, $matches);
33
+        return $matches[0];
34
+    } else {
35
+        // Required due to preg limitations
36
+        $arr = array();
37
+        $idx = 0;
38
+        $pos = 0;
39
+        $len = strlen($string);
40
+
41
+        while ($len > 0) {
42
+            $blk = ($len < $split_length) ? $len : $split_length;
43
+            $arr[$idx++] = substr($string, $pos, $blk);
44
+            $pos += $blk;
45
+            $len -= $blk;
46
+        }
47
+
48
+        return $arr;
49
+    }
50
+}
51
+
52
+
53
+// Define
54
+if (!function_exists('str_split')) {
55
+    function str_split($string, $split_length = 1)
56
+    {
57
+        return php_compat_str_split($string, $split_length);
58
+    }
59
+}
... ...
@@ -0,0 +1,135 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 3. Cryptography</title><link rel="stylesheet" href="docbook.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /><link rel="start" href="index.html" title="PHP Secure Communications Library" /><link rel="up" href="index.html" title="PHP Secure Communications Library" /><link rel="prev" href="math.html" title="Chapter 2. Math" /><link rel="next" href="net.html" title="Chapter 4. Networking" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 3. Cryptography</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="math.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="net.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="crypt"></a>Chapter 3. Cryptography</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="crypt.html#crypt_intro">3.1. Introduction</a></span></dt><dd><dl><dt><span class="section"><a href="crypt.html#crypt_dependencies">3.1.1. Dependencies</a></span></dt><dt><span class="section"><a href="crypt.html#crypt_set">3.1.2. setKey() and setIV()</a></span></dt><dt><span class="section"><a href="crypt.html#crypt_setmcrypt">3.1.3. setMCrypt()</a></span></dt><dt><span class="section"><a href="crypt.html#crypt_encrypt">3.1.4. encrypt() and decrypt()</a></span></dt><dt><span class="section"><a href="crypt.html#crypt_continuousbuffer">3.1.5. enableContinuousBuffer() and disableContinuousBuffer()</a></span></dt><dt><span class="section"><a href="crypt.html#crypt_padding">3.1.6. enablePadding() and disablePadding()</a></span></dt></dl></dd><dt><span class="section"><a href="crypt.html#crypt_des">3.2. Crypt_DES</a></span></dt><dd><dl><dt><span class="section"><a href="crypt.html#crypt_des_constructor">3.2.1. The constructor</a></span></dt></dl></dd><dt><span class="section"><a href="crypt.html#crypt_tripledes">3.3. Crypt_TripleDES</a></span></dt><dd><dl><dt><span class="section"><a href="crypt.html#crypt_tripledes_constructor">3.3.1. The constructor</a></span></dt></dl></dd><dt><span class="section"><a href="crypt.html#crypt_rc4">3.4. Crypt_RC4</a></span></dt><dd><dl><dt><span class="section"><a href="crypt.html#crypt_rc4_constructor">3.4.1. The constructor</a></span></dt></dl></dd><dt><span class="section"><a href="crypt.html#crypt_aes">3.5. Crypt_Rijndael &amp; Crypt_AES</a></span></dt><dd><dl><dt><span class="section"><a href="crypt.html#crypt_aes_constructor">3.5.1. The constructor</a></span></dt><dt><span class="section"><a href="crypt.html#crypt_aes_vs_rijndael">3.5.2. AES vs. Rijndael</a></span></dt><dt><span class="section"><a href="crypt.html#crypt_aes_setkeylength">3.5.3. setKeyLength()</a></span></dt><dt><span class="section"><a href="crypt.html#crypt_aes_setblocklength">3.5.4. setBlockLength()</a></span></dt><dt><span class="section"><a href="crypt.html#crypt_aes_benchmarks">3.5.5. Speed Comparisons</a></span></dt></dl></dd></dl></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="crypt_intro"></a>3.1. Introduction</h2></div></div></div><p>
4
+                All of the cryptographic libraries included in phpseclib use mcrypt, if available, and an internal implementation 
5
+                if it's not.  The libraries all use a common interface although some functions, for some algorithms, carry with 
6
+                with them certain caveats.  Those that do not have caveats attached (or have relatively few attached) are 
7
+                described below.  If you don't know which one to use, try <code class="code">Crypt_TripleDES</code>.
8
+            </p><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="crypt_dependencies"></a>3.1.1. Dependencies</h3></div></div></div><p>
9
+                    The Crypt_* functions require, minimally, PHP 4.0.0.  Crypt_TripleDES additionally requires Crypt/DES.php.
10
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="crypt_set"></a>3.1.2. setKey() and setIV()</h3></div></div></div><p>
11
+                    Sets the key and the initialization vector, respectively.  If neither are set, each assumed to be equal to 
12
+                    some amount of null bytes.  The initialization vector is only used in block ciphers and even then only 
13
+                    in CBC mode.  If the key or the initialization vector are larger then the block size, they're truncated.
14
+                    If they're smaller, they're padded with null bytes.
15
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="crypt_setmcrypt"></a>3.1.3. setMCrypt()</h3></div></div></div><p>
16
+                    See php.net's entry on <a class="ulink" href="http://php.net/function.mcrypt-module-open#function.mcrypt-module-open" target="_top">mcrypt_module_open</a>.
17
+                    The first parameter is equal to <code class="code">$algorithm_directory</code> and the second, to <code class="code">$mode_directory</code>.
18
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="crypt_encrypt"></a>3.1.4. encrypt() and decrypt()</h3></div></div></div><p>
19
+                    Self-explanatory.  Encrypts or decrypts messages.  See the examples in the subsequent sections.
20
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="crypt_continuousbuffer"></a>3.1.5. enableContinuousBuffer() and disableContinuousBuffer()</h3></div></div></div><p>
21
+                    Say you have a 16-byte plaintext $plaintext and that you're using <code class="code">Crypt_DES</code>.  Using the default behavior, the two following code snippets
22
+                    will yield different outputs:
23
+                </p><pre class="programlisting">    echo $des-&gt;encrypt(substr($plaintext, 0, 8));
24
+    echo $des-&gt;encrypt(substr($plaintext, 8, 8));</pre><pre class="programlisting">    echo $des-&gt;encrypt($plaintext);</pre><p>
25
+                    The solution is to enable the continuous buffer.  Although this will resolve the above discrepancy, it creates
26
+                    another, as demonstrated with the following:
27
+                </p><pre class="programlisting">    $des-&gt;encrypt(substr($plaintext, 0, 8));
28
+    echo $des-&gt;decrypt($des-&gt;encrypt(substr($plaintext, 8, 8)));</pre><pre class="programlisting">    echo $des-&gt;decrypt($des-&gt;encrypt(substr($plaintext, 8, 8)));</pre><p>
29
+                    With the continuous buffer disabled, these would yield the same output.  With it enabled, they yield different
30
+                    outputs.  The reason is due to the fact that the initialization vector's change after every encryption /
31
+                    decryption round when the continuous buffer is enabled.  When it's disabled, they remain constant.
32
+
33
+                    Put another way, when the continuous buffer is enabled, the state of the <code class="code">Crypt_DES()</code> object changes after each
34
+                    encryption / decryption round, whereas otherwise, it'd remain constant.  For this reason, it's recommended that
35
+                    continuous buffers not be used.  They do offer better security and are, in fact, sometimes required (SSH uses them),
36
+                    however, they are also less intuitive and more likely to cause you problems.
37
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="crypt_padding"></a>3.1.6. enablePadding() and disablePadding()</h3></div></div></div><p>
38
+                    Enables / disables PKCS padding on block ciphers.  Stream ciphers (<code class="code">Crypt_RC4</code> is the only stream
39
+                    cipher currently included) ignore this.
40
+                </p></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="crypt_des"></a>3.2. Crypt_DES</h2></div></div></div><p>
41
+                Implements DES (a block cipher).  Here's an example of how to use it:
42
+            </p><pre class="programlisting">&lt;?php
43
+    include('Crypt/DES.php');
44
+
45
+    $des = new Crypt_DES();
46
+
47
+    $des-&gt;setKey('abcdefgh');
48
+
49
+    $size = 10 * 1024;
50
+    $plaintext = '';
51
+    for ($i = 0; $i &lt; $size; $i++) {
52
+        $plaintext.= 'a';
53
+    }
54
+
55
+    echo $des-&gt;decrypt($des-&gt;encrypt($plaintext));
56
+?&gt;</pre><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="crypt_des_constructor"></a>3.2.1. The constructor</h3></div></div></div><p>
57
+                    The constructor takes one optional parameter - $mode.  $mode can be equal to <code class="code">CRYPT_DES_MODE_ECB</code>
58
+                    or <code class="code">CRYPT_DES_MODE_CBC</code>.  <code class="code">CRYPT_DES_MODE_CBC</code> is generally considered more secure 
59
+                    and is what <code class="code">Crypt_DES</code> uses by default.  If you don't know the difference between ECB or CBC, 
60
+                    just use the default settings.
61
+                </p></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="crypt_tripledes"></a>3.3. Crypt_TripleDES</h2></div></div></div><p>
62
+                Implements TripleDES (a block cipher).  Here's an example of how to use it:
63
+            </p><pre class="programlisting">&lt;?php
64
+    include('Crypt/TripleDES.php');
65
+
66
+    $des = new Crypt_TripleDES();
67
+
68
+    $des-&gt;setKey('abcdefghijklmnopqrstuvwx');
69
+
70
+    $size = 10 * 1024;
71
+    $plaintext = '';
72
+    for ($i = 0; $i &lt; $size; $i++) {
73
+        $plaintext.= 'a';
74
+    }
75
+
76
+    echo $des-&gt;decrypt($des-&gt;encrypt($plaintext));
77
+?&gt;</pre><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="crypt_tripledes_constructor"></a>3.3.1. The constructor</h3></div></div></div><p>
78
+                    The constructor takes one optional parameter - $mode.  $mode can be equal to <code class="code">CRYPT_DES_MODE_ECB</code>,
79
+                    <code class="code">CRYPT_DES_MODE_CBC</code>, <code class="code">CRYPT_DES_MODE_3CBC</code>, or <code class="code">CRYPT_DES_MODE_CBC3</code>.
80
+                    <code class="code">CRYPT_DES_MODE_CBC3</code> is an alias <code class="code">CRYPT_DES_MODE_CBC</code>.  It's defined to distinguish
81
+                    it from <code class="code">CRYPT_DES_MODE_3CBC</code>, which uses inner chaining to propogate the initialization vector.
82
+                    SSH-1 uses this and it is generally considered to be less secure then <code class="code">CRYPT_DES_MODE_CBC3</code>, 
83
+                    which uses outer chaining (and is what SSH-2 uses).
84
+                </p></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="crypt_rc4"></a>3.4. Crypt_RC4</h2></div></div></div><p>
85
+                Implements RC4 (a stream cipher).  Here's an example of how to use it:
86
+            </p><pre class="programlisting">&lt;?php
87
+    include('Crypt/RC4.php');
88
+
89
+    $rc4 = new Crypt_RC4();
90
+
91
+    $rc4-&gt;setKey('abcdefghijklmnopqrstuvwx');
92
+
93
+    $size = 10 * 1024;
94
+    $plaintext = '';
95
+    for ($i = 0; $i &lt; $size; $i++) {
96
+        $plaintext.= 'a';
97
+    }
98
+
99
+    echo $rc4-&gt;decrypt($rc4-&gt;encrypt($plaintext));
100
+?&gt;</pre><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="crypt_rc4_constructor"></a>3.4.1. The constructor</h3></div></div></div><p>
101
+                    Not much to say about this constructor.  Since it's a stream cipher, you don't need to worry about which
102
+                    mode of operation to use.
103
+                </p></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="crypt_aes"></a>3.5. Crypt_Rijndael &amp; Crypt_AES</h2></div></div></div><p>
104
+                Implements Rijndael / AES.  Here's an example of how to use Crypt_AES:
105
+            </p><pre class="programlisting">&lt;?php
106
+    include('Crypt/AES.php');
107
+
108
+    $aes = new Crypt_AES();
109
+
110
+    $aes-&gt;setKey('abcdefghijklmnop');
111
+
112
+    $size = 10 * 1024;
113
+    $plaintext = '';
114
+    for ($i = 0; $i &lt; $size; $i++) {
115
+        $plaintext.= 'a';
116
+    }
117
+
118
+    echo $aes-&gt;decrypt($aes-&gt;encrypt($plaintext));
119
+?&gt;</pre><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="crypt_aes_constructor"></a>3.5.1. The constructor</h3></div></div></div><p>
120
+                    <code class="code">Crypt_AES</code>'s constructor takes <code class="code">CRYPT_AES_MODE_ECB</code> and <code class="code">CRYPT_AES_MODE_CBC</code> as parameters.  <code class="code">Crypt_Rijndael</code>, <code class="code">CRYPT_RIJNDAEL_MODE_ECB</code> and <code class="code">CRYPT_RIJNDAEL_MODE_CBC</code>.  In both cases, if no valid mode is defined, CBC will be used.
121
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="crypt_aes_vs_rijndael"></a>3.5.2. AES vs. Rijndael</h3></div></div></div><p>
122
+                    AES is a subset of Rijndael.  Both have variable key sizes, however, AES's block size is fixed at 128 bytes, whereas Rijndael's is variable.  Also, Rijndael supports, by means of an extension to the specification, two key sizes that AES does not - 160 bits and 224 bits.
123
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="crypt_aes_setkeylength"></a>3.5.3. setKeyLength()</h3></div></div></div><p>
124
+                    Valid key lengths for AES are 128 bits, 192 bits, and 256 bits.  If the key that is assigned is invalid and less than 256 bits, they key length is rounded up to the next closest valid size and the key will be null padded to that amount.  If the key length is greater than 256 bits, it will be truncated to 256 bits.
125
+                </p><p>
126
+                    As an example, if the key is 136 bits, it will be null padded to 192 bits (or 160 bits if Rijndael is being used).
127
+                </p><p>
128
+                    If <code class="code">setKeyLength()</code> has been called, this behavior changes somewhat.  Say you've set the key length, via this function, to 256 bits.  Then, instead of an invalid key being null padded to 192 or 160 bits, it will be null padded to 256 bits.
129
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="crypt_aes_setblocklength"></a>3.5.4. setBlockLength()</h3></div></div></div><p>
130
+                    <code class="code">setBlockLength()</code> operates in a manner similar to <code class="code">setKeyLength()</code>, with one exception.  <code class="code">setBlockLength()</code> only works on Rijndael.  Although <code class="code">Crypt_AES</code> inherits <code class="code">setBlockLength()</code> as a function, the function doesn't do anything in AES.
131
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="crypt_aes_benchmarks"></a>3.5.5. Speed Comparisons</h3></div></div></div><p>
132
+                    The following table compares the speed of five different pure-PHP implementations of AES (one of which is Crypt_Rijndael and one of which is Crypt_AES) when ran on 150KB of text on a 1.8GHz Pentium 4-M.  The numbers listed are averaged from five different trials and are measured in seconds.  phpseclib's two implementations are highlighted.  All implementations can be viewed by clicking on their names.
133
+                </p><div class="table"><a id="crypt_aes_benchmarks_table"></a><p class="title"><b>Table 3.1. AES Speed Comparisons</b></p><div class="table-contents"><table summary="AES Speed Comparisons" border="1"><colgroup><col /><col /><col /><col /><col /></colgroup><thead><tr><th align="right"><a class="ulink" href="http://phpseclib.sourceforge.net/movable-type.phps" target="_top">movable-type.phps</a></th><th align="right"><a class="ulink" href="http://phpseclib.sourceforge.net/phpaes.phps" target="_top">phpaes.phps</a></th><th align="right"><a class="ulink" href="http://phpseclib.sourceforge.net/phpclasses1.phps" target="_top">phpclasses1.phps</a></th><th align="right"><a class="ulink" href="http://phpseclib.sourceforge.net/phpclasses2.phps" target="_top">phpclasses2.phps</a></th><th align="right"><a class="ulink" href="http://phpseclib.sourceforge.net/phpseclib-aes.phps" target="_top">phpseclib-aes.phps</a></th><th align="right"><a class="ulink" href="http://phpseclib.sourceforge.net/phpseclib-rijndael.phps" target="_top">phpseclib-rijndael.phps</a></th></tr></thead><tbody><tr><td align="right">15.6844158172</td><td align="right">39.9537248135</td><td align="right">15.0100150108</td><td align="right">62.591713190079</td><td class="highlight" align="right">3.5728311081</td><td class="highlight" align="right">5.24388728142</td></tr></tbody></table></div></div><br class="table-break" /><p>
134
+                    As can be seen, phpseclib's implementations are the fastest.  phpseclib-aes.phps is faster than phpseclib-rijndael.phps because phpseclib-rijndael.phps has to contend with multiple block sizes whereas phpseclib-aes.phps does not.
135
+                </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="math.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="net.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 2. Math </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 4. Networking</td></tr></table></div></body></html>
... ...
@@ -0,0 +1,43 @@
1
+body {
2
+  font-family: Georgia, "Times New Roman", Times, serif
3
+}
4
+
5
+div.author h3 {
6
+  display: none
7
+}
8
+
9
+a {
10
+  text-decoration: none;
11
+  color: #369
12
+}
13
+
14
+a:hover {
15
+  text-decoration: underline
16
+}
17
+
18
+.programlisting {
19
+  font-family: Monaco, "Andale Mono","Courier New", Courier, mono;
20
+  font-size: 10pt
21
+}
22
+
23
+.programlisting, .code {
24
+  background: #eee;
25
+  color: #181;
26
+  font-weight: bold
27
+}
28
+
29
+.red {
30
+  color: #e11
31
+}
32
+
33
+.highlight {
34
+  background: #ee1
35
+}
36
+
37
+thead {
38
+  background: #ccc
39
+}
40
+
41
+#crypt_aes_benchmarks_table.tbody {
42
+  font-weight: bold
43
+}
0 44
\ No newline at end of file
... ...
@@ -0,0 +1,5 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>PHP Secure Communications Library</title><link rel="stylesheet" href="docbook.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /><meta name="description" content="The PHP Secure Communications Library contains LGPL-licensed pure-PHP implementations of arbitrary-precision integers, fully PKCS#1 (v2.1) compliant RSA, DES, 3DES, RC4, Rijndael, AES, SSH-1, SSH-2, and SFTP. This book discusses how to use them." /><link rel="start" href="index.html" title="PHP Secure Communications Library" /><link rel="next" href="intro.html" title="Chapter 1. Introduction" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">PHP <span class="red">Secure</span> Communications Library</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr></table><hr /></div><div class="book" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="id487980"></a>PHP <span class="red">Secure</span> Communications Library</h1></div><div><div class="author"><h3 class="author"><span class="firstname">Jim</span> <span class="othername">TerraFrost</span> <span class="surname">Wigginton</span></h3></div></div><div><p class="copyright">Copyright © 2007 - 2010 TerraFrost (Jim Wigginton)</p></div><div><div class="abstract"><p class="title"><b>Abstract</b></p><p>
4
+                The PHP Secure Communications Library contains LGPL-licensed pure-PHP implementations of arbitrary-precision integers, 
5
+                fully PKCS#1 (v2.1) compliant RSA, DES, 3DES, RC4, Rijndael, AES, SSH-1, SSH-2, and SFTP.  This book discusses how to use them.</p></div></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="intro.html">1. Introduction</a></span></dt><dd><dl><dt><span class="section"><a href="intro.html#intro_intro">1.1. Who should use phpseclib</a></span></dt><dt><span class="section"><a href="intro.html#intro_usage">1.2. Using phpseclib</a></span></dt></dl></dd><dt><span class="chapter"><a href="math.html">2. Math</a></span></dt><dd><dl><dt><span class="section"><a href="math.html#math_biginteger">2.1. Math_BigInteger</a></span></dt><dd><dl><dt><span class="section"><a href="math.html#math_biginteger_dependencies">2.1.1. Dependencies</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_constructor">2.1.2. The constructor</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_output">2.1.3. toString(), toBytes(), toHex() and toBits()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_fourfunctions">2.1.4. add(), subtract(), multiply() and divide()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_modulo">2.1.5. powMod() and modInverse()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_gcd">2.1.6. gcd() and extendedGCD()</a></span></dt><dt><span class="section"><a href="math.html#math_abs">2.1.7. abs()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_compare">2.1.8. equals() and compare()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_precision">2.1.9. setPrecision()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_bitwise">2.1.10. bitwise_and(), bitwise_or(), bitwise_xor() and bitwise_not()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_shifts">2.1.11. bitwise_rightShift() and bitwise_leftShift()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_rotates">2.1.12. bitwise_rightRotate() and bitwise_leftRotate()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_setrandom">2.1.13. setRandomGenerator()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_prime">2.1.14. isPrime()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_random">2.1.15. random() and randomPrime()</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="sym_crypt.html">3. Symmetric-key Cryptography</a></span></dt><dd><dl><dt><span class="section"><a href="sym_crypt.html#sym_crypt_intro">3.1. Introduction</a></span></dt><dd><dl><dt><span class="section"><a href="sym_crypt.html#sym_crypt_dependencies">3.1.1. Dependencies</a></span></dt><dt><span class="section"><a href="sym_crypt.html#sym_crypt_set">3.1.2. setKey() and setIV()</a></span></dt><dt><span class="section"><a href="sym_crypt.html#sym_crypt_encrypt">3.1.3. encrypt() and decrypt()</a></span></dt><dt><span class="section"><a href="sym_crypt.html#sym_crypt_continuousbuffer">3.1.4. enableContinuousBuffer() and disableContinuousBuffer()</a></span></dt><dt><span class="section"><a href="sym_crypt.html#sym_crypt_padding">3.1.5. enablePadding() and disablePadding()</a></span></dt><dt><span class="section"><a href="sym_crypt.html#sym_crypt_caution">3.1.6. A word of caution about stream ciphers (and CTR / CFB / OFB)</a></span></dt></dl></dd><dt><span class="section"><a href="sym_crypt.html#sym_crypt_des">3.2. Crypt_DES</a></span></dt><dd><dl><dt><span class="section"><a href="sym_crypt.html#sym_crypt_des_constructor">3.2.1. The constructor</a></span></dt></dl></dd><dt><span class="section"><a href="sym_crypt.html#sym_crypt_tripledes">3.3. Crypt_TripleDES</a></span></dt><dd><dl><dt><span class="section"><a href="sym_crypt.html#sym_crypt_tripledes_constructor">3.3.1. The constructor</a></span></dt></dl></dd><dt><span class="section"><a href="sym_crypt.html#sym_crypt_rc4">3.4. Crypt_RC4</a></span></dt><dd><dl><dt><span class="section"><a href="sym_crypt.html#sym_crypt_rc4_constructor">3.4.1. The constructor</a></span></dt></dl></dd><dt><span class="section"><a href="sym_crypt.html#sym_crypt_aes">3.5. Crypt_Rijndael &amp; Crypt_AES</a></span></dt><dd><dl><dt><span class="section"><a href="sym_crypt.html#sym_crypt_aes_constructor">3.5.1. The constructor</a></span></dt><dt><span class="section"><a href="sym_crypt.html#sym_crypt_aes_vs_rijndael">3.5.2. AES vs. Rijndael</a></span></dt><dt><span class="section"><a href="sym_crypt.html#sym_crypt_aes_setkeylength">3.5.3. setKeyLength()</a></span></dt><dt><span class="section"><a href="sym_crypt.html#sym_crypt_aes_setblocklength">3.5.4. setBlockLength()</a></span></dt><dt><span class="section"><a href="sym_crypt.html#sym_crypt_aes_benchmarks">3.5.5. Speed Comparisons</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="misc_crypt.html">4. Miscellaneous Cryptography</a></span></dt><dd><dl><dt><span class="section"><a href="misc_crypt.html#misc_crypt_hash">4.1. Crypt_Hash</a></span></dt><dd><dl><dt><span class="section"><a href="misc_crypt.html#misc_crypt_hash_supported">4.1.1. Supported Algorithms and Dependencies</a></span></dt><dt><span class="section"><a href="misc_crypt.html#misc_crypt_hash_example">4.1.2. Example</a></span></dt></dl></dd><dt><span class="section"><a href="misc_crypt.html#misc_crypt_rsa">4.2. Crypt_RSA</a></span></dt><dd><dl><dt><span class="section"><a href="misc_crypt.html#misc_crypt_rsa_dependencies">4.2.1. Dependencies</a></span></dt><dt><span class="section"><a href="misc_crypt.html#misc_crypt_rsa_examples">4.2.2. Examples</a></span></dt><dt><span class="section"><a href="misc_crypt.html#misc_crypt_rsa_createkey">4.2.3. createKey()</a></span></dt><dt><span class="section"><a href="misc_crypt.html#misc_crypt_rsa_format">4.2.4. setPrivateKeyFormat(), setPublicKeyFormat(), loadKey() and setPassword()</a></span></dt><dt><span class="section"><a href="misc_crypt.html#misc_crypt_rsa_getpublickey">4.2.5. setPublicKey() and getPublicKey()</a></span></dt><dt><span class="section"><a href="misc_crypt.html#misc_crypt_rsa_encrypt">4.2.6. encrypt(), decrypt() and setEncryptionMode()</a></span></dt><dt><span class="section"><a href="misc_crypt.html#misc_crypt_rsa_sign">4.2.7. sign(), verify(), and setSignatureMode()</a></span></dt><dt><span class="section"><a href="misc_crypt.html#misc_crypt_rsa_params">4.2.8. setHash(), setMGFHash() and setSaltLength()</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="net.html">5. Networking</a></span></dt><dd><dl><dt><span class="section"><a href="net.html#net_ssh">5.1. Net_SSH</a></span></dt><dd><dl><dt><span class="section"><a href="net.html#net_ssh_dependencies">5.1.1. Dependencies</a></span></dt><dt><span class="section"><a href="net.html#net_ssh_ssh2">5.1.2. Net_SSH2 Examples</a></span></dt><dt><span class="section"><a href="net.html#net_ssh_host_key_verify">5.1.3. Host Key Verification</a></span></dt><dt><span class="section"><a href="net.html#net_ssh_interactive">5.1.4. read() / write() vs. exec()</a></span></dt><dt><span class="section"><a href="net.html#net_ssh_sudo">5.1.5. sudo with read() / write()</a></span></dt><dt><span class="section"><a href="net.html#net_ssh_exec">5.1.6. SSH-1's exec() vs. SSH-2's exec()</a></span></dt><dt><span class="section"><a href="net.html#net_ssh_successive">5.1.7. Successive calls to SSH-2's exec()</a></span></dt><dt><span class="section"><a href="net.html#net_ssh_debug">5.1.8. Debugging SSH-2</a></span></dt></dl></dd><dt><span class="section"><a href="net.html#net_sftp">5.2. Net_SFTP</a></span></dt><dd><dl><dt><span class="section"><a href="net.html#net_sftp_intro">5.2.1. Introduction</a></span></dt><dt><span class="section"><a href="net.html#net_sftp_dependencies">5.2.2. Dependencies</a></span></dt><dt><span class="section"><a href="net.html#net_sftp_example">5.2.3. Net_SFTP Example</a></span></dt><dt><span class="section"><a href="net.html#net_sftp_put">5.2.4. put($remote_file, $data [, $mode])</a></span></dt><dt><span class="section"><a href="net.html#net_sftp_get">5.2.5. get($remote_file [, $local_file])</a></span></dt><dt><span class="section"><a href="net.html#net_sftp_pwd">5.2.6. pwd(), chdir(), mkdir() and rmdir()</a></span></dt><dt><span class="section"><a href="net.html#net_sftp_chmod">5.2.7. chmod() and size()</a></span></dt><dt><span class="section"><a href="net.html#net_sftp_nlist">5.2.8. nlist() and rawlist()</a></span></dt><dt><span class="section"><a href="net.html#net_sftp_stat">5.2.9. stat() and lstat()</a></span></dt><dt><span class="section"><a href="net.html#net_sftp_delete">5.2.10. delete() and rename()</a></span></dt><dt><span class="section"><a href="net.html#net_sftp_debug">5.2.11. Debugging SFTP</a></span></dt></dl></dd></dl></dd></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>3.1. <a href="sym_crypt.html#sym_crypt_aes_benchmarks_table">AES Speed Comparisons</a></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> Chapter 1. Introduction</td></tr></table></div></body></html>
... ...
@@ -0,0 +1,20 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 1. Introduction</title><link rel="stylesheet" href="docbook.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /><link rel="start" href="index.html" title="PHP Secure Communications Library" /><link rel="up" href="index.html" title="PHP Secure Communications Library" /><link rel="prev" href="index.html" title="PHP Secure Communications Library" /><link rel="next" href="math.html" title="Chapter 2. Math" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 1. Introduction</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="math.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="intro"></a>Chapter 1. Introduction</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="intro.html#intro_intro">1.1. Who should use phpseclib</a></span></dt><dt><span class="section"><a href="intro.html#intro_usage">1.2. Using phpseclib</a></span></dt></dl></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="intro_intro"></a>1.1. Who should use phpseclib</h2></div></div></div><p>
4
+                Although many of the features this library implements are implemented in PHP via optional extensions, what are 
5
+                you, as a developer, going to do when a user tries to run your software on a host which, coincidentally, doesn't 
6
+                happen to have that optional extension installed?  You could, flat-out, tell that user to look for another 
7
+                software package that does work on their server (or to get another host, or whatever), which is liable to leave 
8
+                a bad impression on the user, or you could use a library like this - a library that uses those optional 
9
+                extensions if they're available and falls back on an internal PHP implementation if they're not.
10
+            </p><p>
11
+                Another advantage of using this library over optional PHP extensions is that you, as a developer, may find this 
12
+                libraries API easier to use then extensions API.
13
+            </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="intro_usage"></a>1.2. Using phpseclib</h2></div></div></div><p>
14
+                This library is written using the same conventions that libraries in the PHP Extension and Application Repository (PEAR) 
15
+                have been written in.  In particular, this library needs to be in your <code class="code">include_path</code>:
16
+            </p><pre class="programlisting">&lt;?php
17
+set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
18
+
19
+include('Net/SSH2.php');
20
+?&gt;</pre></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="math.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">PHP <span class="red">Secure</span> Communications Library </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 2. Math</td></tr></table></div></body></html>
... ...
@@ -0,0 +1,157 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 2. Math</title><link rel="stylesheet" href="docbook.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /><link rel="start" href="index.html" title="PHP Secure Communications Library" /><link rel="up" href="index.html" title="PHP Secure Communications Library" /><link rel="prev" href="intro.html" title="Chapter 1. Introduction" /><link rel="next" href="sym_crypt.html" title="Chapter 3. Symmetric-key Cryptography" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 2. Math</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="sym_crypt.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="math"></a>Chapter 2. Math</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="math.html#math_biginteger">2.1. Math_BigInteger</a></span></dt><dd><dl><dt><span class="section"><a href="math.html#math_biginteger_dependencies">2.1.1. Dependencies</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_constructor">2.1.2. The constructor</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_output">2.1.3. toString(), toBytes(), toHex() and toBits()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_fourfunctions">2.1.4. add(), subtract(), multiply() and divide()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_modulo">2.1.5. powMod() and modInverse()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_gcd">2.1.6. gcd() and extendedGCD()</a></span></dt><dt><span class="section"><a href="math.html#math_abs">2.1.7. abs()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_compare">2.1.8. equals() and compare()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_precision">2.1.9. setPrecision()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_bitwise">2.1.10. bitwise_and(), bitwise_or(), bitwise_xor() and bitwise_not()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_shifts">2.1.11. bitwise_rightShift() and bitwise_leftShift()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_rotates">2.1.12. bitwise_rightRotate() and bitwise_leftRotate()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_setrandom">2.1.13. setRandomGenerator()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_prime">2.1.14. isPrime()</a></span></dt><dt><span class="section"><a href="math.html#math_biginteger_random">2.1.15. random() and randomPrime()</a></span></dt></dl></dd></dl></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="math_biginteger"></a>2.1. Math_BigInteger</h2></div></div></div><p>
4
+                Implements an arbitrary precision integer arithmetic library.  Uses gmp or bcmath, if available, and an 
5
+                internal implementation, otherwise.  Here's an example:
6
+            </p><pre class="programlisting">&lt;?php
7
+include('Math/BigInteger.php');
8
+
9
+$a = new Math_BigInteger(2);
10
+$b = new Math_BigInteger(3);
11
+
12
+$c = $a-&gt;add($b);
13
+
14
+echo $c-&gt;toString(); // outputs 5
15
+?&gt;</pre><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="math_biginteger_dependencies"></a>2.1.1. Dependencies</h3></div></div></div><p>
16
+                    If you're running PHP 5, Math_BigInteger's only dependancy is the PCRE extension (which is enabled by default).  Math_BigInteger also works on PHP 4 if PHP/Compat/Function/array_fill.php and PHP/Compat/Function/bcpowmod.php are included.
17
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="math_biginteger_constructor"></a>2.1.2. The constructor</h3></div></div></div><p>
18
+                    The constructor takes two parameters.  The first is the number and the second represents the base.  Both 
19
+                    are optional (if they're not provided, the Math_BigInteger object will assume a value of 0).
20
+                </p><p>
21
+                    The supported bases are base-2, base-10 (default), base-16, and base-256.  To set $a, in the 
22
+                    above example, to 2, using base-2, we'd do <code class="code">new Math_BigInteger('10', 2)</code>.  To do it using 
23
+                    base-16, you could do <code class="code">new Math_BigInteger('2', 16)</code> or <code class="code">new Math_BigInteger('0x2', 16)</code>.
24
+                    To set it to 2 using base-256, you'd do <code class="code">new Math_BigInteger(chr(2), 256)</code>.
25
+                </p><p>
26
+                    If the base is negative (eg. -256), two's compliment will be used.  Thus, <code class="code">new Math_BigInteger(chr(0xFF), -256)</code>
27
+                    is equal to -1, as is <code class="code">new Math_BigInteger('0xFFFFFFFF', -16)</code> and <code class="code">new Math_BigInteger('11', -2)</code>.
28
+                    Basically, if the leading bit is 1, the number is assumed to be negative.
29
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="math_biginteger_output"></a>2.1.3. toString(), toBytes(), toHex() and toBits()</h3></div></div></div><p>
30
+                    <code class="code">toString()</code> returns the base-10 form of a number.  <code class="code">toBytes()</code> returns the base-256 
31
+                    form of a number, <code class="code">toHex()</code> returns the base-16 form, and <code class="code">toBits()</code> the base-2 form.
32
+                    <code class="code">toBytes()</code>, <code class="code">toHex()</code>, and <code class="code">toBits()</code> also take an optional parameter which,
33
+                    if set, will return the two's compliment of a number.  So if, for example, $a is equal to -1,
34
+                    <code class="code">toBytes(true)</code> will return <code class="code">chr(0xFF)</code>.
35
+                </p><p>
36
+                    On PHP 5, <code class="code">toString()</code> is called automatically when used in a string context via the
37
+                    <a class="ulink" href="http://php.net/language.oop5.magic#language.oop5.magic.tostring" target="_top">__toString() magic method</a>.
38
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="math_biginteger_fourfunctions"></a>2.1.4. add(), subtract(), multiply() and divide()</h3></div></div></div><p>
39
+                    <code class="code">subtract()</code> and <code class="code">multiply()</code> operate similarly to <code class="code">add()</code>.  <code class="code">divide()</code>, 
40
+                    however, does not.  Namely, it returns an array whose first element contains the quotient and whose 
41
+                    second element contains the "common residue".  If the remainder would be positive, the "common residue" 
42
+                    and the remainder are the same.  If the remainder would be negative, the "common residue" is equal to 
43
+                    the sum of the remainder and the divisor (basically, the "common residue" is the first positive modulo).
44
+                    Here's an example:
45
+                </p><pre class="programlisting">&lt;?php
46
+include('Math/BigInteger.php');
47
+
48
+$a = new Math_BigInteger('10');
49
+$b = new Math_BigInteger('20');
50
+
51
+list($quotient, $remainder) = $a-&gt;divide($b);
52
+
53
+echo $quotient-&gt;toString(); // outputs 0
54
+echo "\r\n";
55
+echo $remainder-&gt;toString(); // outputs 10
56
+?&gt;</pre></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="math_biginteger_modulo"></a>2.1.5. powMod() and modInverse()</h3></div></div></div><p>
57
+                    Examples of each follow:
58
+                </p><pre class="programlisting">&lt;?php
59
+include('Math/BigInteger.php');
60
+
61
+$a = new Math_BigInteger('10');
62
+$b = new Math_BigInteger('20');
63
+$c = new Math_BigInteger('30');
64
+
65
+$c = $a-&gt;powMod($b, $c);
66
+
67
+echo $c-&gt;toString(); // outputs 10
68
+?&gt;</pre><pre class="programlisting">&lt;?php
69
+include('Math/BigInteger.php');
70
+
71
+$a = new Math_BigInteger(30);
72
+$b = new Math_BigInteger(17);
73
+
74
+$c = $a-&gt;modInverse($b);
75
+
76
+echo $c-&gt;toString(); // outputs 4
77
+?&gt;</pre></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="math_biginteger_gcd"></a>2.1.6. gcd() and extendedGCD()</h3></div></div></div><p>
78
+                    <code class="code">extendedGCD()</code> returns an array containing three Math_BigInteger values indexed with x, y,
79
+                    and gcd.  x and y represent Bézout's identity.  <code class="code">gcd()</code> returns a Math_BigInteger value
80
+                    equal to the gcd.  An example of each follows:
81
+                </p><pre class="programlisting">&lt;?php
82
+include('Math/BigInteger.php');
83
+
84
+$a = new Math_BigInteger(693);
85
+$b = new Math_BigInteger(609);
86
+
87
+extract($a-&gt;extendedGCD($b));
88
+$c = $a-&gt;gcd($b);
89
+
90
+echo $gcd-&gt;toString() . "\r\n"; // outputs 21
91
+echo $c-&gt;toString() . "\r\n"; // outputs 21
92
+echo $a-&gt;toString() * $x-&gt;toString() + $b-&gt;toString() * $y-&gt;toString(); // outputs 21
93
+?&gt;</pre></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="math_abs"></a>2.1.7. abs()</h3></div></div></div><p>
94
+                    <code class="code">$x-&gt;abs()</code> returns the absolute value of <code class="code">$x</code>.
95
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="math_biginteger_compare"></a>2.1.8. equals() and compare()</h3></div></div></div><p>
96
+                    <code class="code">$x-&gt;equals($y)</code> returns true or false depending on whether or not <code class="code">$x</code> and
97
+                    <code class="code">$y</code> are equal.
98
+                </p><p>
99
+                    <code class="code">$x-&gt;compare($y)</code> returns 1 if $x &gt; $y, 0 if $x == $y, and -1 if $x &lt; $y.  The reason for this
100
+                    is demonstrated thusly:
101
+                </p><pre class="programlisting">$x  &gt; $y: $x-&gt;compare($y)  &gt; 0
102
+$x  &lt; $y: $x-&gt;compare($y)  &lt; 0
103
+$x == $y: $x-&gt;compare($y) == 0
104
+$x &gt;= $y: $x-&gt;compare($y) &gt;= 0
105
+$x &lt;= $y: $x-&gt;compare($y) &lt;= 0</pre><p>
106
+                    As a consequence of this, <code class="code">!$x-&gt;compare($y)</code> does not mean <code class="code">$x != $y</code> but rather
107
+                    <code class="code">$x == $y</code>.
108
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="math_biginteger_precision"></a>2.1.9. setPrecision()</h3></div></div></div><p>
109
+                    Some bitwise operations give different results depending on the precision being used.  Examples include
110
+                    left shift, not, and rotates, as discussed for <a class="link" href="math.html#math_biginteger_bitwise" title="2.1.10. bitwise_and(), bitwise_or(), bitwise_xor() and bitwise_not()">bitwise_not()</a>.
111
+                    This function lets you control the precision.
112
+                </p><p>
113
+                    Whenever a new Math_BigInteger object is created it's precision is set to the same precision as the
114
+                    calling object.  In other words, if you do <code class="code">$b = $a-&gt;bitwise_not()</code> then <code class="code">$b</code> will
115
+                    have the same precision as <code class="code">$a</code>.
116
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="math_biginteger_bitwise"></a>2.1.10. bitwise_and(), bitwise_or(), bitwise_xor() and bitwise_not()</h3></div></div></div><p>
117
+                    <code class="code">bitwise_and()</code>, <code class="code">bitwise_or()</code> and <code class="code">bitwise_xor()</code> operate similar to 
118
+                    <code class="code">add()</code>.  <code class="code">bitwise_not()</code> is a bit more complicated.  To elaborate, if the
119
+                    precision (see <a class="link" href="math.html#math_biginteger_precision" title="2.1.9. setPrecision()">setPrecision</a>) is arbitrary,
120
+                    <code class="code">$x-&gt;bitwise_not()</code> will always yield a smaller value since the most significant bit is
121
+                    assumed to have a value of one.  With fixed precision, however, the leading bit can be anything.
122
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="math_biginteger_shifts"></a>2.1.11. bitwise_rightShift() and bitwise_leftShift()</h3></div></div></div><p>
123
+                    <code class="code">$a-&gt;bitwise_rightShift($shift)</code> shifts $a by $shift bits, effectively dividing by 2**$shift. 
124
+                    <code class="code">$a-&gt;bitwise_leftShift($shift)</code> shifts $a by $shift bits, effectively multiplying by 2**$shift.
125
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="math_biginteger_rotates"></a>2.1.12. bitwise_rightRotate() and bitwise_leftRotate()</h3></div></div></div><p>
126
+                    <code class="code">$a-&gt;bitwise_rightRotate($shift)</code> and <code class="code">$a-&gt;bitwise_leftRotate($shift)</code> are
127
+                    demonstrated thusly:
128
+                </p><pre class="programlisting">&lt;?php
129
+include('Math/BigInteger.php');
130
+
131
+$a = new Math_BigInteger('00111000', 2);
132
+$a-&gt;setPrecision(8);
133
+$b = $a-&gt;bitwise_leftRotate(2);
134
+echo $b-&gt;toBits(); // returns 11100000
135
+
136
+echo "\r\n";
137
+
138
+$a = new Math_BigInteger('00111000', 2);
139
+$b = $a-&gt;bitwise_leftRotate(2);
140
+echo $b-&gt;toBits(); // returns 100011
141
+?&gt;</pre><p>
142
+                    Just as with <a class="link" href="math.html#math_biginteger_bitwise" title="2.1.10. bitwise_and(), bitwise_or(), bitwise_xor() and bitwise_not()">bitwise_not()</a>, these operations are
143
+                    precision dependant.
144
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="math_biginteger_setrandom"></a>2.1.13. setRandomGenerator()</h3></div></div></div><p>
145
+                    Sets the random generator.  To set it to <code class="code">mt_rand()</code> (which is what it is by default), call
146
+                    <code class="code">$x-&gt;setRandomGenerator('mt_rand')</code>.
147
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="math_biginteger_prime"></a>2.1.14. isPrime()</h3></div></div></div><p>
148
+                    Returns true if a number is prime and false if it isn't.
149
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="math_biginteger_random"></a>2.1.15. random() and randomPrime()</h3></div></div></div><p>
150
+                    <code class="code">random($min, $max)</code> generates a random number between <code class="code">$min</code> and <code class="code">$max</code>.
151
+                    <code class="code">randomPrime($min, $max)</code> generates a random prime number between <code class="code">$min</code> and <code class="code">$max</code>.
152
+                    If no prime number exists between <code class="code">$min</code> and <code class="code">$max</code> false is returned.
153
+                </p><p>
154
+                    <code class="code">randomPrime()</code> has an optional third parameter, as well - $timeout.  Generating prime numbers
155
+                    is a particurarly expensive operation and although in certain environments even 512-bit primes can be
156
+                    generated in a less than a second it can take other environments upwards of around a minute if not more.
157
+                </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="sym_crypt.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 1. Introduction </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 3. Symmetric-key Cryptography</td></tr></table></div></body></html>
... ...
@@ -0,0 +1,208 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 4. Miscellaneous Cryptography</title><link rel="stylesheet" href="docbook.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /><link rel="start" href="index.html" title="PHP Secure Communications Library" /><link rel="up" href="index.html" title="PHP Secure Communications Library" /><link rel="prev" href="sym_crypt.html" title="Chapter 3. Symmetric-key Cryptography" /><link rel="next" href="net.html" title="Chapter 5. Networking" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 4. Miscellaneous Cryptography</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="sym_crypt.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="net.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="misc_crypt"></a>Chapter 4. Miscellaneous Cryptography</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="misc_crypt.html#misc_crypt_hash">4.1. Crypt_Hash</a></span></dt><dd><dl><dt><span class="section"><a href="misc_crypt.html#misc_crypt_hash_supported">4.1.1. Supported Algorithms and Dependencies</a></span></dt><dt><span class="section"><a href="misc_crypt.html#misc_crypt_hash_example">4.1.2. Example</a></span></dt></dl></dd><dt><span class="section"><a href="misc_crypt.html#misc_crypt_rsa">4.2. Crypt_RSA</a></span></dt><dd><dl><dt><span class="section"><a href="misc_crypt.html#misc_crypt_rsa_dependencies">4.2.1. Dependencies</a></span></dt><dt><span class="section"><a href="misc_crypt.html#misc_crypt_rsa_examples">4.2.2. Examples</a></span></dt><dt><span class="section"><a href="misc_crypt.html#misc_crypt_rsa_createkey">4.2.3. createKey()</a></span></dt><dt><span class="section"><a href="misc_crypt.html#misc_crypt_rsa_format">4.2.4. setPrivateKeyFormat(), setPublicKeyFormat(), loadKey() and setPassword()</a></span></dt><dt><span class="section"><a href="misc_crypt.html#misc_crypt_rsa_getpublickey">4.2.5. setPublicKey() and getPublicKey()</a></span></dt><dt><span class="section"><a href="misc_crypt.html#misc_crypt_rsa_encrypt">4.2.6. encrypt(), decrypt() and setEncryptionMode()</a></span></dt><dt><span class="section"><a href="misc_crypt.html#misc_crypt_rsa_sign">4.2.7. sign(), verify(), and setSignatureMode()</a></span></dt><dt><span class="section"><a href="misc_crypt.html#misc_crypt_rsa_params">4.2.8. setHash(), setMGFHash() and setSaltLength()</a></span></dt></dl></dd></dl></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="misc_crypt_hash"></a>4.1. Crypt_Hash</h2></div></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="misc_crypt_hash_supported"></a>4.1.1. Supported Algorithms and Dependencies</h3></div></div></div><p>The following algorithms are supported:</p><p>md2, md5, md5-96, sha1, sha1-96, sha256, sha384, and sha512</p><p>
4
+                    Crypt_Hash requires, minimally, PHP 4.3.0 (due to its use of
5
+                    <a class="ulink" href="http://php.net/function.sha1" target="_top">sha1()</a>).  If sha384 or sha512 are being used and
6
+                    you're not running PHP 5.1.2 or greater then Math/BigInteger.php is also required.
7
+                </p><p>
8
+                    Crypt_Hash uses the hash extension if it's available (&gt; 5.1.2), mhash if it's not, and it's own
9
+                    internal implementation if not even mhash is available.
10
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="misc_crypt_hash_example"></a>4.1.2. Example</h3></div></div></div><pre class="programlisting">&lt;?php
11
+include('Crypt/Hash.php');
12
+
13
+$hash = new Crypt_Hash('sha1');
14
+//$hash-&gt;setKey('abcdefg');
15
+echo bin2hex($hash-&gt;hash('abcdefg'));
16
+?&gt;</pre><p>If <code class="code">$hash-&gt;setKey()</code> had been called <code class="code">$hash-&gt;hash()</code> would have returned an HMAC.</p></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="misc_crypt_rsa"></a>4.2. Crypt_RSA</h2></div></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="misc_crypt_rsa_dependencies"></a>4.2.1. Dependencies</h3></div></div></div>
17
+                    If you're running PHP 5, Crypt_RSA requires Math/BigInteger.php and Crypt/Hash.php.  If you're running
18
+                    PHP 4, Crypt_RSA also requires PHP/Compat/Function/array_fill.php, PHP/Compat/Function/bcpowmod.php, and
19
+                    PHP/Compat/Function/str_split.php
20
+            </div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="misc_crypt_rsa_examples"></a>4.2.2. Examples</h3></div></div></div><p>Here's an example of how to encrypt / decrypt with Crypt_RSA:</p><pre class="programlisting">&lt;?php
21
+include('Crypt/RSA.php');
22
+
23
+$rsa = new Crypt_RSA();
24
+extract($rsa-&gt;createKey());
25
+
26
+$plaintext = 'terrafrost';
27
+
28
+$rsa-&gt;loadKey($privatekey);
29
+$ciphertext = $rsa-&gt;encrypt($plaintext);
30
+
31
+$rsa-&gt;loadKey($publickey);
32
+echo $rsa-&gt;decrypt($ciphertext);
33
+?&gt;</pre><p>Here's an example of how to create / verify a signature with Crypt_RSA:</p><pre class="programlisting">&lt;?php
34
+include('Crypt/RSA.php');
35
+
36
+$rsa = new Crypt_RSA();
37
+extract($rsa-&gt;createKey());
38
+
39
+$plaintext = 'terrafrost';
40
+
41
+$rsa-&gt;loadKey($privatekey);
42
+$signature = $rsa-&gt;sign($plaintext);
43
+
44
+$rsa-&gt;loadKey($publickey);
45
+echo $rsa-&gt;verify($plaintext, $signature) ? 'verified' : 'unverified';
46
+&gt;</pre></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="misc_crypt_rsa_createkey"></a>4.2.3. createKey()</h3></div></div></div><p>
47
+                    <code class="code">createKey()</code> takes three parameters - <code class="code">$bits</code>, <code class="code">$timeout</code>,
48
+                    and <code class="code">$primes</code>.  <code class="code">$timeout</code> is present since creating a key has the potential to be
49
+                    fairly time consuming and will guarantee that <code class="code">createKey()</code> does not run for more than
50
+                    <code class="code">$timeout</code> seconds.  <code class="code">$primes</code> lets provide pre-computed prime numbers to speed
51
+                    things up.
52
+                </p><p>
53
+                    <code class="code">extract($rsa-&gt;createKey())</code> creates three variables - <code class="code">$publickey</code>,
54
+                    <code class="code">$privatekey</code>, and <code class="code">$partialkey</code>.  If <code class="code">createKey</code> hit the timeout then
55
+                    it'll return all the primes that it had managed to compute so that you might pass them back to
56
+                    <code class="code">createKey()</code> on a subsequent call.
57
+                </p><p>
58
+                    The exponent can be set by defining <code class="code">CRYPT_RSA_EXPONENT</code> and multi-prime RSA can be utilized
59
+                    by adjusting <code class="code">CRYPT_RSA_SMALLEST_PRIME</code>.  Note that these must be done before a Crypt_RSA()
60
+                    object is initialized.
61
+                </p><p>
62
+                    Smaller values for <code class="code">CRYPT_RSA_SMALLEST_PRIME</code> result in increased speed at the cost of security.
63
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="misc_crypt_rsa_format"></a>4.2.4. setPrivateKeyFormat(), setPublicKeyFormat(), loadKey() and setPassword()</h3></div></div></div><p>Crypt_RSA supports the following formats:</p><p>CRYPT_RSA_PRIVATE_FORMAT_PKCS1:</p><pre class="programlisting">-----BEGIN RSA PRIVATE KEY-----
64
+MIICWgIBAAKBgHx5XHa3LjiugtNq2xkd0oFf2SdsJ04hQYLoeRR3bqAei3Gc+PSy
65
+AvynCIh/03JCvBsUHaCe8BwjwaTYrpq5QunGo/wvIzvx2d3G9dlrpOIFLiatZYOf
66
+h07+CkSfaRXhBUKkul/gU87WPhKEcbnPDJS10uD1HqLsHfSKLNitGOf7AgElAoGA
67
+ENIhQHmedlzFkjEI2eFveURNxw6dhxlANEjtxH7XmRjiaUyQWGsVKQ+nNQpa2Bbb
68
+JkD9FbSc/OI8wz/gPmwP9eJN29CriebhaV3ebM1L1gbb5r7Vf/D/6rxB0BG/h2lA
69
+jyZWEZrV/Gi9ZCaw/J+IUu1pAskKid84yHphvszywCUCQQDigrtr+cVkwkUsxOGd
70
+B378yQCroXmybAD7FQHwVslafuFfTHkaMQSU/ZZLVY1ioMs1VVzzq/vOu0RstZOY
71
+AfHFAkEAjK3mIWdG4JOM44/SrDkACNatsMtXKOi4K3SlXu9ie6ikXPD+GSZ+bWCX
72
+GstFaXr9cHRvZPF3qYtK+j2N9UXOvwJBALeoRO/DmSFDkgifoixLRF5CHDgiD6Vs
73
+U9J/vGIBLaNSHoSe3rtKVr3+CyhTNF3Oe0AABi1bA4UGioGn+yFNr0UCQBbQF3sJ
74
+1CRq9ECT3PlVWfOYbzFtFQ2NhaYul1uAw9yzkEZsROF73SZ+XbFRZTOzFFds08su
75
+E2eaDCiUXDWcnhECQQCRUQn2huHlssj8kt35NAVwiHCNfaeSQ5tiDcwfOywA4YXl
76
+Q+kpuWq5U3V8j/9/n7pE/DL0nXEG/3QpKHJEYV5T
77
+-----END RSA PRIVATE KEY-----</pre><p>CRYPT_RSA_PRIVATE_FORMAT_PKCS1 (with password):</p><pre class="programlisting">-----BEGIN RSA PRIVATE KEY-----
78
+Proc-Type: 4,ENCRYPTED
79
+DEK-Info: DES-EDE3-CBC,0AE1DB47E71463BE
80
+
81
+pI2Kk5ceURbMYNo1xQqqA5rm2/QP4hgj/HuvrACtPSz/aesbG+h4lYXGpQ9os6Ha
82
+AyFW+iX2UWS6BRwJj1ztO20sKT6ckg7eINSfiSSAeOOiG5aHLxOYayO9aQ5UrrJX
83
+r0QmwRJRiHTW/82PLBNzfFHYskslNI9EWA5L/Gg4NAXDWwDooGvGkDq3ex7WkWLr
84
+k7DN2JoZuWsUZxwpgTDouRQMsygrsdSjwRDSgbnTn6luEBrL9fc5/oAWf0xoTk5h
85
+XMiOOHPBNPiZ1883ayq91HL/6895g8U9oIR1wQmdl0USViYYp5jI19ueowCyblzP
86
+xD3Bfpb6RPaZ/yqECOysPk6PDz257SGDMNk/QrQJ/eZkeniNXHJ8d+nJGuajZeBu
87
+6A/bglvKGNNNWe8UJMb5P2OAliD7y7F9wXrkV5FnQ/Q49tGxdBl7WXNuGp4x2d9s
88
+ZEnv3mOtrr1lM+2QE0Zg8mjqSem5b6Dp0LxOj5j45j5IbBrrd3MKu87jJVzp8yHy
89
+sBC6NMYYtO03qxV/j1kJR+MmAcCF1+4GGRWdFcoc0sXGVqmEOmK4QfYx3T0Vb6Hk
90
+oLdlh6ofZogezzJ8A1BvV382sTsJ90eqbgz3E+fDl8iR86+EV9bUujFE4IaBgZJP
91
+gxikVItdTcq1frNKTCSH/RPeRwk+oKWTpCYGgNA+bl641onW1DCLYcd14N6TDKmY
92
+77cOTf2ZDGOYNPycAF/FnNJJyLO3IYpU63aKBshB4dYeVrfH0FvG6g5Xt0geIkiD
93
+5W9El4ks7/3r97x443SagDRt6Mceo5TtzzFfAo7cZeA=
94
+-----END RSA PRIVATE KEY-----</pre><p>CRYPT_RSA_PRIVATE_FORMAT_PUTTY:</p><p>As utilized by <a class="ulink" href="http://en.wikipedia.org/wiki/PuTTY" target="_top">PuTTY</a>.</p><pre class="programlisting">PuTTY-User-Key-File-2: ssh-rsa
95
+Encryption: none
96
+Comment: imported-openssh-key
97
+Public-Lines: 4
98
+AAAAB3NzaC1yc2EAAAABJQAAAIB8eVx2ty44roLTatsZHdKBX9knbCdOIUGC6HkU
99
+d26gHotxnPj0sgL8pwiIf9NyQrwbFB2gnvAcI8Gk2K6auULpxqP8LyM78dndxvXZ
100
+a6TiBS4mrWWDn4dO/gpEn2kV4QVCpLpf4FPO1j4ShHG5zwyUtdLg9R6i7B30iizY
101
+rRjn+w==
102
+Private-Lines: 8
103
+AAAAgBDSIUB5nnZcxZIxCNnhb3lETccOnYcZQDRI7cR+15kY4mlMkFhrFSkPpzUK
104
+WtgW2yZA/RW0nPziPMM/4D5sD/XiTdvQq4nm4Wld3mzNS9YG2+a+1X/w/+q8QdAR
105
+v4dpQI8mVhGa1fxovWQmsPyfiFLtaQLJConfOMh6Yb7M8sAlAAAAQQDigrtr+cVk
106
+wkUsxOGdB378yQCroXmybAD7FQHwVslafuFfTHkaMQSU/ZZLVY1ioMs1VVzzq/vO
107
+u0RstZOYAfHFAAAAQQCMreYhZ0bgk4zjj9KsOQAI1q2wy1co6LgrdKVe72J7qKRc
108
+8P4ZJn5tYJcay0Vpev1wdG9k8Xepi0r6PY31Rc6/AAAAQQCRUQn2huHlssj8kt35
109
+NAVwiHCNfaeSQ5tiDcwfOywA4YXlQ+kpuWq5U3V8j/9/n7pE/DL0nXEG/3QpKHJE
110
+YV5T
111
+Private-MAC: 00d7af96bd88ff8a4ddf4a125b16f83ff2d76091</pre><p>CRYPT_RSA_PRIVATE_FORMAT_XML:</p><p>As specified in the <a class="ulink" href="http://en.wikipedia.org/wiki/XML_Signature" target="_top">XML Signature</a> standards.</p><pre class="programlisting">&lt;RSAKeyValue&gt;
112
+  &lt;Modulus&gt;
113
+    2xrDz/SAJ9QX4qtgnN2E8UlUa5ayPFVhzlv5afeHRL4RDsoqxSDCfL+oZxnZCWAM
114
+    BNwHeFxcaibhfgG3oXbis8yg5yc5ac22zg26S3fcGaz//LXhG+pApHz/Bt6x7SYe
115
+    AeZqm9Bpc1dNAOlCRXd/88Q9405s8q1cfqQzM+gU2Dk=
116
+  &lt;/Modulus&gt;
117
+  &lt;Exponent&gt;AQAB&lt;/Exponent&gt;
118
+  &lt;P&gt;
119
+    787qpkCapSXhyqks50GHIlnyWL2QGcPHtOhWBmLiOYod1EjrYKM7w5AMN251b+Q/
120
+    hv4Injbc3LbZzCo49J/75Q==&lt;/P&gt;
121
+  &lt;Q&gt;
122
+    6eX8GJx/9vv8LHwqQEVrYTcAl2uP+4dUkQCCNWTvJoAY2W3LuG8oPbqPzoDLlj/9
123
+    581xgnI57jkV1g7g/2HtxQ==
124
+  &lt;/Q&gt;
125
+  &lt;DP&gt;
126
+    Xe0YgReKuqaUwnDysn069ZxvTIyq1TyWiuf5UbUHUGwldNE+x/IHZXiVIFz2SGYI
127
+    79GuBHIOnbBMrCfZeQ70dQ==
128
+  &lt;/DP&gt;
129
+  &lt;DQ&gt;
130
+    eyD66OnZ42cbhT+H7nWc5XxS72NMVJkVR5AA+6K60oW0jyFhkSHTCUvg0FC028+sF
131
+    g7spkMDhAjBGgKTJ12iEQ==
132
+  &lt;/DQ&gt;
133
+  &lt;InverseQ&gt;
134
+    50MjKmCl9DZjequHmfW3PZ0cwcTLjhakx1qTcl/Xur0SzgdsIW3ncKJVbG7vfpRl
135
+    HfpH2uNGL7lR66NAj/qI+A==
136
+  &lt;/InverseQ&gt;
137
+  &lt;D&gt;
138
+    RiTibU/0O0v+PZXp/y434ls8iJkdBI29Gyh8x7zz9ED5CwgT+zoKqY9eJWuz/Plf
139
+    v6qFRbYj6+P4qrN4C1wZJSkE/vhqHPxdlyNTmoehS0FLiBBhX2EFHg+srU+ArVWT
140
+    fqrvhJhhacp6R7wzFqgH2W6vixaYrmtln77dR7PI39E=
141
+  &lt;/D&gt;
142
+&lt;/RSAKeyValue&gt;</pre><p>CRYPT_RSA_PUBLIC_FORMAT_PKCS1:</p><pre class="programlisting">-----BEGIN PUBLIC KEY-----
143
+MIGGAoGAfHlcdrcuOK6C02rbGR3SgV/ZJ2wnTiFBguh5FHduoB6LcZz49LIC/KcIiH/TckK8GxQd
144
+oJ7wHCPBpNiumrlC6caj/C8jO/HZ3cb12Wuk4gUuJq1lg5+HTv4KRJ9pFeEFQqS6X+BTztY+EoRx
145
+uc8MlLXS4PUeouwd9Ios2K0Y5/sCASU=
146
+-----END PUBLIC KEY-----</pre><p>CRYPT_RSA_PUBLIC_FORMAT_OPENSSH:</p><pre class="programlisting">ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIB8eVx2ty44roLTatsZHdKBX9knbCdOIUGC6HkUd26gHotx
147
+nPj0sgL8pwiIf9NyQrwbFB2gnvAcI8Gk2K6auULpxqP8LyM78dndxvXZa6TiBS4mrWWDn4dO/gpEn2kV
148
+4QVCpLpf4FPO1j4ShHG5zwyUtdLg9R6i7B30iizYrRjn+w== phpseclib-generated-key</pre><p>
149
+                    Passwords can be set via <code class="code">setPassword()</code> and are only supported on private keys.
150
+                    CRYPT_RSA_PUBLIC_FORMAT_OPENSSH generates keys that are intended to go in $HOME/.ssh/authorized_keys
151
+                    for use with OpenSSH.  Another format - CRYPT_RSA_PUBLIC_FORMAT_RAW - is stored as an array with two
152
+                    indexes - one for the modulus and one for the exponent.  Indexes accepted by <code class="code">loadkey()</code>
153
+                    are as follows:
154
+                </p><p>
155
+                    e, exponent, publicExponent, modulus, modulo, n
156
+                </p><p>
157
+                    <code class="code">loadKey()</code> has two parameters - <code class="code">$key</code> and the optional <code class="code">$type</code>.
158
+                    The default type, if <code class="code">$type</code> is not explicitely set, is CRYPT_RSA_PRIVATE_FORMAT_PKCS1.
159
+                    It should, at this point, be noted that Crypt_RSA treats public and private keys largelly identically.
160
+                    A key can be formatted as a CRYPT_RSA_PUBLIC_FORMAT_PKCS1 and still conform to the 
161
+                    CRYPT_RSA_PRIVATE_FORMAT_PKCS1 format and vice versa.  The only real difference between private keys and
162
+                    public keys is that private keys *can* contain their public key counterparts whereas public keys cannot.
163
+                    That said, this distinction is, for the most part, irrelevant and academic.  For a more thorough
164
+                    discussion of this see <a class="link" href="misc_crypt.html#misc_crypt_rsa_getpublickey" title="4.2.5. setPublicKey() and getPublicKey()">setPublicKey() and getPublicKey()</a>.
165
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="misc_crypt_rsa_getpublickey"></a>4.2.5. setPublicKey() and getPublicKey()</h3></div></div></div><p>
166
+                    As noted in <a class="link" href="misc_crypt.html#misc_crypt_rsa_format" title="4.2.4. setPrivateKeyFormat(), setPublicKeyFormat(), loadKey() and setPassword()">setPrivateKeyFormat(), setPublicKeyFormat(), loadKey() and setPassword()</a>,
167
+                    Crypt_RSA treats public and private keys largely identically.  The only real difference is that some
168
+                    private key formats contain the public key within them whereas no public key format does.  The reason
169
+                    you'd want to do this is for indexing purposes.  For example, in SSH-2, RSA authentication works by
170
+                    sending your public key along with a signature created by your private key.  The SSH-2 server then looks
171
+                    the public key up in an index of public keys to see if it's an allowed key and then verifies the signature.
172
+                    To that end, <code class="code">setPublicKey()</code> defines the public key if it hasn't already been defined and
173
+                    <code class="code">getPublicKey()</code> returns it.  <code class="code">getPublicKey()</code> has an optional parameter - $type -
174
+                    that sets the format.
175
+                </p><p>
176
+                    Per the above, 99% of the time, <span class="red">setPublicKey() is not a function you want to be calling</span>.
177
+                    If you want to load a public key, <a class="link" href="misc_crypt.html#misc_crypt_rsa_format" title="4.2.4. setPrivateKeyFormat(), setPublicKeyFormat(), loadKey() and setPassword()">call loadKey()</a>.  That function is called
178
+                    loadKey() and not loadPrivateKey() for a reason.  If you've been reading the documentation, this should be obvious, but
179
+                    if you're skimming through it it may not be.
180
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="misc_crypt_rsa_encrypt"></a>4.2.6. encrypt(), decrypt() and setEncryptionMode()</h3></div></div></div><p>
181
+                    Crypt_RSA supports two encryption modes - <code class="code">CRYPT_RSA_ENCRYPTION_OAEP</code> and
182
+                    <code class="code">CRYPT_RSA_ENCRYPTION_PKCS1</code>.  <code class="code">CRYPT_RSA_ENCRYPTION_OAEP</code> uses
183
+                    <a class="ulink" href="http://en.wikipedia.org/wiki/Optimal_Asymmetric_Encryption_Padding" target="_top">Optimal Asymmetric Encryption Padding</a>
184
+                    and provides more security than <code class="code">CRYPT_RSA_ENCRYPTION_PKCS1</code>.
185
+                </p><p>
186
+                    Both <code class="code">CRYPT_RSA_ENCRYPTION_OAEP</code> and <code class="code">CRYPT_RSA_ENCRYPTION_PKCS1</code> impose limits
187
+                    on how large the plaintext can be.  If the plaintext exceeds these limits the plaintext will be split
188
+                    up such that each block falls within those limits.
189
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="misc_crypt_rsa_sign"></a>4.2.7. sign(), verify(), and setSignatureMode()</h3></div></div></div><p>
190
+                    Crypt_RSA supports two signature modes - <code class="code">CRYPT_RSA_SIGNATURE_PSS</code> and
191
+                    <code class="code">CRYPT_RSA_SIGNATURE_PKCS1</code>.  The former is assumed to provide more security than the latter.
192
+                    See <a class="link" href="misc_crypt.html#misc_crypt_rsa_examples" title="4.2.2. Examples">Examples</a> for examples.
193
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="misc_crypt_rsa_params"></a>4.2.8. setHash(), setMGFHash() and setSaltLength()</h3></div></div></div><p>
194
+                   In all likelihood, calling these functions will be unnecessary as the default values should be sufficient.
195
+                   A discussion of them none-the-less follows.
196
+                </p><p>
197
+                    <code class="code">setHash()</code> is used with signature production / verification and (if the encryption mode is
198
+                    CRYPT_RSA_ENCRYPTION_OAEP) encryption and decryption.  If the specified hash isn't supported sha1 will
199
+                    be used.
200
+                </p><p>
201
+                    <code class="code">setMGFHash()</code> determines which hashing function should be used for the mask generation
202
+                    function as utilized in CRYPT_RSA_ENCRYPTION_OAEP and CRYPT_RSA_SIGNATURE_PSS.  PKCS#1 recommends
203
+                    but does not require that the MGFHash and the Hash be set to the same thing.
204
+                </p><p>
205
+                    <code class="code">setSaltLength()</code> is only utilized with CRYPT_RSA_SIGNATURE_PSS.  PKCS#1 recommends this
206
+                    value either be 0 (which is what it is by default) or the length of the output of the hash function as
207
+                    set via <code class="code">setHash()</code>
208
+                </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="sym_crypt.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="net.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 3. Symmetric-key Cryptography </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 5. Networking</td></tr></table></div></body></html>
... ...
@@ -0,0 +1,153 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 5. Networking</title><link rel="stylesheet" href="docbook.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /><link rel="start" href="index.html" title="PHP Secure Communications Library" /><link rel="up" href="index.html" title="PHP Secure Communications Library" /><link rel="prev" href="misc_crypt.html" title="Chapter 4. Miscellaneous Cryptography" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 5. Networking</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="misc_crypt.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> </td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="net"></a>Chapter 5. Networking</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="net.html#net_ssh">5.1. Net_SSH</a></span></dt><dd><dl><dt><span class="section"><a href="net.html#net_ssh_dependencies">5.1.1. Dependencies</a></span></dt><dt><span class="section"><a href="net.html#net_ssh_ssh2">5.1.2. Net_SSH2 Examples</a></span></dt><dt><span class="section"><a href="net.html#net_ssh_host_key_verify">5.1.3. Host Key Verification</a></span></dt><dt><span class="section"><a href="net.html#net_ssh_interactive">5.1.4. read() / write() vs. exec()</a></span></dt><dt><span class="section"><a href="net.html#net_ssh_sudo">5.1.5. sudo with read() / write()</a></span></dt><dt><span class="section"><a href="net.html#net_ssh_exec">5.1.6. SSH-1's exec() vs. SSH-2's exec()</a></span></dt><dt><span class="section"><a href="net.html#net_ssh_successive">5.1.7. Successive calls to SSH-2's exec()</a></span></dt><dt><span class="section"><a href="net.html#net_ssh_debug">5.1.8. Debugging SSH-2</a></span></dt></dl></dd><dt><span class="section"><a href="net.html#net_sftp">5.2. Net_SFTP</a></span></dt><dd><dl><dt><span class="section"><a href="net.html#net_sftp_intro">5.2.1. Introduction</a></span></dt><dt><span class="section"><a href="net.html#net_sftp_dependencies">5.2.2. Dependencies</a></span></dt><dt><span class="section"><a href="net.html#net_sftp_example">5.2.3. Net_SFTP Example</a></span></dt><dt><span class="section"><a href="net.html#net_sftp_put">5.2.4. put($remote_file, $data [, $mode])</a></span></dt><dt><span class="section"><a href="net.html#net_sftp_get">5.2.5. get($remote_file [, $local_file])</a></span></dt><dt><span class="section"><a href="net.html#net_sftp_pwd">5.2.6. pwd(), chdir(), mkdir() and rmdir()</a></span></dt><dt><span class="section"><a href="net.html#net_sftp_chmod">5.2.7. chmod() and size()</a></span></dt><dt><span class="section"><a href="net.html#net_sftp_nlist">5.2.8. nlist() and rawlist()</a></span></dt><dt><span class="section"><a href="net.html#net_sftp_stat">5.2.9. stat() and lstat()</a></span></dt><dt><span class="section"><a href="net.html#net_sftp_delete">5.2.10. delete() and rename()</a></span></dt><dt><span class="section"><a href="net.html#net_sftp_debug">5.2.11. Debugging SFTP</a></span></dt></dl></dd></dl></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="net_ssh"></a>5.1. Net_SSH</h2></div></div></div><p>
4
+                The Net_SSH1 and Net_SSH2 libraries have, for the most part, an identical API.  Some functions, however, do behave differently.
5
+            </p><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="net_ssh_dependencies"></a>5.1.1. Dependencies</h3></div></div></div><p>
6
+                    Net_SSH1/2 require, minimally, Math/BigInteger.php, Crypt/*.php, and PHP/Compat/Function/*.php.  Net_SSH1 requires PHP 4.0.0.  Net_SSH2 requires PHP 4.3.0 due to it's use of <a class="ulink" href="http://php.net/function.sha1" target="_top">sha1()</a>.
7
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="net_ssh_ssh2"></a>5.1.2. Net_SSH2 Examples</h3></div></div></div><pre class="programlisting">&lt;?php
8
+include('Net/SSH2.php');
9
+
10
+$ssh = new Net_SSH2('www.domain.tld');
11
+if (!$ssh-&gt;login('username', 'password')) {
12
+    exit('Login Failed');
13
+}
14
+
15
+echo $ssh-&gt;exec('pwd');
16
+echo $ssh-&gt;exec('ls -la');
17
+?&gt;</pre><pre class="programlisting">&lt;?php
18
+include('Net/SSH2.php');
19
+
20
+$key = new Crypt_RSA();
21
+//$key-&gt;setPassword('whatever');
22
+$key-&gt;loadKey(file_get_contents('privatekey'));
23
+
24
+$ssh = new Net_SSH2('www.domain.tld');
25
+if (!$ssh-&gt;login('username', $key)) {
26
+    exit('Login Failed');
27
+}
28
+
29
+echo $ssh-&gt;read('username@username:~$');
30
+$ssh-&gt;write("ls -la\n");
31
+echo $ssh-&gt;read('username@username:~$');
32
+?&gt;</pre></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="net_ssh_host_key_verify"></a>5.1.3. Host Key Verification</h3></div></div></div><p>
33
+                    SSH protects itself against active eavesdroppers by providing a host key.  The first time you connect the host key is supposed to be cached in some manner.  On subsequent connections, the host key being used for this connection should be checked against the cached host key.  If they match, it's the same server.  If not, it's a different one.
34
+                </p><p>
35
+                    In SSH-1, <code class="code">getHostKeyPublicModulus()</code> and <code class="code">getHostKeyPublicExponent()</code> will provide you with the host key.  In SSH-2, <code class="code">getServerPublicHostKey()</code> gets you the key.
36
+                </p><p>
37
+                    The Net_SSH1 and Net_SSH2 examples omit the key verification stage for brevity.  Also, depending on the context in which this library is used, it may even be unnecessary.  For example, if you're connecting to www.example.com:22 from www.example.com:80, eavesdroppers are not something you need to worry about.
38
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="net_ssh_interactive"></a>5.1.4. read() / write() vs. exec()</h3></div></div></div><p>
39
+                    read() works a lot like <a class="ulink" href="http://en.wikipedia.org/wiki/Expect" target="_top">expect</a> in that it'll read from a stream until the pattern, as specified by the first parameter, is found.  If the second parameter is set to NET_SSH2_READ_REGEX then the first parameter will be treated as a regular expression.
40
+                </p><p>
41
+                    write() sends input - such as a command - to the server.  Normally, operating systems don't process commands until the Enter key is hit, so to mimic this, you'll need to send a "\n", a "\r\n" or a "\r" depending on the operating system the server you're connecting to is using.  Note that although the input will most likely be a command it doesn't have to be.  What you send will be parsed by whatever is expecting user-entered text.  So if you type in "passwd\n" the input - until "\n" is entered - will be parsed by passwd as a new or existing password - not as a command to be ran by the shell.
42
+                </p><p>
43
+                    exec() sends a command to the shell to be ran.  After the command has run it's course you'll get it's output and if the prompt - or whatever it is that you might alternatively read up to with read() - occurs anywhere in the output this is not a problem.
44
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="net_ssh_sudo"></a>5.1.5. sudo with read() / write()</h3></div></div></div><p>
45
+                    By default, <a class="ulink" href="http://en.wikipedia.org/wiki/Sudo" target="_top">sudo</a> caches passwords for 5 minutes after they've been entered.  So while <code class="code">$ssh-&gt;read('Password:')</code> will work the first time you try it, it won't work if you try it within a five minutes after having initially ran it.  The following code sample demonstrates how to get around this:
46
+                </p><pre class="programlisting">&lt;?php
47
+include('Net/SSH2.php');
48
+
49
+$sftp = new Net_SSH2('www.domain.tld');
50
+$sftp-&gt;login('username', 'password');
51
+
52
+echo $sftp-&gt;read('username@username:~$');
53
+$sftp-&gt;write("sudo ls -la\n");
54
+$output = $sftp-&gt;read('#Password:|username@username:~\$#', NET_SSH2_READ_REGEX);
55
+echo $output;
56
+if (preg_match('#Password:#', $lines)) {
57
+    $ssh-&gt;write("password\n");
58
+    echo $sftp-&gt;read('username@username:~$');
59
+}
60
+&gt;</pre></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="net_ssh_exec"></a>5.1.6. SSH-1's exec() vs. SSH-2's exec()</h3></div></div></div><p>
61
+                    <code class="code">exec()</code> works by creating a channel, issuing a command, and then subsequently destroying that channel.  Since SSH-1 <a class="ulink" href="http://www.snailbook.com/faq/ssh-1-vs-2.auto.html" target="_top">only allows one channel</a>, exec() can only be called once.  SSH-2, in contrast, allows an unlimited number of channels, and as such, you can perform as many <code class="code">exec()</code>'s as you see fit.
62
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="net_ssh_successive"></a>5.1.7. Successive calls to SSH-2's exec()</h3></div></div></div><p>
63
+                    Successive calls to SSH-2's exec() may not work as expected.  Consider the following:
64
+                </p><pre class="programlisting">&lt;?php
65
+include('Net/SSH2.php');
66
+
67
+$ssh = new Net_SSH2('www.domain.tld');
68
+if (!$ssh-&gt;login('username', 'password')) {
69
+    exit('Login Failed');
70
+}
71
+
72
+echo $ssh-&gt;exec('pwd');
73
+echo $ssh-&gt;exec('cd /');
74
+echo $ssh-&gt;exec('pwd');
75
+?&gt;</pre><p>
76
+                    If done on an interactive shell, the output you'd receive for the first <code class="code">pwd</code> would (depending on how your system is setup) be different than the output of the second <code class="code">pwd</code>.  The above code snippet, however, will yield two identical lines.  The reason for this is that any "state changes" you make to the one-time shell are gone once the <code class="code">exec()</code> has been ran and the channel has been deleted.
77
+                    As such, if you want to support <code class="code">cd</code> in your program, it'd be best to just handle that internally and rewrite all commands, before they're passed to <code class="code">exec()</code> such that the relative paths are expanded to the absolute paths.
78
+                    Alternatively, one could always run a shell script, however, that may not always be an option.
79
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="net_ssh_debug"></a>5.1.8. Debugging SSH-2</h3></div></div></div><p>
80
+                    To log output, the NET_SSH2_LOGGING constant will need to be defined.  If you want full logs, you'll need to do <code class="code">define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX)</code>.  <code class="code">$ssh-&gt;getLog()</code> will then return a string containing the unencrypted packets in hex and ASCII.  If you want to just record the packet types that are being sent to and fro, you'll need to do <code class="code">define('NET_SSH2_LOGGING', NET_SSH2_LOG_SIMPLE)</code>.  <code class="code">$ssh-&gt;getLog()</code> will then return an array.  Both log types include the amount of time it took to send the packet in question.  The former is useful for general diagnostics and the latter is more useful for profiling.  An example follows:
81
+                </p><pre class="programlisting">&lt;?php
82
+include('Net/SSH2.php');
83
+define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX);
84
+
85
+$ssh = new Net_SSH2('www.domain.tld');
86
+if (!$ssh-&gt;login('username', 'password')) {
87
+    exit('Login Failed');
88
+}
89
+
90
+echo $ssh-&gt;exec('pwd');
91
+echo $ssh-&gt;getLog();
92
+?&gt;</pre><p>
93
+                    Depending on the problem, it may be more effective to just look at the output of <code class="code">$ssh-&gt;getLastError()</code> (which returns a string) and <code class="code">$ssh-&gt;getErrors()</code> (which returns an array) than to sift through the logs.
94
+                </p></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="net_sftp"></a>5.2. Net_SFTP</h2></div></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="net_sftp_intro"></a>5.2.1. Introduction</h3></div></div></div><p>
95
+                    Net_SFTP currently only supports SFTPv3, which, according to wikipedia.org, "is the most widely used 
96
+                    version, implemented by the popular OpenSSH SFTP server".
97
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="net_sftp_dependencies"></a>5.2.2. Dependencies</h3></div></div></div><p>
98
+                    Net_SFTP requires, minimally, PHP 4.3.0 and Net/SSH2.php, Math/BigInteger.php, Crypt/*.php, and PHP/Compat/Function/*.php.
99
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="net_sftp_example"></a>5.2.3. Net_SFTP Example</h3></div></div></div><pre class="programlisting">&lt;?php
100
+include('Net/SFTP.php');
101
+
102
+$sftp = new Net_SFTP('www.domain.tld');
103
+if (!$sftp-&gt;login('username', 'password')) {
104
+    exit('Login Failed');
105
+}
106
+
107
+echo $sftp-&gt;pwd() . "\r\n";
108
+$sftp-&gt;put('filename.ext', 'hello, world!');
109
+print_r($sftp-&gt;nlist());
110
+?&gt;</pre></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="net_sftp_put"></a>5.2.4. put($remote_file, $data [, $mode])</h3></div></div></div><p>
111
+                    By default, put() does not read from the local filesystem.  $data is dumped directly into $remote_file.
112
+                    So, for example, if you set $data to 'filename.ext' and then do get(), you will get a file, twelve bytes
113
+                    long, containing 'filename.ext' as its contents.
114
+                </p><p>
115
+                    Setting $mode to NET_SFTP_LOCAL_FILE will change the above behavior.  With NET_SFTP_LOCAL_FILE, $remote_file will 
116
+                    contain as many bytes as filename.ext does on your local filesystem.  If your filename.ext is 1MB then that is how
117
+                    large $remote_file will be, as well.
118
+                </p><p>
119
+                    Currently, only binary mode is supported.  As such, if the line endings need to be adjusted, you will need to take
120
+                    care of that, yourself.
121
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="net_sftp_get"></a>5.2.5. get($remote_file [, $local_file])</h3></div></div></div><p>
122
+                    Returns a string containing the contents of $remote_file if $local_file is left undefined or a boolean false if
123
+                    the operation was unsuccessful.  If $local_file is defined, returns true or false depending on the success of the
124
+                    operation
125
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="net_sftp_pwd"></a>5.2.6. pwd(), chdir(), mkdir() and rmdir()</h3></div></div></div><p>
126
+                    pwd() returns the current directory, chdir() changes directories, mkdir() creates direcotires, and rmdir() removes directories.
127
+                    In the event of failure, they all return false.  chdir(), mkdir(), and rmdir() return true on successful completion of the operation.
128
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="net_sftp_chmod"></a>5.2.7. chmod() and size()</h3></div></div></div><p>
129
+                    chmod() sets the permissions on a file and returns the new file permissions on success or false on error.  Permissions are expected to be in octal so to set a file to 777 do <code class="code">$sftp-&gt;chmod(0777, $filename)</code>
130
+                </p><p>
131
+                    size() returns the size, in bytes, of an arbitrary file.
132
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="net_sftp_nlist"></a>5.2.8. nlist() and rawlist()</h3></div></div></div><p>
133
+                    nlist($dir = '.') returns the contents of the current directory as a numerically indexed array and rawlist() returns an associate array where the filenames are the array keys and the array values are, themselves, arrays containing the file attributes.  The directory can be changed with the first parameter.
134
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="net_sftp_stat"></a>5.2.9. stat() and lstat()</h3></div></div></div><p>
135
+                    stat() returns information about a specific file whereas list() returns information about a file or symbolic link.
136
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="net_sftp_delete"></a>5.2.10. delete() and rename()</h3></div></div></div><p>
137
+                    The purpose of both functions should be easy enough to glean - delete() deletes files or directories and rename() renames them.  Both return true on success and false on failure.
138
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="net_sftp_debug"></a>5.2.11. Debugging SFTP</h3></div></div></div><p>
139
+                    To log output, the NET_SFTP_LOGGING constant will need to be defined.  If you want full logs, you'll need to do <code class="code">define('NET_SFTP_LOGGING', NET_SFTP_LOG_COMPLEX)</code>.  <code class="code">$ssh-&gt;getSFTPLog()</code> will then return a string containing the unencrypted packets in hex and ASCII.  If you want to just record the packet types that are being sent to and fro, you'll need to do <code class="code">define('NET_SFTP_LOGGING', NET_SFTP_LOG_SIMPLE)</code>.  <code class="code">$ssh-&gt;getLog()</code> will then return an array.  Both log types include the amount of time it took to send the packet in question.  The former is useful for general diagnostics and the latter is more useful for profiling.  An example follows:
140
+                </p><pre class="programlisting">&lt;?php
141
+include('Net/SFTP.php');
142
+define('NET_SFTP_LOGGING', NET_SFTP_LOG_COMPLEX); // or NET_SFTP_LOG_SIMPLE
143
+
144
+$sftp = new Net_SFTP('www.domain.tld');
145
+if (!$sftp-&gt;login('username', 'password')) {
146
+    exit('Login Failed');
147
+}
148
+
149
+print_r($sftp-&gt;nlist());
150
+echo $ssh-&gt;getSFTPLog();
151
+?&gt;</pre><p>
152
+                    Depending on the problem, it may be more effective to just look at the output of <code class="code">$ssh-&gt;getLastSFTPError()</code> (which returns a string) and <code class="code">$ssh-&gt;getSFTPErrors()</code> (which returns an array) than to sift through the logs.
153
+                </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="misc_crypt.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top">Chapter 4. Miscellaneous Cryptography </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
... ...
@@ -0,0 +1,118 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 3. Symmetric-key Cryptography</title><link rel="stylesheet" href="docbook.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /><link rel="start" href="index.html" title="PHP Secure Communications Library" /><link rel="up" href="index.html" title="PHP Secure Communications Library" /><link rel="prev" href="math.html" title="Chapter 2. Math" /><link rel="next" href="misc_crypt.html" title="Chapter 4. Miscellaneous Cryptography" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 3. Symmetric-key Cryptography</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="math.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="misc_crypt.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="sym_crypt"></a>Chapter 3. Symmetric-key Cryptography</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="sym_crypt.html#sym_crypt_intro">3.1. Introduction</a></span></dt><dd><dl><dt><span class="section"><a href="sym_crypt.html#sym_crypt_dependencies">3.1.1. Dependencies</a></span></dt><dt><span class="section"><a href="sym_crypt.html#sym_crypt_set">3.1.2. setKey() and setIV()</a></span></dt><dt><span class="section"><a href="sym_crypt.html#sym_crypt_encrypt">3.1.3. encrypt() and decrypt()</a></span></dt><dt><span class="section"><a href="sym_crypt.html#sym_crypt_continuousbuffer">3.1.4. enableContinuousBuffer() and disableContinuousBuffer()</a></span></dt><dt><span class="section"><a href="sym_crypt.html#sym_crypt_padding">3.1.5. enablePadding() and disablePadding()</a></span></dt><dt><span class="section"><a href="sym_crypt.html#sym_crypt_caution">3.1.6. A word of caution about stream ciphers (and CTR / CFB / OFB)</a></span></dt></dl></dd><dt><span class="section"><a href="sym_crypt.html#sym_crypt_des">3.2. Crypt_DES</a></span></dt><dd><dl><dt><span class="section"><a href="sym_crypt.html#sym_crypt_des_constructor">3.2.1. The constructor</a></span></dt></dl></dd><dt><span class="section"><a href="sym_crypt.html#sym_crypt_tripledes">3.3. Crypt_TripleDES</a></span></dt><dd><dl><dt><span class="section"><a href="sym_crypt.html#sym_crypt_tripledes_constructor">3.3.1. The constructor</a></span></dt></dl></dd><dt><span class="section"><a href="sym_crypt.html#sym_crypt_rc4">3.4. Crypt_RC4</a></span></dt><dd><dl><dt><span class="section"><a href="sym_crypt.html#sym_crypt_rc4_constructor">3.4.1. The constructor</a></span></dt></dl></dd><dt><span class="section"><a href="sym_crypt.html#sym_crypt_aes">3.5. Crypt_Rijndael &amp; Crypt_AES</a></span></dt><dd><dl><dt><span class="section"><a href="sym_crypt.html#sym_crypt_aes_constructor">3.5.1. The constructor</a></span></dt><dt><span class="section"><a href="sym_crypt.html#sym_crypt_aes_vs_rijndael">3.5.2. AES vs. Rijndael</a></span></dt><dt><span class="section"><a href="sym_crypt.html#sym_crypt_aes_setkeylength">3.5.3. setKeyLength()</a></span></dt><dt><span class="section"><a href="sym_crypt.html#sym_crypt_aes_setblocklength">3.5.4. setBlockLength()</a></span></dt><dt><span class="section"><a href="sym_crypt.html#sym_crypt_aes_benchmarks">3.5.5. Speed Comparisons</a></span></dt></dl></dd></dl></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="sym_crypt_intro"></a>3.1. Introduction</h2></div></div></div><p>
4
+                All of the cryptographic libraries included in phpseclib use mcrypt, if available, and an internal implementation 
5
+                if it's not.  The libraries all use a common interface although some functions, for some algorithms, carry with 
6
+                with them certain caveats.  Those that do not have caveats attached (or have relatively few attached) are 
7
+                described below.  If you don't know which one to use, try <code class="code">Crypt_TripleDES</code>.
8
+            </p><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="sym_crypt_dependencies"></a>3.1.1. Dependencies</h3></div></div></div><p>
9
+                    The Crypt_* functions require, minimally, PHP 4.0.0.  Crypt_TripleDES additionally requires Crypt/DES.php and Crypt_AES additionally requires Crypt/Rijndael.php.
10
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="sym_crypt_set"></a>3.1.2. setKey() and setIV()</h3></div></div></div><p>
11
+                    Sets the key and the initialization vector, respectively.  If neither are set, each assumed to be equal to 
12
+                    some amount of null bytes.  The initialization vector is only used in block ciphers and even then only 
13
+                    in CBC mode.  If the key or the initialization vector are larger then the block size, they're truncated.
14
+                    If they're smaller, they're padded with null bytes.
15
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="sym_crypt_encrypt"></a>3.1.3. encrypt() and decrypt()</h3></div></div></div><p>
16
+                    Self-explanatory.  Encrypts or decrypts messages.  See the examples in the subsequent sections.
17
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="sym_crypt_continuousbuffer"></a>3.1.4. enableContinuousBuffer() and disableContinuousBuffer()</h3></div></div></div><p>
18
+                    If the continuous buffer is enabled and you're using a stream cipher or a block cipher mode other than ECB then encrypting the same string twice will yield different ciphertexts.
19
+                    The reason being that the IV doesn't reset after each encryption / decryption round when the continuous buffer is used.
20
+                    This provides better security but it may also make for less intuitive behavior.
21
+                    For this reason, the continuous buffer is disabled by default.
22
+                 </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="sym_crypt_padding"></a>3.1.5. enablePadding() and disablePadding()</h3></div></div></div><p>
23
+                    Enables / disables PKCS padding on block ciphers.  Stream ciphers (<code class="code">Crypt_RC4</code> is the only stream
24
+                    cipher currently included) ignore this.
25
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="sym_crypt_caution"></a>3.1.6. A word of caution about stream ciphers (and CTR / CFB / OFB)</h3></div></div></div><p>
26
+                    Most stream ciphers (and block ciphers operating in a mode - like CTR, CFB and OFB - that turns them into stream ciphers) work by generating a stream of pseudorandom characters called a <a class="ulink" href="http://en.wikipedia.org/wiki/Keystream" target="_top">keystream</a> and then XOR'ing that with the plaintext.
27
+                    This *effectively* makes them <a class="ulink" href="http://en.wikipedia.org/wiki/One-time_pad" target="_top">one-time pads</a> which, in theory, can provide perfect secrecy.  The problem with one-time pads is that they're not as versatile as one might desire.
28
+                    Among other things, a keystream must never be reset, lest it be possible for an attacker to recover the keystream via a <a class="ulink" href="http://en.wikipedia.org/wiki/Known-plaintext_attack" target="_top">known-plaintext attack</a>.  ie. <code class="code">$ciphertext ^ $plaintext = $key</code>.  If <code class="code">$key</code> is constant (because the keystream's being reset or something) than an attacker can recover any <code class="code">$plaintext</code>, but if not - if it's dynamic - then the only key that an attacker could recover is their own.
29
+                </p></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="sym_crypt_des"></a>3.2. Crypt_DES</h2></div></div></div><p>
30
+                Implements DES (a block cipher).  Here's an example of how to use it:
31
+            </p><pre class="programlisting">&lt;?php
32
+include('Crypt/DES.php');
33
+
34
+$des = new Crypt_DES();
35
+
36
+$des-&gt;setKey('abcdefgh');
37
+
38
+$size = 10 * 1024;
39
+$plaintext = '';
40
+for ($i = 0; $i &lt; $size; $i++) {
41
+    $plaintext.= 'a';
42
+}
43
+
44
+echo $des-&gt;decrypt($des-&gt;encrypt($plaintext));
45
+?&gt;</pre><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="sym_crypt_des_constructor"></a>3.2.1. The constructor</h3></div></div></div><p>
46
+                    The constructor takes one optional parameter - $mode.  Valid values for $mode are as follows:
47
+                </p><div class="itemizedlist"><ul type="disc"><li><code class="code">CRYPT_DES_MODE_ECB</code></li><li><code class="code">CRYPT_DES_MODE_CBC</code>: The default value.</li><li><code class="code">CRYPT_DES_MODE_CTR</code></li><li><code class="code">CRYPT_DES_MODE_CFB</code></li><li><code class="code">CRYPT_DES_MODE_OFB</code></li></ul></div></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="sym_crypt_tripledes"></a>3.3. Crypt_TripleDES</h2></div></div></div><p>
48
+                Implements TripleDES (a block cipher).  Here's an example of how to use it:
49
+            </p><pre class="programlisting">&lt;?php
50
+include('Crypt/TripleDES.php');
51
+
52
+$des = new Crypt_TripleDES();
53
+
54
+$des-&gt;setKey('abcdefghijklmnopqrstuvwx');
55
+
56
+$size = 10 * 1024;
57
+$plaintext = '';
58
+for ($i = 0; $i &lt; $size; $i++) {
59
+    $plaintext.= 'a';
60
+}
61
+
62
+echo $des-&gt;decrypt($des-&gt;encrypt($plaintext));
63
+?&gt;</pre><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="sym_crypt_tripledes_constructor"></a>3.3.1. The constructor</h3></div></div></div><p>
64
+                    The constructor takes one optional parameter - $mode.  Valid values for $mode are as follows:
65
+                </p><div class="itemizedlist"><ul type="disc"><li><code class="code">CRYPT_DES_MODE_ECB</code></li><li><code class="code">CRYPT_DES_MODE_CBC3</code>: Employs outer chaining to propogate the initialization vector.  Used by SSH-2 and generally considered more secure than inner chaining.</li><li><code class="code">CRYPT_DES_MODE_3CBC</code>: Employs inner chaining to propogate the initialization vector.  Used by SSH-1.</li><li><code class="code">CRYPT_DES_MODE_CBC</code>: The default value.  An alias for <code class="code">CRYPT_DES_MODE_CBC3</code>.</li><li><code class="code">CRYPT_DES_MODE_CTR</code></li><li><code class="code">CRYPT_DES_MODE_CFB</code></li><li><code class="code">CRYPT_DES_MODE_OFB</code></li></ul></div></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="sym_crypt_rc4"></a>3.4. Crypt_RC4</h2></div></div></div><p>
66
+                Implements RC4 (a stream cipher).  Here's an example of how to use it:
67
+            </p><pre class="programlisting">&lt;?php
68
+include('Crypt/RC4.php');
69
+
70
+$rc4 = new Crypt_RC4();
71
+
72
+$rc4-&gt;setKey('abcdefghijklmnopqrstuvwx');
73
+
74
+$size = 10 * 1024;
75
+$plaintext = '';
76
+for ($i = 0; $i &lt; $size; $i++) {
77
+    $plaintext.= 'a';
78
+}
79
+
80
+echo $rc4-&gt;decrypt($rc4-&gt;encrypt($plaintext));
81
+?&gt;</pre><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="sym_crypt_rc4_constructor"></a>3.4.1. The constructor</h3></div></div></div><p>
82
+                    Not much to say about this constructor.  Since it's a stream cipher, you don't need to worry about which
83
+                    mode of operation to use.
84
+                </p></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="sym_crypt_aes"></a>3.5. Crypt_Rijndael &amp; Crypt_AES</h2></div></div></div><p>
85
+                Implements Rijndael / AES.  Here's an example of how to use Crypt_AES:
86
+            </p><pre class="programlisting">&lt;?php
87
+include('Crypt/AES.php');
88
+
89
+$aes = new Crypt_AES();
90
+
91
+$aes-&gt;setKey('abcdefghijklmnop');
92
+
93
+$size = 10 * 1024;
94
+$plaintext = '';
95
+for ($i = 0; $i &lt; $size; $i++) {
96
+    $plaintext.= 'a';
97
+}
98
+
99
+echo $aes-&gt;decrypt($aes-&gt;encrypt($plaintext));
100
+?&gt;</pre><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="sym_crypt_aes_constructor"></a>3.5.1. The constructor</h3></div></div></div><p>
101
+                    <code class="code">Crypt_AES</code>'s constructor's optional parameter can take the following values:
102
+                </p><div class="itemizedlist"><ul type="disc"><li><code class="code">CRYPT_AES_MODE_ECB</code></li><li><code class="code">CRYPT_AES_MODE_CBC</code>: The default value.</li><li><code class="code">CRYPT_AES_MODE_CTR</code></li><li><code class="code">CRYPT_AES_MODE_CFB</code></li><li><code class="code">CRYPT_AES_MODE_OFB</code></li></ul></div><p>
103
+                    <code class="code">Crypt_Rijndael</code> takes the following:
104
+                </p><div class="itemizedlist"><ul type="disc"><li><code class="code">CRYPT_RIJNDAEL_MODE_ECB</code></li><li><code class="code">CRYPT_RIJNDAEL_MODE_CBC</code>: The default value.</li><li><code class="code">CRYPT_RIJNDAEL_MODE_CTR</code></li><li><code class="code">CRYPT_RIJNDAEL_MODE_CFB</code></li><li><code class="code">CRYPT_RIJNDAEL_MODE_OFB</code></li></ul></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="sym_crypt_aes_vs_rijndael"></a>3.5.2. AES vs. Rijndael</h3></div></div></div><p>
105
+                    AES is a subset of Rijndael.  Both have variable key sizes, however, AES's block size is fixed at 128 bits, whereas Rijndael's is variable.  Also, Rijndael supports, by means of an extension to the specification, two key sizes that AES does not - 160 bits and 224 bits.
106
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="sym_crypt_aes_setkeylength"></a>3.5.3. setKeyLength()</h3></div></div></div><p>
107
+                    Valid key lengths for AES are 128 bits, 192 bits, and 256 bits.  If the key that is assigned is invalid and less than 256 bits, they key length is rounded up to the next closest valid size and the key will be null padded to that amount.  If the key length is greater than 256 bits, it will be truncated to 256 bits.
108
+                </p><p>
109
+                    As an example, if the key is 136 bits, it will be null padded to 192 bits (or 160 bits if Rijndael is being used).
110
+                </p><p>
111
+                    If <code class="code">setKeyLength()</code> has been called, this behavior changes somewhat.  Say you've set the key length, via this function, to 256 bits.  Then, instead of an invalid key being null padded to 192 or 160 bits, it will be null padded to 256 bits.
112
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="sym_crypt_aes_setblocklength"></a>3.5.4. setBlockLength()</h3></div></div></div><p>
113
+                    <code class="code">setBlockLength()</code> operates in a manner similar to <code class="code">setKeyLength()</code>, with one exception.  <code class="code">setBlockLength()</code> only works on Rijndael.  Although <code class="code">Crypt_AES</code> inherits <code class="code">setBlockLength()</code> as a function, the function doesn't do anything in AES.
114
+                </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="sym_crypt_aes_benchmarks"></a>3.5.5. Speed Comparisons</h3></div></div></div><p>
115
+                    The following table compares the speed of five different pure-PHP implementations of AES (one of which is Crypt_Rijndael and one of which is Crypt_AES) when ran on 150KB of text on a 1.8GHz Pentium 4-M.  The numbers listed are averaged from five different trials and are measured in seconds.  phpseclib's two implementations are highlighted.  All implementations can be viewed by clicking on their names.
116
+                </p><div class="table"><a id="sym_crypt_aes_benchmarks_table"></a><p class="title"><b>Table 3.1. AES Speed Comparisons</b></p><div class="table-contents"><table summary="AES Speed Comparisons" border="1"><colgroup><col /><col /><col /><col /><col /></colgroup><thead><tr><th align="right"><a class="ulink" href="http://phpseclib.sourceforge.net/movable-type.phps" target="_top">movable-type.phps</a></th><th align="right"><a class="ulink" href="http://phpseclib.sourceforge.net/phpaes.phps" target="_top">phpaes.phps</a></th><th align="right"><a class="ulink" href="http://phpseclib.sourceforge.net/phpclasses1.phps" target="_top">phpclasses1.phps</a></th><th align="right"><a class="ulink" href="http://phpseclib.sourceforge.net/phpclasses2.phps" target="_top">phpclasses2.phps</a></th><th align="right"><a class="ulink" href="http://phpseclib.sourceforge.net/phpseclib-aes.phps" target="_top">phpseclib-aes.phps</a></th><th align="right"><a class="ulink" href="http://phpseclib.sourceforge.net/phpseclib-rijndael.phps" target="_top">phpseclib-rijndael.phps</a></th></tr></thead><tbody><tr><td align="right">15.6844158172</td><td align="right">39.9537248135</td><td align="right">15.0100150108</td><td align="right">62.591713190079</td><td class="highlight" align="right">2.03581542968752</td><td class="highlight" align="right">2.62501101493836</td></tr></tbody></table></div></div><br class="table-break" /><p>
117
+                    As can be seen, phpseclib's implementations are the fastest.  phpseclib-aes.phps is faster than phpseclib-rijndael.phps because phpseclib-rijndael.phps has to contend with multiple block sizes whereas phpseclib-aes.phps does not.  Note that if mcrypt weren't explicitily disabled phpseclib would have been even faster.
118
+                </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="math.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="misc_crypt.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 2. Math </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 4. Miscellaneous Cryptography</td></tr></table></div></body></html>
0 119