commit 90a31495c9105d9feb6ef73d4d0b2c94a72def8a Author: bel Date: Fri Jun 21 18:12:31 2019 -0600 Damnit again Former-commit-id: b394f26caf0df7d113ac4cc7dacc9c544af6897f diff --git a/config/config.go b/config/config.go new file mode 100644 index 0000000..38086e5 --- /dev/null +++ b/config/config.go @@ -0,0 +1,36 @@ +package config + +import ( + "fmt" + "local/storage" + "sync" +) + +var config Config +var lock = &sync.RWMutex{} + +type Config struct { + db string + DB storage.DB + Port string + Addr string + Username string + Password string + DefaultNamespace string +} + +func Values() Config { + lock.RLock() + defer lock.RUnlock() + return config +} + +func (c Config) String() string { + return fmt.Sprintf( + "port:%v db:%v addr:%v user:*** pass:*** ns:%s", + c.Port, + c.db, + c.Addr, + c.DefaultNamespace, + ) +} diff --git a/config/new.go b/config/new.go new file mode 100644 index 0000000..83fc5f9 --- /dev/null +++ b/config/new.go @@ -0,0 +1,41 @@ +package config + +import ( + "local/args" + "local/storage" + "os" +) + +func New() error { + as := args.NewArgSet() + as.Append(args.STRING, "addr", "address/path to database/file", "") + as.Append(args.STRING, "user", "username to database", "") + as.Append(args.STRING, "pass", "password to database", "") + as.Append(args.STRING, "port", "port to listen on", "33419") + as.Append(args.STRING, "db", "database type code", storage.MAP.String()) + as.Append(args.STRING, "ns", "namespace", storage.DefaultNamespace) + if err := as.Parse(); err != nil { + return err + } + config = Config{ + db: as.Get("db").GetString(), + Addr: as.Get("addr").GetString(), + Username: as.Get("user").GetString(), + Password: as.Get("pass").GetString(), + Port: as.Get("port").GetString(), + DefaultNamespace: as.Get("ns").GetString(), + } + storage.DefaultNamespace = config.DefaultNamespace + DB, err := storage.New(storage.TypeFromString(config.db), config.Addr, config.Username, config.Password) + config.DB = DB + return err +} + +func orEnv(def, key string, keys ...string) string { + for _, key := range append(keys, key) { + if v, ok := os.LookupEnv(key); ok { + return v + } + } + return def +} diff --git a/config/new_test.go b/config/new_test.go new file mode 100644 index 0000000..8117dcc --- /dev/null +++ b/config/new_test.go @@ -0,0 +1,40 @@ +package config + +import ( + "os" + "testing" +) + +func TestNew(t *testing.T) { + invalidEnv := "&&&&&&" + keys := []string{ + "DB", + "DATABASE", + "ADDR", + "PATH", + "USER", + "USERNAME", + "PASS", + "PASSWORD", + } + was := make(map[string]string) + for _, k := range keys { + v, ok := os.LookupEnv(k) + if !ok { + v = invalidEnv + } + was[k] = v + } + defer func() { + for k, v := range was { + if v != invalidEnv { + os.Setenv(k, v) + } else { + os.Unsetenv(k) + } + } + }() + if err := New(); err != nil { + t.Fatal(err) + } +} diff --git a/copart/.log b/copart/.log new file mode 100644 index 0000000..8212905 --- /dev/null +++ b/copart/.log @@ -0,0 +1,553 @@ +2019/06/14 13:44:33 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:32.100278808 -0600 MDT m=+549.472307556] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:33.649979402 -0600 MDT m=+551.022008143]) +2019/06/14 13:44:34 Blocking empty list... +2019/06/14 13:44:34 true = ([bid:$4,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:33.263653682 -0600 MDT m=+550.635682442] == [bid:$4,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:34.853057112 -0600 MDT m=+552.225085858]) +2019/06/14 13:44:35 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:33.649979402 -0600 MDT m=+551.022008143] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:35.209579405 -0600 MDT m=+552.581608152]) +2019/06/14 13:44:35 Blocking empty list... +2019/06/14 13:44:36 Blocking empty list... +2019/06/14 13:44:36 true = ([bid:$4,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:34.853057112 -0600 MDT m=+552.225085858] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:36.442979544 -0600 MDT m=+553.815008292]) +2019/06/14 13:44:36 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:35.209579405 -0600 MDT m=+552.581608152] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:36.765530586 -0600 MDT m=+554.137559334]) +2019/06/14 13:44:37 Blocking empty list... +2019/06/14 13:44:37 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:36.442979544 -0600 MDT m=+553.815008292] == [bid:$4,700 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:37.998799546 -0600 MDT m=+555.370828308]) +2019/06/14 13:44:38 Blocking empty list... +2019/06/14 13:44:38 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:36.765530586 -0600 MDT m=+554.137559334] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:38.309365279 -0600 MDT m=+555.681394016]) +2019/06/14 13:44:39 Blocking empty list... +2019/06/14 13:44:39 true = ([bid:$4,700 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:37.998799546 -0600 MDT m=+555.370828308] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:39.632325485 -0600 MDT m=+557.004354235]) +2019/06/14 13:44:39 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:38.309365279 -0600 MDT m=+555.681394016] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:39.876272196 -0600 MDT m=+557.248300968]) +2019/06/14 13:44:40 Blocking empty list... +2019/06/14 13:44:41 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:39.632325485 -0600 MDT m=+557.004354235] == [bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:41.210836371 -0600 MDT m=+558.582865114]) +2019/06/14 13:44:41 Blocking empty list... +2019/06/14 13:44:41 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:39.876272196 -0600 MDT m=+557.248300968] == [bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:41.434892417 -0600 MDT m=+558.806921162]) +2019/06/14 13:44:42 Blocking empty list... +2019/06/14 13:44:42 true = ([bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:41.210836371 -0600 MDT m=+558.582865114] == [bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:42.800903683 -0600 MDT m=+560.172932419]) +2019/06/14 13:44:42 true = ([bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:41.434892417 -0600 MDT m=+558.806921162] == [bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:42.975489596 -0600 MDT m=+560.347518332]) +2019/06/14 13:44:43 Blocking empty list... +2019/06/14 13:44:44 Blocking empty list... +2019/06/14 13:44:44 true = ([bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:42.800903683 -0600 MDT m=+560.172932419] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:44.383681507 -0600 MDT m=+561.755710284]) +2019/06/14 13:44:44 true = ([bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:42.975489596 -0600 MDT m=+560.347518332] == [bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:44.533291771 -0600 MDT m=+561.905320516]) +2019/06/14 13:44:45 Blocking empty list... +2019/06/14 13:44:46 Blocking empty list... +2019/06/14 13:44:46 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:44.383681507 -0600 MDT m=+561.755710284] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:46.651673699 -0600 MDT m=+564.023702462]) +2019/06/14 13:44:46 true = ([bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:44.533291771 -0600 MDT m=+561.905320516] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:46.71137253 -0600 MDT m=+564.083401292]) +2019/06/14 13:44:47 Blocking empty list... +2019/06/14 13:44:48 Blocking empty list... +2019/06/14 13:44:49 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:46.651673699 -0600 MDT m=+564.023702462] == [bid:$5,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:49.04381699 -0600 MDT m=+566.415845754]) +2019/06/14 13:44:49 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:46.71137253 -0600 MDT m=+564.083401292] == [bid:$800 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:49.075309089 -0600 MDT m=+566.447337833]) +2019/06/14 13:44:49 Blocking empty list... +2019/06/14 13:44:50 Blocking empty list... +2019/06/14 13:44:50 true = ([bid:$5,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:49.04381699 -0600 MDT m=+566.415845754] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:50.626495561 -0600 MDT m=+567.998524315]) +2019/06/14 13:44:50 true = ([bid:$800 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:49.075309089 -0600 MDT m=+566.447337833] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:50.637091128 -0600 MDT m=+568.009119874]) +2019/06/14 13:44:51 Blocking empty list... +2019/06/14 13:44:52 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:50.637091128 -0600 MDT m=+568.009119874] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:52.201787818 -0600 MDT m=+569.573816555]) +2019/06/14 13:44:52 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:50.626495561 -0600 MDT m=+567.998524315] == [bid:$5,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:52.210615356 -0600 MDT m=+569.582644106]) +2019/06/14 13:44:52 Blocking empty list... +2019/06/14 13:44:53 Blocking empty list... +2019/06/14 13:44:53 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:52.201787818 -0600 MDT m=+569.573816555] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:53.785375027 -0600 MDT m=+571.157403770]) +2019/06/14 13:44:53 true = ([bid:$5,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:52.210615356 -0600 MDT m=+569.582644106] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:53.794478475 -0600 MDT m=+571.166507235]) +2019/06/14 13:44:54 Blocking empty list... +2019/06/14 13:44:55 Blocking empty list... +2019/06/14 13:44:55 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:53.785375027 -0600 MDT m=+571.157403770] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:55.341663372 -0600 MDT m=+572.713692125]) +2019/06/14 13:44:55 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:53.794478475 -0600 MDT m=+571.166507235] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:55.347619414 -0600 MDT m=+572.719648150]) +2019/06/14 13:44:56 Blocking empty list... +2019/06/14 13:44:56 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:55.341663372 -0600 MDT m=+572.713692125] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:56.887273765 -0600 MDT m=+574.259302513]) +2019/06/14 13:44:56 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:55.347619414 -0600 MDT m=+572.719648150] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:56.894005011 -0600 MDT m=+574.266033759]) +2019/06/14 13:44:57 Blocking empty list... +2019/06/14 13:44:58 Blocking empty list... +2019/06/14 13:44:58 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:56.887273765 -0600 MDT m=+574.259302513] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:58.467862845 -0600 MDT m=+575.839891596]) +2019/06/14 13:44:58 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:56.894005011 -0600 MDT m=+574.266033759] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:58.467875669 -0600 MDT m=+575.839904419]) +2019/06/14 13:44:59 Blocking empty list... +2019/06/14 13:45:00 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:58.467862845 -0600 MDT m=+575.839891596] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:00.029947727 -0600 MDT m=+577.401976473]) +2019/06/14 13:45:00 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:58.467875669 -0600 MDT m=+575.839904419] == [bid:$6,000 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:00.033625382 -0600 MDT m=+577.405654118]) +2019/06/14 13:45:00 Blocking empty list... +2019/06/14 13:45:01 Blocking empty list... +2019/06/14 13:45:01 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:00.029947727 -0600 MDT m=+577.401976473] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:01.617679613 -0600 MDT m=+578.989708348]) +2019/06/14 13:45:01 true = ([bid:$6,000 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:00.033625382 -0600 MDT m=+577.405654118] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:01.626412103 -0600 MDT m=+578.998440838]) +2019/06/14 13:45:02 Blocking empty list... +2019/06/14 13:45:03 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:01.617679613 -0600 MDT m=+578.989708348] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:03.182911975 -0600 MDT m=+580.554940742]) +2019/06/14 13:45:03 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:01.626412103 -0600 MDT m=+578.998440838] == [bid:$6,100 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:03.199787677 -0600 MDT m=+580.571816439]) +2019/06/14 13:45:03 Blocking empty list... +2019/06/14 13:45:04 Blocking empty list... +2019/06/14 13:45:04 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:03.182911975 -0600 MDT m=+580.554940742] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:04.746031495 -0600 MDT m=+582.118060242]) +2019/06/14 13:45:04 true = ([bid:$6,100 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:03.199787677 -0600 MDT m=+580.571816439] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:04.767179705 -0600 MDT m=+582.139208448]) +2019/06/14 13:45:05 Blocking empty list... +2019/06/14 13:45:06 Blocking empty list... +2019/06/14 13:45:06 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:04.746031495 -0600 MDT m=+582.118060242] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:06.310545892 -0600 MDT m=+583.682574636]) +2019/06/14 13:45:06 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:04.767179705 -0600 MDT m=+582.139208448] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:06.335166826 -0600 MDT m=+583.707195567]) +2019/06/14 13:45:07 Blocking empty list... +2019/06/14 13:45:07 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:06.310545892 -0600 MDT m=+583.682574636] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:07.883620143 -0600 MDT m=+585.255648901]) +2019/06/14 13:45:07 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:06.335166826 -0600 MDT m=+583.707195567] == [bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:07.907584605 -0600 MDT m=+585.279613340]) +2019/06/14 13:45:08 Blocking empty list... +2019/06/14 13:45:09 Blocking empty list... +2019/06/14 13:45:09 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:07.883620143 -0600 MDT m=+585.255648901] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:09.45518732 -0600 MDT m=+586.827216080]) +2019/06/14 13:45:09 true = ([bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:07.907584605 -0600 MDT m=+585.279613340] == [bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:09.4663536 -0600 MDT m=+586.838382341]) +2019/06/14 13:45:10 Blocking empty list... +2019/06/14 13:45:11 Blocking empty list... +2019/06/14 13:45:11 true = ([bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:09.4663536 -0600 MDT m=+586.838382341] == [bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:11.714388541 -0600 MDT m=+589.086417329]) +2019/06/14 13:45:11 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:09.45518732 -0600 MDT m=+586.827216080] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:11.744893291 -0600 MDT m=+589.116922050]) +2019/06/14 13:45:12 Blocking empty list... +2019/06/14 13:45:13 Blocking empty list... +2019/06/14 13:45:13 true = ([bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:11.714388541 -0600 MDT m=+589.086417329] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:13.45008916 -0600 MDT m=+590.822117920]) +2019/06/14 13:45:13 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:11.744893291 -0600 MDT m=+589.116922050] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:13.467717253 -0600 MDT m=+590.839745995]) +2019/06/14 13:45:14 Blocking empty list... +2019/06/14 13:45:15 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:13.45008916 -0600 MDT m=+590.822117920] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:15.028250727 -0600 MDT m=+592.400279501]) +2019/06/14 13:45:15 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:13.467717253 -0600 MDT m=+590.839745995] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:15.029365652 -0600 MDT m=+592.401394387]) +2019/06/14 13:45:15 Blocking empty list... +2019/06/14 13:45:16 Blocking empty list... +2019/06/14 13:45:16 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:15.028250727 -0600 MDT m=+592.400279501] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:16.574778848 -0600 MDT m=+593.946807598]) +2019/06/14 13:45:16 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:15.029365652 -0600 MDT m=+592.401394387] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:16.581757004 -0600 MDT m=+593.953785791]) +2019/06/14 13:45:17 Blocking empty list... +2019/06/14 13:45:18 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:16.574778848 -0600 MDT m=+593.946807598] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:18.148148234 -0600 MDT m=+595.520177008]) +2019/06/14 13:45:18 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:16.581757004 -0600 MDT m=+593.953785791] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:18.157707579 -0600 MDT m=+595.529736321]) +2019/06/14 13:45:18 Blocking empty list... +2019/06/14 13:45:19 Blocking empty list... +2019/06/14 13:45:19 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:18.157707579 -0600 MDT m=+595.529736321] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:19.727213553 -0600 MDT m=+597.099242300]) +2019/06/14 13:45:19 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:18.148148234 -0600 MDT m=+595.520177008] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:19.732192656 -0600 MDT m=+597.104221399]) +2019/06/14 13:45:20 Blocking empty list... +2019/06/14 13:45:21 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:19.732192656 -0600 MDT m=+597.104221399] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:21.300980036 -0600 MDT m=+598.673008782]) +2019/06/14 13:45:21 Blocking empty list... +2019/06/14 13:45:21 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:19.727213553 -0600 MDT m=+597.099242300] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:21.307722352 -0600 MDT m=+598.679751090]) +2019/06/14 13:45:22 Blocking empty list... +2019/06/14 13:45:23 Blocking empty list... +2019/06/14 13:45:23 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:21.300980036 -0600 MDT m=+598.673008782] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:23.379902263 -0600 MDT m=+600.751931031]) +2019/06/14 13:45:23 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:21.307722352 -0600 MDT m=+598.679751090] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:23.392826934 -0600 MDT m=+600.764855701]) +2019/06/14 13:45:24 Blocking empty list... +2019/06/14 13:45:25 Blocking empty list... +2019/06/14 13:45:25 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:23.392826934 -0600 MDT m=+600.764855701] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:25.71438718 -0600 MDT m=+603.086415961]) +2019/06/14 13:45:25 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:23.379902263 -0600 MDT m=+600.751931031] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:25.759869463 -0600 MDT m=+603.131898219]) +2019/06/14 13:45:26 Blocking empty list... +2019/06/14 13:45:27 Blocking empty list... +2019/06/14 13:45:27 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:25.71438718 -0600 MDT m=+603.086415961] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:27.748442664 -0600 MDT m=+605.120471419]) +2019/06/14 13:45:27 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:25.759869463 -0600 MDT m=+603.131898219] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:27.762685583 -0600 MDT m=+605.134714377]) +2019/06/14 13:45:28 Blocking empty list... +2019/06/14 13:45:29 Blocking empty list... +2019/06/14 13:45:29 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:27.762685583 -0600 MDT m=+605.134714377] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:29.693781661 -0600 MDT m=+607.065810420]) +2019/06/14 13:45:29 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:27.748442664 -0600 MDT m=+605.120471419] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:29.7037451 -0600 MDT m=+607.075773851]) +2019/06/14 13:45:30 Blocking empty list... +2019/06/14 13:45:31 Blocking empty list... +2019/06/14 13:45:31 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:29.7037451 -0600 MDT m=+607.075773851] == [bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:31.581812917 -0600 MDT m=+608.953841681]) +2019/06/14 13:45:31 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:29.693781661 -0600 MDT m=+607.065810420] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:31.603363109 -0600 MDT m=+608.975391926]) +2019/06/14 13:45:32 Blocking empty list... +2019/06/14 13:45:33 true = ([bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:31.581812917 -0600 MDT m=+608.953841681] == [bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:33.129003954 -0600 MDT m=+610.501032706]) +2019/06/14 13:45:33 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:31.603363109 -0600 MDT m=+608.975391926] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:33.154188308 -0600 MDT m=+610.526217074]) +2019/06/14 13:45:33 Blocking empty list... +2019/06/14 13:45:34 Blocking empty list... +2019/06/14 13:45:34 true = ([bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:33.129003954 -0600 MDT m=+610.501032706] == [bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:34.698293537 -0600 MDT m=+612.070322308]) +2019/06/14 13:45:34 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:33.154188308 -0600 MDT m=+610.526217074] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:34.740571037 -0600 MDT m=+612.112599799]) +2019/06/14 13:45:35 Blocking empty list... +2019/06/14 13:45:36 Blocking empty list... +2019/06/14 13:45:36 true = ([bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:34.698293537 -0600 MDT m=+612.070322308] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:36.670375341 -0600 MDT m=+614.042404108]) +2019/06/14 13:45:36 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:34.740571037 -0600 MDT m=+612.112599799] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:36.714017157 -0600 MDT m=+614.086045966]) +2019/06/14 13:45:37 Blocking empty list... +2019/06/14 13:45:38 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:36.670375341 -0600 MDT m=+614.042404108] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:38.247777676 -0600 MDT m=+615.619806410]) +2019/06/14 13:45:38 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:36.714017157 -0600 MDT m=+614.086045966] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:38.270868543 -0600 MDT m=+615.642897295]) +2019/06/14 13:45:38 Blocking empty list... +2019/06/14 13:45:39 Blocking empty list... +2019/06/14 13:45:39 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:38.247777676 -0600 MDT m=+615.619806410] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:39.820522402 -0600 MDT m=+617.192551139]) +2019/06/14 13:45:39 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:38.270868543 -0600 MDT m=+615.642897295] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:39.840696355 -0600 MDT m=+617.212725106]) +2019/06/14 13:45:40 Blocking empty list... +2019/06/14 13:45:41 Blocking empty list... +2019/06/14 13:45:41 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:39.820522402 -0600 MDT m=+617.192551139] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:41.865548025 -0600 MDT m=+619.237576784]) +2019/06/14 13:45:41 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:39.840696355 -0600 MDT m=+617.212725106] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:41.87975323 -0600 MDT m=+619.251782000]) +2019/06/14 13:45:42 Blocking empty list... +2019/06/14 13:45:43 Blocking empty list... +2019/06/14 13:45:44 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:41.87975323 -0600 MDT m=+619.251782000] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:44.12899537 -0600 MDT m=+621.501024149]) +2019/06/14 13:45:44 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:41.865548025 -0600 MDT m=+619.237576784] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:44.160166521 -0600 MDT m=+621.532195282]) +2019/06/14 13:45:44 Blocking empty list... +2019/06/14 13:45:45 Blocking empty list... +2019/06/14 13:45:45 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:44.12899537 -0600 MDT m=+621.501024149] == [bid:Next Item on title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:45.698231339 -0600 MDT m=+623.070260115]) +2019/06/14 13:45:45 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:44.160166521 -0600 MDT m=+621.532195282] == [bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:45.730591096 -0600 MDT m=+623.102619832]) +2019/06/14 13:45:46 Blocking empty list... +2019/06/14 13:45:47 true = ([bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:45.730591096 -0600 MDT m=+623.102619832] == [bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:47.300433357 -0600 MDT m=+624.672462125]) +2019/06/14 13:45:47 Blocking empty list... +2019/06/14 13:45:47 DETAIL 8 6 +2019/06/14 13:45:47 false = ([bid:Next Item on title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:45.698231339 -0600 MDT m=+623.070260115] == [bid:$950 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:47.326540361 -0600 MDT m=+624.698569101]) +2019/06/14 13:45:47 DETAIL 8 6 +2019/06/14 13:45:47 TOP +2019/06/14 13:45:47 C [bid:$950 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:47.970680447 -0600 MDT m=+625.342709201] +2019/06/14 13:45:48 Blocking empty list... +2019/06/14 13:45:48 true = ([bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:47.300433357 -0600 MDT m=+624.672462125] == [bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:48.875565095 -0600 MDT m=+626.247593841]) +2019/06/14 13:45:49 Blocking empty list... +2019/06/14 13:45:49 true = ([bid:$950 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:47.970680447 -0600 MDT m=+625.342709201] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:49.530146108 -0600 MDT m=+626.902174848]) +2019/06/14 13:45:50 Blocking empty list... +2019/06/14 13:45:50 true = ([bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:48.875565095 -0600 MDT m=+626.247593841] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:50.441141654 -0600 MDT m=+627.813170424]) +2019/06/14 13:45:51 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:49.530146108 -0600 MDT m=+626.902174848] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:51.092703578 -0600 MDT m=+628.464732312]) +2019/06/14 13:45:51 Blocking empty list... +2019/06/14 13:45:52 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:50.441141654 -0600 MDT m=+627.813170424] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:52.014105523 -0600 MDT m=+629.386134268]) +2019/06/14 13:45:52 Blocking empty list... +2019/06/14 13:45:52 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:51.092703578 -0600 MDT m=+628.464732312] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:52.666563883 -0600 MDT m=+630.038592628]) +2019/06/14 13:45:53 Blocking empty list... +2019/06/14 13:45:53 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:52.014105523 -0600 MDT m=+629.386134268] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:53.557551959 -0600 MDT m=+630.929580695]) +2019/06/14 13:45:54 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:52.666563883 -0600 MDT m=+630.038592628] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:54.239611178 -0600 MDT m=+631.611639922]) +2019/06/14 13:45:54 Blocking empty list... +2019/06/14 13:45:55 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:53.557551959 -0600 MDT m=+630.929580695] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:55.114075035 -0600 MDT m=+632.486103788]) +2019/06/14 13:45:55 Blocking empty list... +2019/06/14 13:45:55 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:54.239611178 -0600 MDT m=+631.611639922] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:55.804221548 -0600 MDT m=+633.176250310]) +2019/06/14 13:45:56 Blocking empty list... +2019/06/14 13:45:56 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:55.114075035 -0600 MDT m=+632.486103788] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:56.706568281 -0600 MDT m=+634.078597042]) +2019/06/14 13:45:57 Blocking empty list... +2019/06/14 13:45:57 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:55.804221548 -0600 MDT m=+633.176250310] == [bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:57.361048223 -0600 MDT m=+634.733076974]) +2019/06/14 13:45:58 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:56.706568281 -0600 MDT m=+634.078597042] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:58.261410026 -0600 MDT m=+635.633438778]) +2019/06/14 13:45:58 Blocking empty list... +2019/06/14 13:45:58 true = ([bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:57.361048223 -0600 MDT m=+634.733076974] == [bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:58.912388766 -0600 MDT m=+636.284417514]) +2019/06/14 13:45:59 Blocking empty list... +2019/06/14 13:45:59 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:58.261410026 -0600 MDT m=+635.633438778] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:59.82282752 -0600 MDT m=+637.194856272]) +2019/06/14 13:46:00 Blocking empty list... +2019/06/14 13:46:00 true = ([bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:58.912388766 -0600 MDT m=+636.284417514] == [bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:00.465703716 -0600 MDT m=+637.837732454]) +2019/06/14 13:46:01 Blocking empty list... +2019/06/14 13:46:01 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:59.82282752 -0600 MDT m=+637.194856272] == [bid:Bonus title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:01.397741474 -0600 MDT m=+638.769770221]) +2019/06/14 13:46:02 true = ([bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:00.465703716 -0600 MDT m=+637.837732454] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:02.023624181 -0600 MDT m=+639.395652927]) +2019/06/14 13:46:02 Blocking empty list... +2019/06/14 13:46:03 true = ([bid:Bonus title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:01.397741474 -0600 MDT m=+638.769770221] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:03.006045999 -0600 MDT m=+640.378074735]) +2019/06/14 13:46:03 Blocking empty list... +2019/06/14 13:46:03 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:02.023624181 -0600 MDT m=+639.395652927] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:03.58135933 -0600 MDT m=+640.953388064]) +2019/06/14 13:46:04 Blocking empty list... +2019/06/14 13:46:04 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:03.006045999 -0600 MDT m=+640.378074735] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:04.578964932 -0600 MDT m=+641.950993680]) +2019/06/14 13:46:05 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:03.58135933 -0600 MDT m=+640.953388064] == [bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:05.140126563 -0600 MDT m=+642.512155309]) +2019/06/14 13:46:05 Blocking empty list... +2019/06/14 13:46:06 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:04.578964932 -0600 MDT m=+641.950993680] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:06.178025052 -0600 MDT m=+643.550053786]) +2019/06/14 13:46:06 Blocking empty list... +2019/06/14 13:46:06 true = ([bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:05.140126563 -0600 MDT m=+642.512155309] == [bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:06.697389814 -0600 MDT m=+644.069418561]) +2019/06/14 13:46:07 Blocking empty list... +2019/06/14 13:46:07 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:06.178025052 -0600 MDT m=+643.550053786] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:07.780702876 -0600 MDT m=+645.152731610]) +2019/06/14 13:46:08 true = ([bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:06.697389814 -0600 MDT m=+644.069418561] == [bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:08.248101491 -0600 MDT m=+645.620130237]) +2019/06/14 13:46:08 Blocking empty list... +2019/06/14 13:46:09 Blocking empty list... +2019/06/14 13:46:09 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:07.780702876 -0600 MDT m=+645.152731610] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:09.386820437 -0600 MDT m=+646.758849193]) +2019/06/14 13:46:09 true = ([bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:08.248101491 -0600 MDT m=+645.620130237] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:09.818455714 -0600 MDT m=+647.190484458]) +2019/06/14 13:46:10 Blocking empty list... +2019/06/14 13:46:10 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:09.386820437 -0600 MDT m=+646.758849193] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:10.971483398 -0600 MDT m=+648.343512143]) +2019/06/14 13:46:11 Blocking empty list... +2019/06/14 13:46:11 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:09.818455714 -0600 MDT m=+647.190484458] == [bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:11.378239494 -0600 MDT m=+648.750268245]) +2019/06/14 13:46:12 Blocking empty list... +2019/06/14 13:46:12 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:10.971483398 -0600 MDT m=+648.343512143] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:12.537834103 -0600 MDT m=+649.909862840]) +2019/06/14 13:46:12 true = ([bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:11.378239494 -0600 MDT m=+648.750268245] == [bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:12.921818006 -0600 MDT m=+650.293846777]) +2019/06/14 13:46:13 Blocking empty list... +2019/06/14 13:46:14 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:12.537834103 -0600 MDT m=+649.909862840] == [bid:Next Item on title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:14.115315236 -0600 MDT m=+651.487343970]) +2019/06/14 13:46:14 Blocking empty list... +2019/06/14 13:46:14 true = ([bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:12.921818006 -0600 MDT m=+650.293846777] == [bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:14.471067849 -0600 MDT m=+651.843096596]) +2019/06/14 13:46:15 Blocking empty list... +2019/06/14 13:46:15 DETAIL FRONT END REAR END +2019/06/14 13:46:15 false = ([bid:Next Item on title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:14.115315236 -0600 MDT m=+651.487343970] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:15.765589239 -0600 MDT m=+653.137617986]) +2019/06/14 13:46:15 DETAIL SIDE N/A +2019/06/14 13:46:15 TOP +2019/06/14 13:46:16 true = ([bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:14.471067849 -0600 MDT m=+651.843096596] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:16.02007468 -0600 MDT m=+653.392103448]) +2019/06/14 13:46:16 Blocking empty list... +2019/06/14 13:46:16 C [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:16.390025771 -0600 MDT m=+653.762054512] +2019/06/14 13:46:17 Blocking empty list... +2019/06/14 13:46:17 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:16.02007468 -0600 MDT m=+653.392103448] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:17.651753355 -0600 MDT m=+655.023782106]) +2019/06/14 13:46:17 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:16.390025771 -0600 MDT m=+653.762054512] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:17.945675122 -0600 MDT m=+655.317703865]) +2019/06/14 13:46:18 Blocking empty list... +2019/06/14 13:46:19 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:17.651753355 -0600 MDT m=+655.023782106] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:19.255879024 -0600 MDT m=+656.627907787]) +2019/06/14 13:46:19 Blocking empty list... +2019/06/14 13:46:19 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:17.945675122 -0600 MDT m=+655.317703865] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:19.503173988 -0600 MDT m=+656.875202744]) +2019/06/14 13:46:20 Blocking empty list... +2019/06/14 13:46:20 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:19.255879024 -0600 MDT m=+656.627907787] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:20.879860426 -0600 MDT m=+658.251889173]) +2019/06/14 13:46:21 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:19.503173988 -0600 MDT m=+656.875202744] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:21.074419533 -0600 MDT m=+658.446448280]) +2019/06/14 13:46:21 Blocking empty list... +2019/06/14 13:46:22 Blocking empty list... +2019/06/14 13:46:22 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:20.879860426 -0600 MDT m=+658.251889173] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:22.472975892 -0600 MDT m=+659.845004657]) +2019/06/14 13:46:22 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:21.074419533 -0600 MDT m=+658.446448280] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:22.638350764 -0600 MDT m=+660.010379508]) +2019/06/14 13:46:23 Blocking empty list... +2019/06/14 13:46:24 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:22.472975892 -0600 MDT m=+659.845004657] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:24.039286396 -0600 MDT m=+661.411315153]) +2019/06/14 13:46:24 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:22.638350764 -0600 MDT m=+660.010379508] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:24.210076006 -0600 MDT m=+661.582104749]) +2019/06/14 13:46:24 Blocking empty list... +2019/06/14 13:46:25 Blocking empty list... +2019/06/14 13:46:25 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:24.039286396 -0600 MDT m=+661.411315153] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:25.623141495 -0600 MDT m=+662.995170232]) +2019/06/14 13:46:25 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:24.210076006 -0600 MDT m=+661.582104749] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:25.77105872 -0600 MDT m=+663.143087460]) +2019/06/14 13:46:26 Blocking empty list... +2019/06/14 13:46:27 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:25.623141495 -0600 MDT m=+662.995170232] == [bid:Bonus title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:27.217110188 -0600 MDT m=+664.589138960]) +2019/06/14 13:46:27 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:25.77105872 -0600 MDT m=+663.143087460] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:27.316556146 -0600 MDT m=+664.688584889]) +2019/06/14 13:46:27 Blocking empty list... +2019/06/14 13:46:28 Blocking empty list... +2019/06/14 13:46:28 true = ([bid:Bonus title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:27.217110188 -0600 MDT m=+664.589138960] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:28.804421116 -0600 MDT m=+666.176449864]) +2019/06/14 13:46:28 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:27.316556146 -0600 MDT m=+664.688584889] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:28.874885439 -0600 MDT m=+666.246914183]) +2019/06/14 13:46:29 Blocking empty list... +2019/06/14 13:46:30 Blocking empty list... +2019/06/14 13:46:30 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:28.804421116 -0600 MDT m=+666.176449864] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:30.378302778 -0600 MDT m=+667.750331525]) +2019/06/14 13:46:30 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:28.874885439 -0600 MDT m=+666.246914183] == [bid:Bonus title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:30.430949455 -0600 MDT m=+667.802978198]) +2019/06/14 13:46:31 Blocking empty list... +2019/06/14 13:46:31 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:30.378302778 -0600 MDT m=+667.750331525] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:31.953632384 -0600 MDT m=+669.325661131]) +2019/06/14 13:46:31 true = ([bid:Bonus title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:30.430949455 -0600 MDT m=+667.802978198] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:31.996367484 -0600 MDT m=+669.368396221]) +2019/06/14 13:46:32 Blocking empty list... +2019/06/14 13:46:33 Blocking empty list... +2019/06/14 13:46:33 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:31.953632384 -0600 MDT m=+669.325661131] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:33.521086939 -0600 MDT m=+670.893115677]) +2019/06/14 13:46:33 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:31.996367484 -0600 MDT m=+669.368396221] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:33.571119989 -0600 MDT m=+670.943148735]) +2019/06/14 13:46:34 Blocking empty list... +2019/06/14 13:46:35 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:33.521086939 -0600 MDT m=+670.893115677] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:35.111873847 -0600 MDT m=+672.483902604]) +2019/06/14 13:46:35 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:33.571119989 -0600 MDT m=+670.943148735] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:35.140044919 -0600 MDT m=+672.512073682]) +2019/06/14 13:46:35 Blocking empty list... +2019/06/14 13:46:36 Blocking empty list... +2019/06/14 13:46:36 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:35.111873847 -0600 MDT m=+672.483902604] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:36.691188678 -0600 MDT m=+674.063217431]) +2019/06/14 13:46:36 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:35.140044919 -0600 MDT m=+672.512073682] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:36.72922032 -0600 MDT m=+674.101249074]) +2019/06/14 13:46:37 Blocking empty list... +2019/06/14 13:46:38 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:36.691188678 -0600 MDT m=+674.063217431] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:38.271432569 -0600 MDT m=+675.643461305]) +2019/06/14 13:46:38 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:36.72922032 -0600 MDT m=+674.101249074] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:38.298540491 -0600 MDT m=+675.670569229]) +2019/06/14 13:46:38 Blocking empty list... +2019/06/14 13:46:39 Blocking empty list... +2019/06/14 13:46:39 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:38.271432569 -0600 MDT m=+675.643461305] == [bid:Next Item on title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:39.854917796 -0600 MDT m=+677.226946542]) +2019/06/14 13:46:39 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:38.298540491 -0600 MDT m=+675.670569229] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:39.86269596 -0600 MDT m=+677.234724702]) +2019/06/14 13:46:40 Blocking empty list... +2019/06/14 13:46:41 Blocking empty list... +2019/06/14 13:46:41 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:39.86269596 -0600 MDT m=+677.234724702] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:41.421462137 -0600 MDT m=+678.793490880]) +2019/06/14 13:46:41 DETAIL 2.0L 4 4.8L 8 +2019/06/14 13:46:41 false = ([bid:Next Item on title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:39.854917796 -0600 MDT m=+677.226946542] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:41.444806466 -0600 MDT m=+678.816835202]) +2019/06/14 13:46:41 DETAIL $2,316 $5,782 +2019/06/14 13:46:41 TOP +2019/06/14 13:46:42 C [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:42.058019248 -0600 MDT m=+679.430047994] +2019/06/14 13:46:42 Blocking empty list... +2019/06/14 13:46:42 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:41.421462137 -0600 MDT m=+678.793490880] == [bid:Sold on title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:42.978837839 -0600 MDT m=+680.350866588]) +2019/06/14 13:46:43 Blocking empty list... +2019/06/14 13:46:43 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:42.058019248 -0600 MDT m=+679.430047994] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:43.652922025 -0600 MDT m=+681.024950771]) +2019/06/14 13:46:44 stale element reference: stale element reference: element is not attached to the page document + (Session info: chrome=75.0.3770.80) +2019/06/14 13:46:44 Blocking empty list... +2019/06/14 13:46:45 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:43.652922025 -0600 MDT m=+681.024950771] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:45.212745952 -0600 MDT m=+682.584774692]) +2019/06/14 13:46:45 Blocking empty list... +2019/06/14 13:46:46 Blocking empty list... +2019/06/14 13:46:46 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:45.212745952 -0600 MDT m=+682.584774692] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:46.779907351 -0600 MDT m=+684.151936105]) +2019/06/14 13:46:47 Blocking empty list... +2019/06/14 13:46:48 Blocking empty list... +2019/06/14 13:46:48 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:46.779907351 -0600 MDT m=+684.151936105] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:48.37493185 -0600 MDT m=+685.746960593]) +2019/06/14 13:46:49 Blocking empty list... +2019/06/14 13:46:50 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:48.37493185 -0600 MDT m=+685.746960593] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:50.006089325 -0600 MDT m=+687.378118062]) +2019/06/14 13:46:50 Blocking empty list... +2019/06/14 13:46:51 Blocking empty list... +2019/06/14 13:46:51 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:50.006089325 -0600 MDT m=+687.378118062] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:51.571964801 -0600 MDT m=+688.943993546]) +2019/06/14 13:46:52 Blocking empty list... +2019/06/14 13:46:53 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:51.571964801 -0600 MDT m=+688.943993546] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:53.168928243 -0600 MDT m=+690.540956989]) +2019/06/14 13:46:53 Blocking empty list... +2019/06/14 13:46:54 Blocking empty list... +2019/06/14 13:46:54 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:53.168928243 -0600 MDT m=+690.540956989] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:54.746981537 -0600 MDT m=+692.119010284]) +2019/06/14 13:46:55 Blocking empty list... +2019/06/14 13:46:56 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:54.746981537 -0600 MDT m=+692.119010284] == [bid:Sold! title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:56.312143023 -0600 MDT m=+693.684171758]) +2019/06/14 13:46:56 Blocking empty list... +2019/06/14 13:46:57 Blocking empty list... +2019/06/14 13:46:57 DETAIL 107,847 - Actual 157,979 - Exempt +2019/06/14 13:46:57 false = ([bid:Sold! title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:56.312143023 -0600 MDT m=+693.684171758] == [bid:Next Item on title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:57.92401858 -0600 MDT m=+695.296047330]) +2019/06/14 13:46:57 DETAIL 107,847 - Actual 157,979 - Exempt +2019/06/14 13:46:58 TOP +2019/06/14 13:46:58 Blocking empty list... +2019/06/14 13:46:58 C [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:46:58.636284949 -0600 MDT m=+696.008313695] +2019/06/14 13:46:59 Blocking empty list... +2019/06/14 13:47:00 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:46:58.636284949 -0600 MDT m=+696.008313695] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:00.228379187 -0600 MDT m=+697.600407934]) +2019/06/14 13:47:00 Blocking empty list... +2019/06/14 13:47:01 Blocking empty list... +2019/06/14 13:47:01 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:00.228379187 -0600 MDT m=+697.600407934] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:01.828705581 -0600 MDT m=+699.200734322]) +2019/06/14 13:47:02 Blocking empty list... +2019/06/14 13:47:03 Blocking empty list... +2019/06/14 13:47:03 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:01.828705581 -0600 MDT m=+699.200734322] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:03.404720678 -0600 MDT m=+700.776749424]) +2019/06/14 13:47:04 Blocking empty list... +2019/06/14 13:47:04 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:03.404720678 -0600 MDT m=+700.776749424] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:04.995027354 -0600 MDT m=+702.367056092]) +2019/06/14 13:47:05 Blocking empty list... +2019/06/14 13:47:06 Blocking empty list... +2019/06/14 13:47:06 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:04.995027354 -0600 MDT m=+702.367056092] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:06.553799294 -0600 MDT m=+703.925828028]) +2019/06/14 13:47:07 Blocking empty list... +2019/06/14 13:47:08 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:06.553799294 -0600 MDT m=+703.925828028] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:08.135736901 -0600 MDT m=+705.507765668]) +2019/06/14 13:47:08 Blocking empty list... +2019/06/14 13:47:09 Blocking empty list... +2019/06/14 13:47:09 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:08.135736901 -0600 MDT m=+705.507765668] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:09.740053433 -0600 MDT m=+707.112082171]) +2019/06/14 13:47:10 Blocking empty list... +2019/06/14 13:47:11 Blocking empty list... +2019/06/14 13:47:11 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:09.740053433 -0600 MDT m=+707.112082171] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:11.355342645 -0600 MDT m=+708.727371404]) +2019/06/14 13:47:12 Blocking empty list... +2019/06/14 13:47:12 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:11.355342645 -0600 MDT m=+708.727371404] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:12.953509692 -0600 MDT m=+710.325538426]) +2019/06/14 13:47:13 Blocking empty list... +2019/06/14 13:47:14 Blocking empty list... +2019/06/14 13:47:14 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:12.953509692 -0600 MDT m=+710.325538426] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:14.544215968 -0600 MDT m=+711.916244711]) +2019/06/14 13:47:15 Blocking empty list... +2019/06/14 13:47:16 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:14.544215968 -0600 MDT m=+711.916244711] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:16.111428829 -0600 MDT m=+713.483457570]) +2019/06/14 13:47:16 Blocking empty list... +2019/06/14 13:47:17 Blocking empty list... +2019/06/14 13:47:17 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:16.111428829 -0600 MDT m=+713.483457570] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:17.744188889 -0600 MDT m=+715.116217639]) +2019/06/14 13:47:18 Blocking empty list... +2019/06/14 13:47:19 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:17.744188889 -0600 MDT m=+715.116217639] == [bid:Next Item on title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:19.31997218 -0600 MDT m=+716.692000915]) +2019/06/14 13:47:19 Blocking empty list... +2019/06/14 13:47:20 Blocking empty list... +2019/06/14 13:47:20 DETAIL $24,039 $7,664 +2019/06/14 13:47:20 false = ([bid:Next Item on title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:19.31997218 -0600 MDT m=+716.692000915] == [bid:$7,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:20.975960694 -0600 MDT m=+718.347989437]) +2019/06/14 13:47:20 DETAIL BLACK BLUE +2019/06/14 13:47:21 TOP +2019/06/14 13:47:21 Blocking empty list... +2019/06/14 13:47:21 C [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:21.632839693 -0600 MDT m=+719.004868430] +2019/06/14 13:47:22 Blocking empty list... +2019/06/14 13:47:23 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:21.632839693 -0600 MDT m=+719.004868430] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:23.246285645 -0600 MDT m=+720.618314400]) +2019/06/14 13:47:23 Blocking empty list... +2019/06/14 13:47:24 Blocking empty list... +2019/06/14 13:47:24 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:23.246285645 -0600 MDT m=+720.618314400] == [bid:$8,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:24.857513644 -0600 MDT m=+722.229542387]) +2019/06/14 13:47:25 Blocking empty list... +2019/06/14 13:47:26 Blocking empty list... +2019/06/14 13:47:26 true = ([bid:$8,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:24.857513644 -0600 MDT m=+722.229542387] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:26.442221476 -0600 MDT m=+723.814250212]) +2019/06/14 13:47:27 Blocking empty list... +2019/06/14 13:47:27 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:26.442221476 -0600 MDT m=+723.814250212] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:27.9990393 -0600 MDT m=+725.371068068]) +2019/06/14 13:47:28 Blocking empty list... +2019/06/14 13:47:29 Blocking empty list... +2019/06/14 13:47:29 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:27.9990393 -0600 MDT m=+725.371068068] == [bid:$8,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:29.61021549 -0600 MDT m=+726.982244236]) +2019/06/14 13:47:30 Blocking empty list... +2019/06/14 13:47:31 true = ([bid:$8,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:29.61021549 -0600 MDT m=+726.982244236] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:31.217544509 -0600 MDT m=+728.589573280]) +2019/06/14 13:47:31 Blocking empty list... +2019/06/14 13:47:32 Blocking empty list... +2019/06/14 13:47:32 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:31.217544509 -0600 MDT m=+728.589573280] == [bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:32.789748968 -0600 MDT m=+730.161777737]) +2019/06/14 13:47:33 Blocking empty list... +2019/06/14 13:47:34 Blocking empty list... +2019/06/14 13:47:34 true = ([bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:32.789748968 -0600 MDT m=+730.161777737] == [bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:34.359088515 -0600 MDT m=+731.731117253]) +2019/06/14 13:47:35 Blocking empty list... +2019/06/14 13:47:36 Blocking empty list... +2019/06/14 13:47:36 true = ([bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:34.359088515 -0600 MDT m=+731.731117253] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:36.560628194 -0600 MDT m=+733.932656950]) +2019/06/14 13:47:37 Blocking empty list... +2019/06/14 13:47:38 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:36.560628194 -0600 MDT m=+733.932656950] == [bid:$8,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:38.175551491 -0600 MDT m=+735.547580230]) +2019/06/14 13:47:38 Blocking empty list... +2019/06/14 13:47:39 Blocking empty list... +2019/06/14 13:47:39 true = ([bid:$8,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:38.175551491 -0600 MDT m=+735.547580230] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:39.73534806 -0600 MDT m=+737.107376830]) +2019/06/14 13:47:40 Blocking empty list... +2019/06/14 13:47:41 Blocking empty list... +2019/06/14 13:47:41 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:39.73534806 -0600 MDT m=+737.107376830] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:41.333835964 -0600 MDT m=+738.705864712]) +2019/06/14 13:47:42 Blocking empty list... +2019/06/14 13:47:42 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:41.333835964 -0600 MDT m=+738.705864712] == [bid:$8,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:42.926327488 -0600 MDT m=+740.298356250]) +2019/06/14 13:47:43 Blocking empty list... +2019/06/14 13:47:44 Blocking empty list... +2019/06/14 13:47:44 true = ([bid:$8,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:42.926327488 -0600 MDT m=+740.298356250] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:44.493785479 -0600 MDT m=+741.865814216]) +2019/06/14 13:47:45 Blocking empty list... +2019/06/14 13:47:46 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:44.493785479 -0600 MDT m=+741.865814216] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:46.092736556 -0600 MDT m=+743.464765324]) +2019/06/14 13:47:46 Blocking empty list... +2019/06/14 13:47:47 Blocking empty list... +2019/06/14 13:47:47 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:46.092736556 -0600 MDT m=+743.464765324] == [bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:47.67597531 -0600 MDT m=+745.048004045]) +2019/06/14 13:47:48 Blocking empty list... +2019/06/14 13:47:49 true = ([bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:47.67597531 -0600 MDT m=+745.048004045] == [bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:49.283213406 -0600 MDT m=+746.655242158]) +2019/06/14 13:47:49 Blocking empty list... +2019/06/14 13:47:50 Blocking empty list... +2019/06/14 13:47:50 true = ([bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:49.283213406 -0600 MDT m=+746.655242158] == [bid:$9,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:50.867335397 -0600 MDT m=+748.239364160]) +2019/06/14 13:47:51 Blocking empty list... +2019/06/14 13:47:52 Blocking empty list... +2019/06/14 13:47:52 true = ([bid:$9,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:50.867335397 -0600 MDT m=+748.239364160] == [bid:$9,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:52.436153467 -0600 MDT m=+749.808182224]) +2019/06/14 13:47:53 Blocking empty list... +2019/06/14 13:47:54 true = ([bid:$9,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:52.436153467 -0600 MDT m=+749.808182224] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:54.03762827 -0600 MDT m=+751.409657021]) +2019/06/14 13:47:54 Blocking empty list... +2019/06/14 13:47:55 Blocking empty list... +2019/06/14 13:47:55 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:54.03762827 -0600 MDT m=+751.409657021] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:55.599953643 -0600 MDT m=+752.971982388]) +2019/06/14 13:47:56 Blocking empty list... +2019/06/14 13:47:57 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:55.599953643 -0600 MDT m=+752.971982388] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:57.206392983 -0600 MDT m=+754.578421720]) +2019/06/14 13:47:57 Blocking empty list... +2019/06/14 13:47:58 Blocking empty list... +2019/06/14 13:47:58 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:57.206392983 -0600 MDT m=+754.578421720] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:58.788865612 -0600 MDT m=+756.160894358]) +2019/06/14 13:47:59 Blocking empty list... +2019/06/14 13:48:00 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:58.788865612 -0600 MDT m=+756.160894358] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:00.334639215 -0600 MDT m=+757.706667963]) +2019/06/14 13:48:00 Blocking empty list... +2019/06/14 13:48:01 Blocking empty list... +2019/06/14 13:48:01 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:00.334639215 -0600 MDT m=+757.706667963] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:01.910710068 -0600 MDT m=+759.282738803]) +2019/06/14 13:48:02 Blocking empty list... +2019/06/14 13:48:03 Blocking empty list... +2019/06/14 13:48:03 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:01.910710068 -0600 MDT m=+759.282738803] == [bid:$9,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:03.504547263 -0600 MDT m=+760.876576007]) +2019/06/14 13:48:04 Blocking empty list... +2019/06/14 13:48:05 true = ([bid:$9,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:03.504547263 -0600 MDT m=+760.876576007] == [bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:05.075648795 -0600 MDT m=+762.447677531]) +2019/06/14 13:48:05 Blocking empty list... +2019/06/14 13:48:06 Blocking empty list... +2019/06/14 13:48:06 true = ([bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:05.075648795 -0600 MDT m=+762.447677531] == [bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:06.677601587 -0600 MDT m=+764.049630333]) +2019/06/14 13:48:07 Blocking empty list... +2019/06/14 13:48:08 true = ([bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:06.677601587 -0600 MDT m=+764.049630333] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:08.243314838 -0600 MDT m=+765.615343582]) +2019/06/14 13:48:08 Blocking empty list... +2019/06/14 13:48:09 Blocking empty list... +2019/06/14 13:48:09 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:08.243314838 -0600 MDT m=+765.615343582] == [bid:$9,800 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:09.816861858 -0600 MDT m=+767.188890627]) +2019/06/14 13:48:10 Blocking empty list... +2019/06/14 13:48:11 Blocking empty list... +2019/06/14 13:48:11 true = ([bid:$9,800 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:09.816861858 -0600 MDT m=+767.188890627] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:11.401970852 -0600 MDT m=+768.773999592]) +2019/06/14 13:48:12 Blocking empty list... +2019/06/14 13:48:13 Blocking empty list... +2019/06/14 13:48:13 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:11.401970852 -0600 MDT m=+768.773999592] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:13.385943303 -0600 MDT m=+770.757972044]) +2019/06/14 13:48:14 Blocking empty list... +2019/06/14 13:48:15 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:13.385943303 -0600 MDT m=+770.757972044] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:15.010900934 -0600 MDT m=+772.382929685]) +2019/06/14 13:48:15 Blocking empty list... +2019/06/14 13:48:16 Blocking empty list... +2019/06/14 13:48:16 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:15.010900934 -0600 MDT m=+772.382929685] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:16.582646794 -0600 MDT m=+773.954675536]) +2019/06/14 13:48:17 Blocking empty list... +2019/06/14 13:48:18 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:16.582646794 -0600 MDT m=+773.954675536] == [bid:$10,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:18.158918859 -0600 MDT m=+775.530947603]) +2019/06/14 13:48:18 Blocking empty list... +2019/06/14 13:48:19 Blocking empty list... +2019/06/14 13:48:19 true = ([bid:$10,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:18.158918859 -0600 MDT m=+775.530947603] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:19.762418285 -0600 MDT m=+777.134447038]) +2019/06/14 13:48:20 Blocking empty list... +2019/06/14 13:48:21 Blocking empty list... +2019/06/14 13:48:21 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:19.762418285 -0600 MDT m=+777.134447038] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:21.358132544 -0600 MDT m=+778.730161288]) +2019/06/14 13:48:22 Blocking empty list... +2019/06/14 13:48:22 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:21.358132544 -0600 MDT m=+778.730161288] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:22.960404858 -0600 MDT m=+780.332433601]) +2019/06/14 13:48:23 Blocking empty list... +2019/06/14 13:48:24 Blocking empty list... +2019/06/14 13:48:24 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:22.960404858 -0600 MDT m=+780.332433601] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:24.549422086 -0600 MDT m=+781.921450823]) +2019/06/14 13:48:25 Blocking empty list... +2019/06/14 13:48:26 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:24.549422086 -0600 MDT m=+781.921450823] == [bid:$10,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:26.125843233 -0600 MDT m=+783.497871975]) +2019/06/14 13:48:26 Blocking empty list... +2019/06/14 13:48:27 Blocking empty list... +2019/06/14 13:48:27 true = ([bid:$10,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:26.125843233 -0600 MDT m=+783.497871975] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:27.690221589 -0600 MDT m=+785.062250326]) +2019/06/14 13:48:28 Blocking empty list... +2019/06/14 13:48:29 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:27.690221589 -0600 MDT m=+785.062250326] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:29.264012162 -0600 MDT m=+786.636040912]) +2019/06/14 13:48:29 Blocking empty list... +2019/06/14 13:48:30 Blocking empty list... +2019/06/14 13:48:30 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:29.264012162 -0600 MDT m=+786.636040912] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:30.816621488 -0600 MDT m=+788.188650236]) +2019/06/14 13:48:31 Blocking empty list... +2019/06/14 13:48:32 Blocking empty list... +2019/06/14 13:48:33 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:30.816621488 -0600 MDT m=+788.188650236] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:33.096096709 -0600 MDT m=+790.468125473]) +2019/06/14 13:48:33 Blocking empty list... +2019/06/14 13:48:34 Blocking empty list... +2019/06/14 13:48:34 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:33.096096709 -0600 MDT m=+790.468125473] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:34.681657183 -0600 MDT m=+792.053685940]) +2019/06/14 13:48:35 Blocking empty list... +2019/06/14 13:48:36 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:34.681657183 -0600 MDT m=+792.053685940] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:36.241164634 -0600 MDT m=+793.613193386]) +2019/06/14 13:48:36 Blocking empty list... +2019/06/14 13:48:37 Blocking empty list... +2019/06/14 13:48:37 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:36.241164634 -0600 MDT m=+793.613193386] == [bid:Bonus title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:37.85757393 -0600 MDT m=+795.229602667]) +2019/06/14 13:48:38 Blocking empty list... +2019/06/14 13:48:39 Blocking empty list... +2019/06/14 13:48:39 true = ([bid:Bonus title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:37.85757393 -0600 MDT m=+795.229602667] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:39.441577958 -0600 MDT m=+796.813606720]) +2019/06/14 13:48:40 Blocking empty list... +2019/06/14 13:48:41 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:39.441577958 -0600 MDT m=+796.813606720] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:41.061072437 -0600 MDT m=+798.433101174]) +2019/06/14 13:48:41 Blocking empty list... +2019/06/14 13:48:42 Blocking empty list... +2019/06/14 13:48:42 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:41.061072437 -0600 MDT m=+798.433101174] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:42.682457336 -0600 MDT m=+800.054486086]) +2019/06/14 13:48:43 Blocking empty list... +2019/06/14 13:48:44 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:42.682457336 -0600 MDT m=+800.054486086] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:44.256806707 -0600 MDT m=+801.628835462]) +2019/06/14 13:48:44 Blocking empty list... +2019/06/14 13:48:45 Blocking empty list... +2019/06/14 13:48:45 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:44.256806707 -0600 MDT m=+801.628835462] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:45.967221097 -0600 MDT m=+803.339249831]) +2019/06/14 13:48:46 Blocking empty list... +2019/06/14 13:48:47 Blocking empty list... +2019/06/14 13:48:47 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:45.967221097 -0600 MDT m=+803.339249831] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:47.517339333 -0600 MDT m=+804.889368069]) +2019/06/14 13:48:48 Blocking empty list... +2019/06/14 13:48:48 parse watched +2019/06/14 13:48:49 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:47.517339333 -0600 MDT m=+804.889368069] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:49.118780967 -0600 MDT m=+806.490809704]) +2019/06/14 13:48:49 Blocking empty list... +2019/06/14 13:48:50 parse watched +2019/06/14 13:48:50 Blocking empty list... +2019/06/14 13:48:50 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:49.118780967 -0600 MDT m=+806.490809704] == [bid:Next Item on title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:50.667028521 -0600 MDT m=+808.039057254]) +2019/06/14 13:48:51 Blocking empty list... +2019/06/14 13:48:51 parse watched +2019/06/14 13:48:52 DETAIL $7,689 $24,039 +2019/06/14 13:48:52 false = ([bid:Next Item on title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:50.667028521 -0600 MDT m=+808.039057254] == [bid:$1,650 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:52.297679181 -0600 MDT m=+809.669707932]) +2019/06/14 13:48:52 DETAIL 1.8L 4 3.6L 6 +2019/06/14 13:48:52 Blocking empty list... +2019/06/14 13:48:52 TOP +2019/06/14 13:48:52 parse watched +2019/06/14 13:48:52 C [bid:$1,650 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:52.994021004 -0600 MDT m=+810.366049754] +2019/06/14 13:48:53 Blocking empty list... +2019/06/14 13:48:54 parse watched +2019/06/14 13:48:54 Blocking empty list... +2019/06/14 13:48:54 true = ([bid:$1,650 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:52.994021004 -0600 MDT m=+810.366049754] == [bid:Bid title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:54.583269582 -0600 MDT m=+811.955298323]) +2019/06/14 13:48:55 Blocking empty list... +2019/06/14 13:48:55 parse watched +2019/06/14 13:48:56 true = ([bid:Bid title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:54.583269582 -0600 MDT m=+811.955298323] == [bid:$1,700 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:56.181033887 -0600 MDT m=+813.553062652]) +2019/06/14 13:48:56 Blocking empty list... +2019/06/14 13:48:57 parse watched +2019/06/14 13:48:57 Blocking empty list... +2019/06/14 13:48:57 true = ([bid:$1,700 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:56.181033887 -0600 MDT m=+813.553062652] == [bid:$1,800 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:57.784934977 -0600 MDT m=+815.156963727]) +2019/06/14 13:48:58 Blocking empty list... +2019/06/14 13:48:58 parse watched +2019/06/14 13:48:59 Blocking empty list... +2019/06/14 13:48:59 true = ([bid:$1,800 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:57.784934977 -0600 MDT m=+815.156963727] == [bid:$1,850 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:59.373646279 -0600 MDT m=+816.745675026]) +2019/06/14 13:49:00 Blocking empty list... +2019/06/14 13:49:00 parse watched +2019/06/14 13:49:00 true = ([bid:$1,850 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:59.373646279 -0600 MDT m=+816.745675026] == [bid:$1,900 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:49:00.956853996 -0600 MDT m=+818.328882743]) +2019/06/14 13:49:01 Blocking empty list... +2019/06/14 13:49:02 parse watched +2019/06/14 13:49:02 Blocking empty list... +2019/06/14 13:49:02 true = ([bid:$1,900 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:49:00.956853996 -0600 MDT m=+818.328882743] == [bid:Bid title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:49:02.537892071 -0600 MDT m=+819.909920818]) +2019/06/14 13:49:03 Blocking empty list... +2019/06/14 13:49:03 stale element reference: stale element reference: element is not attached to the page document + (Session info: chrome=75.0.3770.80) +2019/06/14 13:49:04 Blocking empty list... +2019/06/14 13:49:05 Blocking empty list... +2019/06/14 13:49:06 Blocking empty list... diff --git a/copart/auction/.auction.go b/copart/auction/.auction.go new file mode 100644 index 0000000..8b3f35d --- /dev/null +++ b/copart/auction/.auction.go @@ -0,0 +1,132 @@ +package auction + +import ( + "encoding/json" + "local/sandbox/selenium/copart/copart/browser" + "local/sandbox/selenium/copart/copart/config" + "log" + "time" + + "github.com/tebeka/selenium" +) + +type Auction struct { + browser *browser.Browser + cars []*Car + stop bool + stopped bool +} + +func New(url string) (*Auction, error) { + b, err := browser.New() + if err != nil { + b.Close() + return nil, err + } + if err := b.Get(url); err != nil { + b.Close() + return nil, err + } + + var elems []selenium.WebElement + deadline := time.Now().Add(time.Second * 10) // TODO ctx configurable and load more later + for deadline.After(time.Now()) { + time.Sleep(time.Second) + elems, err = b.Driver.FindElements("xpath", "//iframe") + if err != nil { + b.Close() + return nil, err + } + if len(elems) > 0 { + break + } + } + if time.Now().After(deadline) { + b.Close() + return nil, b.Close() + } + url, err = elems[0].GetAttribute("src") + if err != nil { + b.Close() + return nil, err + } + if err := b.Get(url); err != nil { + b.Close() + return nil, err + } + + return &Auction{ + browser: b, + cars: []*Car{}, + }, nil +} + +func (a *Auction) Start() error { + log.Println("START", a.stop) + go func() { + defer func() { + a.stopped = true + }() + for !a.stop { + log.Println("TOP") + c := NewCar() + if err := c.Parse(a.browser.Driver); err != nil { + log.Println(err) + return + } + log.Println("C", c) + for !a.stop { + time.Sleep(time.Second) + d := NewCar() + if err := d.Parse(a.browser.Driver); err != nil { + log.Println(err) + return + } + log.Printf("%v = (%v == %v)", c.Equals(d), c.String(), d.String()) + if !c.Equals(d) { + break + } + c = d + } + b, err := c.Encode() + if err != nil { + log.Println(err) + return + } + if err := config.Values().DB.Set(c.String(), b); err != nil { + log.Println(err) + return + } + var list []string + if b, err := config.Values().DB.Get("LIST"); err != nil { + log.Println(err) + return + } else if err := json.Unmarshal(b, &list); err != nil { + log.Println(err) + return + } else { + list = append(list, c.String()) + b, _ := json.Marshal(list) + if err := config.Values().DB.Set("LIST", b); err != nil { + log.Println(err) + return + } + } + } + }() + return nil +} + +func (a *Auction) Stop() error { + if a == nil { + return nil + } + a.stop = true + for !a.stopped { + time.Sleep(time.Second) + } + if a.browser == nil || a.browser.Driver == nil { + return nil + } + return a.browser.Driver.Close() +} diff --git a/copart/auction/auction.go b/copart/auction/auction.go new file mode 100644 index 0000000..30b0f01 --- /dev/null +++ b/copart/auction/auction.go @@ -0,0 +1,222 @@ +package auction + +import ( + "context" + "encoding/json" + "errors" + "local/sandbox/selenium/copart/copart/browser" + "local/sandbox/selenium/copart/copart/config" + "local/storage" + "log" + "strconv" + "strings" + "time" +) + +type Auction struct { + browser *browser.Browser + cars chan *Car + ctx context.Context + can context.CancelFunc + routines chan struct{} +} + +func New(b *browser.Browser, url string) (*Auction, error) { + if err := b.Get(url); err != nil { + b.Close() + return nil, err + } + + ctx, can := context.WithTimeout(context.Background(), time.Second*10) + defer can() + + var elem WebElement + for err := ctx.Err(); err == nil; err = ctx.Err() { + elem, err = b.Driver.FindElement("xpath", "//iframe") + if err == nil { + break + } + time.Sleep(time.Second) + } + if err := ctx.Err(); err != nil { + b.Close() + return nil, err + } + + iframeURL, err := elem.GetAttribute("src") + if err != nil { + b.Close() + return nil, err + } else if iframeURL == "" { + b.Close() + return nil, errors.New("auction iframe has no src") + } + + if err := b.Get(iframeURL); err != nil { + b.Close() + return nil, err + } + + ctx, can = context.WithCancel(context.Background()) + return &Auction{ + browser: b, + cars: make(chan *Car), + ctx: ctx, + can: can, + routines: make(chan struct{}, 5), + }, nil +} + +func (a *Auction) Start() error { + go a.parseCars() + a.routines <- struct{}{} + go a.saveCars() + a.routines <- struct{}{} + return nil +} + +func (a *Auction) parseCars() error { + log.Printf("[parseCars] starting") + defer func() { + if err := recover(); err != nil { + log.Println("[parseCars] recover:", err) + } + log.Printf("[parseCars] stopping") + close(a.cars) + a.can() + a.routines <- struct{}{} + }() + for err := a.ctx.Err(); err == nil; err = a.ctx.Err() { + c, err := a.nextCar() + if err != nil { + panic(err) + } + log.Printf("[parseCars] found car %v", c.String()) + if !strings.Contains(c.Bid, "$") { + continue + } + if b, _ := c.MarshalJSON(); strings.Contains(strings.ToLower(string(b)), ", hi") { + continue + } else if strings.Contains(strings.ToLower(string(b)), "guam") { + continue + } else if len(c.Title) < 4 { + continue + } else if v, err := strconv.Atoi(c.Title[:4]); err != nil { + continue + } else if v+5 < time.Now().Year() { + continue + } + select { + case a.cars <- c: + case <-a.ctx.Done(): + panic(a.ctx.Err()) + } + } + return a.ctx.Err() +} + +func (a *Auction) nextCar() (*Car, error) { + c := NewCar() + if err := c.Parse(a.browser.Driver); err != nil { + if !strings.Contains(err.Error(), "stale element") { + return nil, err + } else { + return a.nextCar() + } + } + for err := a.ctx.Err(); err == nil; err = a.ctx.Err() { + time.Sleep(time.Second * 2) + d := NewCar() + if err := d.Parse(a.browser.Driver); err != nil { + if !strings.Contains(err.Error(), "stale element") { + return nil, err + } + } + if !c.Equals(d) { + return c, nil + } + if d.Bid != "" { + c = d + } + } + return nil, a.ctx.Err() +} + +func (a *Auction) saveCars() error { + log.Printf("[saveCars] starting") + defer func() { + if err := recover(); err != nil { + log.Println("[saveCars] recover:", err) + } + log.Printf("[saveCars] stopping") + a.can() + a.routines <- struct{}{} + }() + for err := a.ctx.Err(); err == nil; err = a.ctx.Err() { + select { + case <-a.ctx.Done(): + panic(a.ctx.Err()) + case c := <-a.cars: + go func(d *Car) { + if d == nil { + return + } + log.Printf("[saveCars] saving %v", d.String()) + if err := a.saveCar(d); err != nil { + log.Printf("[saveCars] err: %v", err) + } + }(c) + } + } + return a.ctx.Err() +} + +func (a *Auction) saveCar(c *Car) error { + db := config.Values().DB + + b, err := c.Encode() + if err != nil { + return err + } + + if err := db.Set(c.String(), b); err != nil { + return err + } + + var list []string + b, err = db.Get("LIST") + if err == storage.ErrNotFound { + b = []byte("[]") + } else if err != nil { + return err + } + if err := json.Unmarshal(b, &list); err != nil { + return err + } + + list = append([]string{c.String()}, list...) + if b, err := json.Marshal(list); err != nil { + return err + } else if err := db.Set("LIST", b); err != nil { + return err + } + + return nil +} + +func (a *Auction) Stop() error { + l := len(a.routines) + a.can() + ctx, can := context.WithTimeout(context.Background(), time.Second*5) + defer can() + for i := 0; i < 2*l; i++ { + select { + case <-a.routines: + case <-ctx.Done(): + } + } + if len(a.routines) > 0 { + return errors.New("not all routines exited") + } + return nil +} diff --git a/copart/auction/auction_test.go b/copart/auction/auction_test.go new file mode 100644 index 0000000..ee58cde --- /dev/null +++ b/copart/auction/auction_test.go @@ -0,0 +1,185 @@ +package auction + +import ( + "context" + "crypto/rand" + "fmt" + "local/sandbox/selenium/copart/copart/browser" + "local/sandbox/selenium/copart/copart/config" + "math/big" + "net/url" + "os" + "strings" + "sync" + "testing" + "time" +) + +func randStr() string { + n := 3 + letters := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + k := big.NewInt(int64(len(letters))) + b := make([]byte, n) + for i := 0; i < n; i++ { + j, _ := rand.Int(rand.Reader, k) + b[i] = letters[int(j.Int64())] + } + return string(b) +} + +func randomAuctionBody() []browser.MockElement { + return []browser.MockElement{browser.MockElement{ + Attrs: map[string]string{ + "src": "anything", + }, + Ret: map[string][]browser.MockElement{ + "//bidding-dialer-refactor": []browser.MockElement{browser.MockElement{ + Ret: map[string][]browser.MockElement{ + "text": []browser.MockElement{browser.MockElement{ + Txt: "$bid" + randStr(), + }}, + }, + }}, + "//lot-details-primary-refactored": []browser.MockElement{browser.MockElement{ + Ret: map[string][]browser.MockElement{ + "label": []browser.MockElement{browser.MockElement{ + Txt: "label" + randStr(), + Ret: map[string][]browser.MockElement{ + "../div[1]": []browser.MockElement{browser.MockElement{ + Txt: "value" + randStr(), + }}, + }, + }}, + }, + }}, + "//lot-details-secondary-refactored": []browser.MockElement{browser.MockElement{ + Ret: map[string][]browser.MockElement{ + "label": []browser.MockElement{browser.MockElement{ + Txt: "label" + randStr(), + Ret: map[string][]browser.MockElement{ + "../div[1]": []browser.MockElement{browser.MockElement{ + Txt: "value" + randStr(), + }}, + }, + }}, + }, + }}, + "//ngx-carousel": []browser.MockElement{browser.MockElement{ + Ret: map[string][]browser.MockElement{ + "ngx-item": []browser.MockElement{}, + }, + }}, + "//lot-header": []browser.MockElement{browser.MockElement{ + Ret: map[string][]browser.MockElement{ + "section": []browser.MockElement{browser.MockElement{ + Ret: map[string][]browser.MockElement{ + "div": []browser.MockElement{browser.MockElement{ + Ret: map[string][]browser.MockElement{ + "div": []browser.MockElement{browser.MockElement{ + Txt: "title" + randStr(), + }}, + }, + }}, + }, + }}, + }, + }}, + "//widget-header-sale": []browser.MockElement{browser.MockElement{ + Ret: map[string][]browser.MockElement{ + ".//div[@class=\"watchlist\"]": []browser.MockElement{}, + }, + }}, + }, + }} +} + +func mockAuction() (*Auction, context.CancelFunc) { + m := &sync.Map{} + r := randomAuctionBody() + m.Store("body", r) + go func() { + time.Sleep(time.Second * 2) + m.Store("//iframe", r) + }() + driver := browser.NewMockDriver(m) + ctx, can := context.WithCancel(context.Background()) + go func() { + for ctx.Err() == nil { + time.Sleep(time.Millisecond * 100) + m.Store("body", randomAuctionBody()) + } + }() + return &Auction{ + browser: &browser.Browser{Driver: driver}, + cars: make(chan *Car), + ctx: ctx, + can: can, + routines: make(chan struct{}, 5), + }, can +} + +func TestNewAuction(t *testing.T) { + a, can := mockAuction() + defer can() + b := a.browser + + if _, err := New(b, "any"); err != nil { + t.Fatal(err) + } +} + +func TestAuctionStartStop(t *testing.T) { + a, can := mockAuction() + defer can() + if err := a.Start(); err != nil { + t.Fatal(err) + } + if len(a.routines) != 2 { + t.Fatal("not 2 routines") + } + if err := a.Stop(); err != nil { + t.Fatal(err) + } +} + +func TestAuctionSaveCar(t *testing.T) { + os.Args = []string{"a", "-db", "map"} + config.New() + a, can := mockAuction() + defer can() + c := NewCar() + c.Bid = "123" + c.Title = "abc" + c.Details = map[string]string{ + "x": "y", + } + c.Images = []*Image{&Image{Src: &url.URL{Host: "img"}}} + d := NewCar() + if err := a.saveCar(c); err != nil { + t.Fatal(err) + } + if b, err := config.Values().DB.Get("LIST"); err != nil { + t.Fatal(err) + } else if !strings.Contains(string(b), c.String()) { + t.Fatal("list does not contain new car") + } + if b, err := config.Values().DB.Get(c.String()); err != nil { + t.Fatal(err) + } else if err := d.Decode(b); err != nil { + t.Fatal(err) + } else if !c.Equals(d) { + t.Fatal("saved car != fetched car") + } +} + +func TestAuctionNextCar(t *testing.T) { + os.Args = []string{"a", "-db", "map"} + config.New() + a, can := mockAuction() + defer can() + if c, err := a.nextCar(); err != nil { + t.Fatal(err) + } else if c == nil || fmt.Sprintf("%v", *c) == fmt.Sprintf("%v", Car{}) { + t.Fatal("parsed car is nil") + } +} diff --git a/copart/auction/car.go b/copart/auction/car.go new file mode 100644 index 0000000..677445f --- /dev/null +++ b/copart/auction/car.go @@ -0,0 +1,251 @@ +package auction + +import ( + "bytes" + "encoding/gob" + "encoding/json" + "errors" + "fmt" + "net/url" + "strings" + "time" +) + +type Car struct { + Bid string + Details map[string]string + Images []*Image + Title string + Watched bool + TS time.Time +} + +type CarOption func(*Car) + +func NewCar(options ...CarOption) *Car { + c := &Car{ + Details: map[string]string{}, + Images: []*Image{}, + } + c.parseTS(nil) + for _, opt := range options { + opt(c) + } + return c +} + +func (c *Car) MarshalJSON() ([]byte, error) { + m := map[string]interface{}{} + m["bid"] = c.Bid + m["details"] = c.Details + m["images"] = c.Images + m["title"] = c.Title + m["TS"] = c.TS.Format("2006-01-02") + return json.Marshal(m) +} + +func (c *Car) Encode() ([]byte, error) { + buff := bytes.NewBuffer(nil) + enc := gob.NewEncoder(buff) + err := enc.Encode(c) + return buff.Bytes(), err +} + +func (c *Car) Decode(b []byte) error { + buff := bytes.NewBuffer(b) + enc := gob.NewDecoder(buff) + return enc.Decode(c) +} + +func (c *Car) Copy() *Car { + d := *c + return &d +} + +func (c *Car) Equals(d *Car) bool { + if c == d { + return true + } + if d == nil && c != nil { + return false + } + if c == nil && d != nil { + return false + } + for k, v := range c.Details { + if w, ok := d.Details[k]; ok && w != v { + return false + } + } + for k, v := range c.Details { + if w, ok := c.Details[k]; ok && w != v { + return false + } + } + if c.Title != d.Title { + return false + } + return true +} + +func (c *Car) String() string { + return fmt.Sprintf( + "[bid:%v title:%v watched:%v images:%v when:%v]", + c.Bid, + c.Title, + c.Watched, + len(c.Images), + c.TS, + ) +} + +func (c *Car) Parse(wd WebDriver) error { + we, err := wd.FindElement("tag name", "body") + if err != nil { + return err + } + do := []func(WebElement) error{ + c.parseTitle, + c.parseBid, + c.parseWatched, + c.parseImages, + c.parseDetails, + c.parseTS, + } + for _, d := range do { + if err := d(we); err != nil { + return err + } + } + return nil +} + +func (c *Car) parseTS(WebElement) error { + c.TS = time.Now() + return nil +} + +func (c *Car) parseBid(wd WebElement) error { + elem := waitForXPath(wd, "//bidding-dialer-refactor") + + elem, err := elem.FindElement("tag name", "text") + if err != nil { + return err + } + + text, err := elem.Text() + if err != nil { + return err + } + + if strings.Contains(text, "$") { + c.Bid = text + } + return nil +} + +func (c *Car) parseDetails(wd WebElement) error { + details := make(map[string]string) + + elems, err := wd.FindElements("tag name", "perfect-scrollbar") + if err != nil { + return err + } + if len(elems) > 2 { + elems = elems[:2] + } + + for _, elem := range elems { + labels, err := elem.FindElements("tag name", "label") + if err != nil { + return err + } + for _, label := range labels { + ltext, err := label.Text() + if err != nil { + return err + } + if ltext == "" { + continue + } + value, err := label.FindElement("xpath", "../div[1]") + if err != nil { + return err + } + vtext, err := value.Text() + if err != nil { + return err + } + + details[ltext] = vtext + } + } + + if len(details) > 0 { + c.Details = details + } + return nil +} + +func (c *Car) parseImages(wd WebElement) error { + elem := waitForXPath(wd, "//ngx-carousel") + + elems, err := elem.FindElements("tag name", "ngx-item") + if err != nil { + return err + } + if len(elems) == 0 { + return err + } + + images := make([]*Image, 0) + for _, elem := range elems { + elems, err := elem.FindElements("tag name", "img") + if err != nil { + return err + } + for _, img := range elems { + attr, err := img.GetAttribute("src") + if err != nil { + return err + } + url, err := url.Parse(attr) + if err != nil { + return err + } + images = append(images, NewImage(url)) + } + } + + c.Images = images + return nil +} + +func (c *Car) parseTitle(wd WebElement) error { + elem := waitForXPath(wd, "//lot-header") + + elem = followTags(elem, "section", "div", "div") + if elem == nil { + return errors.New("not found") + } + + text, err := elem.Text() + if err != nil { + return err + } + + c.Title = text + return nil +} + +func (c *Car) parseWatched(wd WebElement) error { + elem := waitForXPath(wd, "//widget-header-sale") + + elems, err := elem.FindElements("tag name", ".//div[@class=\"watchlist\"]") + if err != nil { + return err + } + + c.Watched = len(elems) > 0 + return nil +} diff --git a/copart/auction/car_test.go b/copart/auction/car_test.go new file mode 100644 index 0000000..4e669b2 --- /dev/null +++ b/copart/auction/car_test.go @@ -0,0 +1,36 @@ +package auction + +import "testing" + +func TestCar(t *testing.T) { + c := NewCar() + c.Title = "title" + c.Bid = "bid" + c.Watched = true + c.Details = map[string]string{"a": "b"} + d := c.Copy() + if !c.Equals(d) { + t.Errorf("equals failed post copy") + } + c.Details = map[string]string{"a": "c"} + if c.Equals(d) { + t.Errorf("equals passes post edit") + } + t.Log(c.String()) + + b, err := c.Encode() + if err != nil { + t.Fatal(err) + } + e := NewCar() + if err := e.Decode(b); err != nil { + t.Fatal(err) + } + if !c.Equals(e) { + t.Fatalf("decoded != encoded: %v vs %v", c, e) + } + + if _, err := c.MarshalJSON(); err != nil { + t.Fatal(err) + } +} diff --git a/copart/auction/image.go b/copart/auction/image.go new file mode 100644 index 0000000..322a37c --- /dev/null +++ b/copart/auction/image.go @@ -0,0 +1,39 @@ +package auction + +import ( + "encoding/json" + "io/ioutil" + "net/http" + "net/url" + "os" +) + +type Image struct { + Raw []byte + Src *url.URL +} + +func NewImage(url *url.URL) *Image { + return &Image{ + Src: url, + } +} + +func (img *Image) MarshalJSON() ([]byte, error) { + return json.Marshal(img.Src.String()) +} + +func (img *Image) Fetch() error { + resp, err := http.Get(img.Src.String()) + if err != nil { + return err + } + defer resp.Body.Close() + Raw, err := ioutil.ReadAll(resp.Body) + img.Raw = Raw + return err +} + +func (img *Image) Save(path string) error { + return ioutil.WriteFile(path, img.Raw, os.ModePerm) +} diff --git a/copart/auction/today.go b/copart/auction/today.go new file mode 100644 index 0000000..b2bae29 --- /dev/null +++ b/copart/auction/today.go @@ -0,0 +1,231 @@ +package auction + +import ( + "context" + "local/sandbox/selenium/copart/copart/browser" + "local/sandbox/selenium/copart/copart/config" + "local/storage" + "log" + "os" + "strings" + "syscall" + "time" + + "golang.org/x/time/rate" +) + +type Today struct { + today *browser.Browser + Auctions []*Auction + ctx context.Context + can context.CancelFunc + routines chan struct{} + sigc chan os.Signal +} + +func NewToday(sigc chan os.Signal) (*Today, error) { + today, err := today() + if err != nil { + today.Close() + return nil, err + } + + if _, err := config.Values().DB.Get("LIST"); err == storage.ErrNotFound { + if err := config.Values().DB.Set("LIST", []byte("[]")); err != nil { + today.Close() + return nil, err + } + } else if err != nil { + today.Close() + return nil, err + } + + deadline := time.Now() + deadline = deadline.Add(time.Hour * 24) + deadline = deadline.Add(time.Duration(-1*time.Now().Hour()) * time.Hour) + ctx, can := context.WithDeadline(context.Background(), deadline) + return &Today{ + today: today, + Auctions: make([]*Auction, 0), + ctx: ctx, + can: can, + routines: make(chan struct{}, 10), + sigc: sigc, + }, nil +} + +func today() (*browser.Browser, error) { + today, err := browser.New() + if err != nil { + return today, err + } + if err := today.Get("https://www.copart.com/todaysAuction/"); err != nil { + return today, err + } + return today, nil +} + +func (t *Today) Start() error { + ch := make(chan string) + go t.watchAuctionList(ch) + t.routines <- struct{}{} + go t.startAuctions(ch) + t.routines <- struct{}{} + return t.ctx.Err() +} + +func (t *Today) watchAuctionList(ch chan string) { + log.Printf("[watchAuctionList] starting") + defer func() { + if err := recover(); err != nil { + log.Println("[watchAuctionList] recover:", err) + } + log.Printf("[watchAuctionList] stopping") + t.routines <- struct{}{} + t.Stop() + }() + found := make(map[string]struct{}) + retryCD := 3 + for err := t.ctx.Err(); err == nil; err = t.ctx.Err() { + elems, err := t.today.Driver.FindElements("link text", "Join Auction") + if err != nil { + panic(err) + } + log.Printf("[watchAuctionList] found %v", len(elems)) + + for _, elem := range elems { + url, err := elem.GetAttribute("href") + if err != nil { + panic(err) + } + key := time.Now().Format("2006-01-02") + url + if _, ok := found[key]; ok { + log.Printf("[watchAuctionList] skipping %v", url) + continue + } + found[key] = struct{}{} + log.Printf("[watchAuctionList] sending %v", len(url)) + ch <- url + } + + log.Printf("[watchAuctionList] blocking 5 minutes") + select { + case <-t.ctx.Done(): + panic(t.ctx.Err()) + case <-time.After(time.Minute * 5): + retryCD -= 1 + if retryCD == 0 { + retryCD = 3 + for { + if t.ctx.Err() != nil { + panic(t.ctx.Err()) + } + err := t.today.Driver.Refresh() + if err == nil { + break + } + if strings.Contains(err.Error(), "timeout") { + select { + case <-time.After(time.Second * 15): + case <-t.ctx.Done(): + panic(t.ctx.Err()) + } + } + } + } + } + } +} + +func (t *Today) startAuctions(ch chan string) { + log.Printf("[startAuctions] starting") + defer func() { + if err := recover(); err != nil { + log.Println("[startAuctions] recover:", err) + } + log.Printf("[startAuctions] stopping") + t.routines <- struct{}{} + t.Stop() + }() + limiter := rate.NewLimiter(rate.Every(time.Second*15), 1) + for { + select { + case <-t.ctx.Done(): + panic(t.ctx.Err()) + case url := <-ch: + if err := limiter.Wait(t.ctx); err != nil { + panic(err) + } + log.Printf("[startAuctions] spawning %v", url) + b, err := browser.New() + if err != nil { + time.Sleep(time.Second * 15) + if err := limiter.Wait(t.ctx); err != nil { + panic(err) + } + b, err = browser.New() + if err != nil { + panic(err) + } + } + a, err := New(b, url) + if a != nil { + t.Auctions = append(t.Auctions, a) + } + if err != nil { + log.Println("[startAuctions] failed to New:", err) + } else if err := a.Start(); err != nil { + log.Println("[startAuctions] failed to New().Start:", err) + } else { + log.Printf("[startAuctions] spawned %v", url) + } + } + } +} + +func (t *Today) Stop() error { + last := make(chan error) + if t == nil { + return nil + } + l := len(t.routines) + t.can() + ctx, can := context.WithTimeout(context.Background(), time.Second*10) + defer can() + for i := 0; i < l*2; i++ { + select { + case <-t.routines: + case <-ctx.Done(): + select { + case last <- ctx.Err(): + default: + } + } + } + for _, a := range t.Auctions { + go func() { + if err := a.Stop(); err != nil { + select { + case last <- err: + case <-time.After(time.Second * 5): + } + } + }() + } + if err := t.today.Driver.Close(); err != nil { + select { + case last <- err: + default: + } + } + var err error + select { + case err = <-last: + case <-time.After(time.Second * 5): + } + select { + case t.sigc <- syscall.SIGHUP: + default: + } + return err +} diff --git a/copart/auction/webdriver.go b/copart/auction/webdriver.go new file mode 100644 index 0000000..274d906 --- /dev/null +++ b/copart/auction/webdriver.go @@ -0,0 +1,46 @@ +package auction + +import ( + "local/sandbox/selenium/copart/copart/browser" + "time" + + "github.com/tebeka/selenium" +) + +type WebDriver interface { + browser.WebDriver +} + +type WebElement interface { + selenium.WebElement +} + +func waitForXPath(wd WebElement, path string) selenium.WebElement { + var we selenium.WebElement + test := func() bool { + v, err := wd.FindElements("xpath", path) + if err != nil { + return false + } + if len(v) < 1 { + return false + } + we = v[0] + return true + } + for !test() { + time.Sleep(1) + } + return we +} + +func followTags(wd WebElement, tag ...string) selenium.WebElement { + for _, t := range tag { + var err error + wd, err = wd.FindElement("tag name", t) + if err != nil { + return nil + } + } + return wd +} diff --git a/copart/browser/browser.go b/copart/browser/browser.go new file mode 100644 index 0000000..6272908 --- /dev/null +++ b/copart/browser/browser.go @@ -0,0 +1,71 @@ +package browser + +import ( + "fmt" + "strings" + "time" + + "github.com/tebeka/selenium" +) + +type WebDriver interface { + Get(string) error + Quit() error + Close() error + FindElement(string, string) (selenium.WebElement, error) + FindElements(string, string) ([]selenium.WebElement, error) + Refresh() error +} + +type WebElement interface { + FindElement(string, string) (selenium.WebElement, error) + FindElements(string, string) ([]selenium.WebElement, error) + Text() (string, error) + GetAttribute(string) (string, error) +} + +type Browser struct { + Driver WebDriver +} + +func New() (*Browser, error) { + var Driver selenium.WebDriver + var err error + caps := selenium.Capabilities{"browserName": "chrome"} + //caps := selenium.Capabilities{"browserName": "firefox"} + for i := 0; i < 5; i++ { + Driver, err = selenium.NewRemote(caps, fmt.Sprintf("http://localhost:%v/wd/hub", 4444)) + if err != nil { + if strings.Contains(err.Error(), "connection refused") { + time.Sleep(time.Second * time.Duration(i+1)) + continue + } + if strings.Contains(err.Error(), "timeout") { + time.Sleep(time.Second * time.Duration(i+1)) + continue + } + return nil, err + } + } + + return &Browser{ + Driver: Driver, + }, err +} + +func (b *Browser) Get(addr string) error { + return b.Driver.Get(addr) +} + +func (b *Browser) Close() error { + if b == nil || b.Driver == nil { + return nil + } + if err := b.Driver.Close(); err != nil { + return err + } + if err := b.Driver.Quit(); err != nil { + return err + } + return nil +} diff --git a/copart/browser/browser_test.go b/copart/browser/browser_test.go new file mode 100644 index 0000000..245e504 --- /dev/null +++ b/copart/browser/browser_test.go @@ -0,0 +1,25 @@ +package browser + +import ( + "testing" +) + +func TestNew(t *testing.T) { + browser, err := New() + if err != nil { + t.Fatal(err) + } + defer browser.Close() + + if err := browser.Driver.Get("https://www.google.com"); err != nil { + t.Fatal(err) + } + + elem, err := browser.Driver.FindElement("tag name", "body") + if err != nil { + t.Fatal(err) + } + if elem == nil { + t.Fatal(err) + } +} diff --git a/copart/browser/mockselenium.go b/copart/browser/mockselenium.go new file mode 100644 index 0000000..6ddc6dd --- /dev/null +++ b/copart/browser/mockselenium.go @@ -0,0 +1,91 @@ +package browser + +import ( + "errors" + "local/storage" + "sync" + + "github.com/tebeka/selenium" +) + +type MockDriver struct { + Ret *sync.Map +} + +var notImpl = errors.New("not impl") + +func (wd MockDriver) Quit() error { return nil } +func (wd MockDriver) Close() error { return nil } +func (wd MockDriver) Get(string) error { return nil } +func (wd MockDriver) GetCookies() ([]selenium.Cookie, error) { return []selenium.Cookie{}, nil } +func (wd MockDriver) GetCookie(string) (selenium.Cookie, error) { return selenium.Cookie{}, nil } +func (wd MockDriver) AddCookie(*selenium.Cookie) error { return nil } +func (wd MockDriver) FindElement(_ string, key string) (selenium.WebElement, error) { + v, err := wd.FindElements("", key) + if err != nil { + return nil, err + } + return v[0], nil +} +func (wd MockDriver) FindElements(_ string, key string) ([]selenium.WebElement, error) { + we := []selenium.WebElement{} + if v, ok := wd.Ret.Load(key); ok { + w, _ := v.([]MockElement) + for i := range w { + we = append(we, w[i]) + } + return we, nil + } + return nil, storage.ErrNotFound +} + +type MockElement struct { + selenium.WebElement + Ret map[string][]MockElement + Txt string + Attrs map[string]string +} + +func (we MockElement) FindElement(_ string, key string) (selenium.WebElement, error) { + v, err := we.FindElements("", key) + if err != nil { + return nil, err + } + return v[0], nil +} +func (we MockElement) FindElements(_ string, key string) ([]selenium.WebElement, error) { + elems := []selenium.WebElement{} + if v, ok := we.Ret[key]; ok { + for i := range v { + elems = append(elems, v[i]) + } + return elems, nil + } + return nil, storage.ErrNotFound +} +func (we MockElement) Text() (string, error) { return we.Txt, nil } +func (we MockElement) GetAttribute(key string) (string, error) { + v, _ := we.Attrs[key] + return v, nil +} + +func (we MockElement) Click() error { return notImpl } +func (we MockElement) SendKeys(keys string) error { return notImpl } +func (we MockElement) Submit() error { return notImpl } +func (we MockElement) Clear() error { return notImpl } +func (we MockElement) MoveTo(int, int) error { return notImpl } +func (we MockElement) TagName() (string, error) { return "", notImpl } +func (we MockElement) IsSelected() (bool, error) { return false, notImpl } +func (we MockElement) IsEnabled() (bool, error) { return false, notImpl } +func (we MockElement) IsDisplayed() (bool, error) { return false, notImpl } +func (we MockElement) Location() (*selenium.Point, error) { return nil, notImpl } +func (we MockElement) LocationInView() (*selenium.Point, error) { return nil, notImpl } +func (we MockElement) Size() (*selenium.Size, error) { return nil, notImpl } +func (we MockElement) CSSProperty(name string) (string, error) { return "", notImpl } +func (we MockElement) Screenshot(bool) ([]byte, error) { return nil, notImpl } + +func NewMockDriver(elements *sync.Map) *MockDriver { + return &MockDriver{ + Ret: elements, + } +} diff --git a/copart/browser/mockselenium_test.go b/copart/browser/mockselenium_test.go new file mode 100644 index 0000000..9665ff2 --- /dev/null +++ b/copart/browser/mockselenium_test.go @@ -0,0 +1,17 @@ +package browser + +import ( + "testing" + + "github.com/tebeka/selenium" +) + +func TestMockSeleniumInterfaces(t *testing.T) { + var wd WebDriver + wd = MockDriver{} + + var we selenium.WebElement + we = MockElement{} + + t.Log(wd, we) +} diff --git a/copart/endpoint_test.go b/copart/endpoint_test.go new file mode 100644 index 0000000..c3a0fe2 --- /dev/null +++ b/copart/endpoint_test.go @@ -0,0 +1,84 @@ +package copart + +import ( + "bytes" + "fmt" + "io/ioutil" + "local/router" + "net/http" + "net/http/httptest" + "os/exec" + "path" + "runtime" + "strings" + "testing" + "time" +) + +func StartServer() *http.Server { + _, filename, _, _ := runtime.Caller(0) + dir := path.Dir(filename) + html := path.Join(dir, "testdata", "sample_auction_live.html") + b, _ := ioutil.ReadFile(html) + + handler := func(w http.ResponseWriter, r *http.Request) { + w.Write(b) + } + + s := router.New() + s.Add(router.Wildcard, handler) + s.Add("/", handler) + + port := getPort() + + cmd := exec.Command("bash", "-c", `ifconfig en0 | grep -o '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*' | head -n 1`) + out := bytes.NewBuffer(nil) + cmd.Stdout = out + if err := cmd.Run(); err != nil { + panic(err) + } + if len(out.Bytes()) < 1 { + cmd := exec.Command("bash", "-c", `ifconfig eno1 | grep -o '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*' | head -n 1`) + cmd.Stdout = out + if err := cmd.Run(); err != nil { + panic(err) + } + } + url := fmt.Sprintf("http://%s:%s", strings.TrimSpace(string(out.Bytes())), port) + + srv := &http.Server{ + Addr: ":" + port, + Handler: s, + } + go func() { + if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed { + panic(err) + } + }() + for { + if _, err := http.Get(url); err == nil { + break + } + time.Sleep(time.Millisecond * 250) + } + srv.Addr = url + return srv +} + +func getPort() string { + s := httptest.NewServer(nil) + s.Close() + time.Sleep(time.Millisecond * 2500) + seg := strings.Split(s.URL, ":") + return seg[len(seg)-1] +} + +func TestStartServer(t *testing.T) { + s := StartServer() + defer s.Close() + resp, _ := http.Get(s.Addr) + b, _ := ioutil.ReadAll(resp.Body) + if len(b) < 1 { + t.Fatalf("failed to start fake auction server") + } +} diff --git a/copart/out2.db b/copart/out2.db new file mode 100644 index 0000000..e449c28 Binary files /dev/null and b/copart/out2.db differ diff --git a/copart/selenium_test.go b/copart/selenium_test.go new file mode 100644 index 0000000..71d1733 --- /dev/null +++ b/copart/selenium_test.go @@ -0,0 +1,90 @@ +package copart + +import ( + "encoding/json" + "local/sandbox/selenium/copart/copart/auction" + "local/sandbox/selenium/copart/copart/browser" + "local/sandbox/selenium/copart/copart/config" + "log" + "os" + "testing" + "time" +) + +func TestSelenium(t *testing.T) { + s := StartServer() + defer s.Close() + log.Printf("started faux auctions on %s", s.Addr) + + b, err := browser.New() + if err != nil { + t.Fatal(err) + } + log.Println("made browser", s.Addr) + + if err := b.Get(s.Addr); err != nil { + t.Fatal(err) + } + log.Printf("navigated to %s", s.Addr) + + c := auction.NewCar() + if err := c.Parse(b.Driver); err != nil { + t.Fatal(err) + } + log.Printf("parsed car %s", c.String()) + log.Println(c.Details) +} + +func TestReal(t *testing.T) { + os.Args = []string{ + "a", + "-addr", + "./out2.db", + "-db", + "map", + } + + if err := config.New(); err != nil { + t.Fatal(err) + } + + log.Println("Creating today...") + today, err := auction.NewToday() + if err != nil { + t.Fatal(err) + } + log.Println("Starting today...") + if err := today.Start(); err != nil { + t.Fatal(err) + } + + for { + log.Println("Blocking empty list...") + time.Sleep(time.Second) + var list []string + if b, err := config.Values().DB.Get("LIST"); err != nil { + t.Fatal(err) + } else if err := json.Unmarshal(b, &list); err != nil { + t.Fatal(err) + } else if len(list) < 2 { + continue + } else { + log.Println("Dumping from list...") + for _, id := range list { + c := auction.NewCar() + if b, err := config.Values().DB.Get(id); err != nil { + t.Fatal(err) + } else if err := c.Decode(b); err != nil { + t.Fatal(err) + } else { + log.Println(c.String()) + } + } + break + } + } + + if err := today.Stop(); err != nil { + t.Fatal(err) + } +} diff --git a/copart/testdata/bolt.db b/copart/testdata/bolt.db new file mode 100644 index 0000000..155c83f Binary files /dev/null and b/copart/testdata/bolt.db differ diff --git a/copart/testdata/fix.go b/copart/testdata/fix.go new file mode 100644 index 0000000..cc6250d --- /dev/null +++ b/copart/testdata/fix.go @@ -0,0 +1,106 @@ +package main + +import ( + "bufio" + "encoding/json" + "fmt" + "local/sandbox/selenium/copart/copart/auction" + "local/storage" + "log" + "net/url" + "os" + "regexp" + "strings" + "time" +) + +func main() { + storage.DefaultNamespace = "namespace" + s, err := storage.New(storage.BOLT, "./bolt.db") + if err != nil { + panic(err) + } + log.Println(s) + + f, err := os.Open("./log2") + if err != nil { + panic(err) + } + defer f.Close() + + list := []string{} + + scn := bufio.NewScanner(f) + for scn.Scan() { + line := scn.Text() + if strings.Contains(line, "true = ") { + continue + } + m := regexp.MustCompile("\\[[^\\]]+\\]").FindAllString(line, 2)[1] + between := func(l, a, b string) string { + form := fmt.Sprintf("%s:[^(%s)]*%s", a, b, b) + c := regexp.MustCompile(form).FindString(l) + c = strings.TrimPrefix(c, fmt.Sprintf("%s:", a)) + c = strings.TrimSuffix(c, fmt.Sprintf("%s", b)) + return strings.TrimSpace(c) + } + bid := between(m, "bid", "title") + title := between(m, "title", "watched") + when := between(m, "when", "\\]") + when = regexp.MustCompile(":[0-9][0-9]\\.[0-9].*$").ReplaceAllString(when, "") + c := auction.NewCar() + c.Bid = bid + c.Title = title + c.TS, _ = time.Parse("2006-01-02 15:04", regexp.MustCompile(":[0-9][0-9]\\.[0-9].*$").ReplaceAllString(when, "")) + c.Details = map[string]string{ + "Year": strings.Split(title, " ")[0], + } + c.Images = []*auction.Image{} + srcs := []string{} + if strings.Contains(c.Title, "CHEVROLET") { + srcs = []string{ + "https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX133/eb332bcb-4d51-422c-a317-8bfb3729f368.JPG", + "https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX133/fb3ac542-bb52-4554-98a9-3979fed5edb1.JPG", + "https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX133/5c974805-c917-495a-8481-5e697a46ac25.JPG", + } + } else if strings.Contains(c.Title, "YUKON") { + srcs = []string{ + "https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX145/c64e1510-9e81-4128-a285-e4cc45036670.JPG", + "https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX145/1ef2b374-5245-458c-a540-11ed1ea81f9b.JPG", + } + } else if strings.Contains(c.Title, "JEEP") { + srcs = []string{ + "https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX137/8c9d27d3-3642-499c-86de-0bee685e116e.JPG", + "https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX137/d7b160cc-c171-473d-851f-c92bf3a58ee6.JPG", + } + } else if strings.Contains(c.Title, "HONDA") { + srcs = []string{ + "https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX133/c9504579-3f31-4278-b020-2b1b37867c82.JPG", + } + } else if strings.Contains(c.Title, "MAZDA 3") { + srcs = []string{ + "https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX133/fbc946db-bb03-4624-b8d4-b7723722c0d5.JPG", + "https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX133/3892e997-ca0c-4270-86cb-94b98cdfd28e.JPG", + "https://cs.copart.com/v1/AUTH_svc.pdoc00001/PIX133/3bee196b-219f-4b6b-b8cf-9d2797ab5113.JPG", + } + } + for _, src := range srcs { + u, _ := url.Parse(src) + c.Images = append(c.Images, &auction.Image{Src: u}) + } + log.Println(c) + if b, err := c.Encode(); err != nil { + panic(err) + } else if err := s.Set(c.String(), b); err != nil { + panic(err) + } + list = append(list, c.String()) + } + if err := scn.Err(); err != nil { + panic(err) + } + b, _ := json.Marshal(list) + if err := s.Set("LIST", b); err != nil { + panic(err) + } +} diff --git a/copart/testdata/log b/copart/testdata/log new file mode 100644 index 0000000..8212905 --- /dev/null +++ b/copart/testdata/log @@ -0,0 +1,553 @@ +2019/06/14 13:44:33 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:32.100278808 -0600 MDT m=+549.472307556] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:33.649979402 -0600 MDT m=+551.022008143]) +2019/06/14 13:44:34 Blocking empty list... +2019/06/14 13:44:34 true = ([bid:$4,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:33.263653682 -0600 MDT m=+550.635682442] == [bid:$4,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:34.853057112 -0600 MDT m=+552.225085858]) +2019/06/14 13:44:35 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:33.649979402 -0600 MDT m=+551.022008143] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:35.209579405 -0600 MDT m=+552.581608152]) +2019/06/14 13:44:35 Blocking empty list... +2019/06/14 13:44:36 Blocking empty list... +2019/06/14 13:44:36 true = ([bid:$4,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:34.853057112 -0600 MDT m=+552.225085858] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:36.442979544 -0600 MDT m=+553.815008292]) +2019/06/14 13:44:36 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:35.209579405 -0600 MDT m=+552.581608152] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:36.765530586 -0600 MDT m=+554.137559334]) +2019/06/14 13:44:37 Blocking empty list... +2019/06/14 13:44:37 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:36.442979544 -0600 MDT m=+553.815008292] == [bid:$4,700 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:37.998799546 -0600 MDT m=+555.370828308]) +2019/06/14 13:44:38 Blocking empty list... +2019/06/14 13:44:38 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:36.765530586 -0600 MDT m=+554.137559334] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:38.309365279 -0600 MDT m=+555.681394016]) +2019/06/14 13:44:39 Blocking empty list... +2019/06/14 13:44:39 true = ([bid:$4,700 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:37.998799546 -0600 MDT m=+555.370828308] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:39.632325485 -0600 MDT m=+557.004354235]) +2019/06/14 13:44:39 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:38.309365279 -0600 MDT m=+555.681394016] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:39.876272196 -0600 MDT m=+557.248300968]) +2019/06/14 13:44:40 Blocking empty list... +2019/06/14 13:44:41 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:39.632325485 -0600 MDT m=+557.004354235] == [bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:41.210836371 -0600 MDT m=+558.582865114]) +2019/06/14 13:44:41 Blocking empty list... +2019/06/14 13:44:41 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:39.876272196 -0600 MDT m=+557.248300968] == [bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:41.434892417 -0600 MDT m=+558.806921162]) +2019/06/14 13:44:42 Blocking empty list... +2019/06/14 13:44:42 true = ([bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:41.210836371 -0600 MDT m=+558.582865114] == [bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:42.800903683 -0600 MDT m=+560.172932419]) +2019/06/14 13:44:42 true = ([bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:41.434892417 -0600 MDT m=+558.806921162] == [bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:42.975489596 -0600 MDT m=+560.347518332]) +2019/06/14 13:44:43 Blocking empty list... +2019/06/14 13:44:44 Blocking empty list... +2019/06/14 13:44:44 true = ([bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:42.800903683 -0600 MDT m=+560.172932419] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:44.383681507 -0600 MDT m=+561.755710284]) +2019/06/14 13:44:44 true = ([bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:42.975489596 -0600 MDT m=+560.347518332] == [bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:44.533291771 -0600 MDT m=+561.905320516]) +2019/06/14 13:44:45 Blocking empty list... +2019/06/14 13:44:46 Blocking empty list... +2019/06/14 13:44:46 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:44.383681507 -0600 MDT m=+561.755710284] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:46.651673699 -0600 MDT m=+564.023702462]) +2019/06/14 13:44:46 true = ([bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:44.533291771 -0600 MDT m=+561.905320516] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:46.71137253 -0600 MDT m=+564.083401292]) +2019/06/14 13:44:47 Blocking empty list... +2019/06/14 13:44:48 Blocking empty list... +2019/06/14 13:44:49 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:46.651673699 -0600 MDT m=+564.023702462] == [bid:$5,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:49.04381699 -0600 MDT m=+566.415845754]) +2019/06/14 13:44:49 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:46.71137253 -0600 MDT m=+564.083401292] == [bid:$800 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:49.075309089 -0600 MDT m=+566.447337833]) +2019/06/14 13:44:49 Blocking empty list... +2019/06/14 13:44:50 Blocking empty list... +2019/06/14 13:44:50 true = ([bid:$5,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:49.04381699 -0600 MDT m=+566.415845754] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:50.626495561 -0600 MDT m=+567.998524315]) +2019/06/14 13:44:50 true = ([bid:$800 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:49.075309089 -0600 MDT m=+566.447337833] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:50.637091128 -0600 MDT m=+568.009119874]) +2019/06/14 13:44:51 Blocking empty list... +2019/06/14 13:44:52 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:50.637091128 -0600 MDT m=+568.009119874] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:52.201787818 -0600 MDT m=+569.573816555]) +2019/06/14 13:44:52 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:50.626495561 -0600 MDT m=+567.998524315] == [bid:$5,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:52.210615356 -0600 MDT m=+569.582644106]) +2019/06/14 13:44:52 Blocking empty list... +2019/06/14 13:44:53 Blocking empty list... +2019/06/14 13:44:53 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:52.201787818 -0600 MDT m=+569.573816555] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:53.785375027 -0600 MDT m=+571.157403770]) +2019/06/14 13:44:53 true = ([bid:$5,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:52.210615356 -0600 MDT m=+569.582644106] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:53.794478475 -0600 MDT m=+571.166507235]) +2019/06/14 13:44:54 Blocking empty list... +2019/06/14 13:44:55 Blocking empty list... +2019/06/14 13:44:55 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:53.785375027 -0600 MDT m=+571.157403770] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:55.341663372 -0600 MDT m=+572.713692125]) +2019/06/14 13:44:55 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:53.794478475 -0600 MDT m=+571.166507235] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:55.347619414 -0600 MDT m=+572.719648150]) +2019/06/14 13:44:56 Blocking empty list... +2019/06/14 13:44:56 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:55.341663372 -0600 MDT m=+572.713692125] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:56.887273765 -0600 MDT m=+574.259302513]) +2019/06/14 13:44:56 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:55.347619414 -0600 MDT m=+572.719648150] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:56.894005011 -0600 MDT m=+574.266033759]) +2019/06/14 13:44:57 Blocking empty list... +2019/06/14 13:44:58 Blocking empty list... +2019/06/14 13:44:58 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:56.887273765 -0600 MDT m=+574.259302513] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:58.467862845 -0600 MDT m=+575.839891596]) +2019/06/14 13:44:58 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:56.894005011 -0600 MDT m=+574.266033759] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:58.467875669 -0600 MDT m=+575.839904419]) +2019/06/14 13:44:59 Blocking empty list... +2019/06/14 13:45:00 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:58.467862845 -0600 MDT m=+575.839891596] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:00.029947727 -0600 MDT m=+577.401976473]) +2019/06/14 13:45:00 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:58.467875669 -0600 MDT m=+575.839904419] == [bid:$6,000 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:00.033625382 -0600 MDT m=+577.405654118]) +2019/06/14 13:45:00 Blocking empty list... +2019/06/14 13:45:01 Blocking empty list... +2019/06/14 13:45:01 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:00.029947727 -0600 MDT m=+577.401976473] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:01.617679613 -0600 MDT m=+578.989708348]) +2019/06/14 13:45:01 true = ([bid:$6,000 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:00.033625382 -0600 MDT m=+577.405654118] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:01.626412103 -0600 MDT m=+578.998440838]) +2019/06/14 13:45:02 Blocking empty list... +2019/06/14 13:45:03 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:01.617679613 -0600 MDT m=+578.989708348] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:03.182911975 -0600 MDT m=+580.554940742]) +2019/06/14 13:45:03 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:01.626412103 -0600 MDT m=+578.998440838] == [bid:$6,100 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:03.199787677 -0600 MDT m=+580.571816439]) +2019/06/14 13:45:03 Blocking empty list... +2019/06/14 13:45:04 Blocking empty list... +2019/06/14 13:45:04 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:03.182911975 -0600 MDT m=+580.554940742] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:04.746031495 -0600 MDT m=+582.118060242]) +2019/06/14 13:45:04 true = ([bid:$6,100 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:03.199787677 -0600 MDT m=+580.571816439] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:04.767179705 -0600 MDT m=+582.139208448]) +2019/06/14 13:45:05 Blocking empty list... +2019/06/14 13:45:06 Blocking empty list... +2019/06/14 13:45:06 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:04.746031495 -0600 MDT m=+582.118060242] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:06.310545892 -0600 MDT m=+583.682574636]) +2019/06/14 13:45:06 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:04.767179705 -0600 MDT m=+582.139208448] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:06.335166826 -0600 MDT m=+583.707195567]) +2019/06/14 13:45:07 Blocking empty list... +2019/06/14 13:45:07 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:06.310545892 -0600 MDT m=+583.682574636] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:07.883620143 -0600 MDT m=+585.255648901]) +2019/06/14 13:45:07 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:06.335166826 -0600 MDT m=+583.707195567] == [bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:07.907584605 -0600 MDT m=+585.279613340]) +2019/06/14 13:45:08 Blocking empty list... +2019/06/14 13:45:09 Blocking empty list... +2019/06/14 13:45:09 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:07.883620143 -0600 MDT m=+585.255648901] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:09.45518732 -0600 MDT m=+586.827216080]) +2019/06/14 13:45:09 true = ([bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:07.907584605 -0600 MDT m=+585.279613340] == [bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:09.4663536 -0600 MDT m=+586.838382341]) +2019/06/14 13:45:10 Blocking empty list... +2019/06/14 13:45:11 Blocking empty list... +2019/06/14 13:45:11 true = ([bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:09.4663536 -0600 MDT m=+586.838382341] == [bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:11.714388541 -0600 MDT m=+589.086417329]) +2019/06/14 13:45:11 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:09.45518732 -0600 MDT m=+586.827216080] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:11.744893291 -0600 MDT m=+589.116922050]) +2019/06/14 13:45:12 Blocking empty list... +2019/06/14 13:45:13 Blocking empty list... +2019/06/14 13:45:13 true = ([bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:11.714388541 -0600 MDT m=+589.086417329] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:13.45008916 -0600 MDT m=+590.822117920]) +2019/06/14 13:45:13 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:11.744893291 -0600 MDT m=+589.116922050] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:13.467717253 -0600 MDT m=+590.839745995]) +2019/06/14 13:45:14 Blocking empty list... +2019/06/14 13:45:15 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:13.45008916 -0600 MDT m=+590.822117920] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:15.028250727 -0600 MDT m=+592.400279501]) +2019/06/14 13:45:15 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:13.467717253 -0600 MDT m=+590.839745995] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:15.029365652 -0600 MDT m=+592.401394387]) +2019/06/14 13:45:15 Blocking empty list... +2019/06/14 13:45:16 Blocking empty list... +2019/06/14 13:45:16 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:15.028250727 -0600 MDT m=+592.400279501] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:16.574778848 -0600 MDT m=+593.946807598]) +2019/06/14 13:45:16 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:15.029365652 -0600 MDT m=+592.401394387] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:16.581757004 -0600 MDT m=+593.953785791]) +2019/06/14 13:45:17 Blocking empty list... +2019/06/14 13:45:18 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:16.574778848 -0600 MDT m=+593.946807598] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:18.148148234 -0600 MDT m=+595.520177008]) +2019/06/14 13:45:18 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:16.581757004 -0600 MDT m=+593.953785791] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:18.157707579 -0600 MDT m=+595.529736321]) +2019/06/14 13:45:18 Blocking empty list... +2019/06/14 13:45:19 Blocking empty list... +2019/06/14 13:45:19 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:18.157707579 -0600 MDT m=+595.529736321] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:19.727213553 -0600 MDT m=+597.099242300]) +2019/06/14 13:45:19 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:18.148148234 -0600 MDT m=+595.520177008] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:19.732192656 -0600 MDT m=+597.104221399]) +2019/06/14 13:45:20 Blocking empty list... +2019/06/14 13:45:21 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:19.732192656 -0600 MDT m=+597.104221399] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:21.300980036 -0600 MDT m=+598.673008782]) +2019/06/14 13:45:21 Blocking empty list... +2019/06/14 13:45:21 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:19.727213553 -0600 MDT m=+597.099242300] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:21.307722352 -0600 MDT m=+598.679751090]) +2019/06/14 13:45:22 Blocking empty list... +2019/06/14 13:45:23 Blocking empty list... +2019/06/14 13:45:23 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:21.300980036 -0600 MDT m=+598.673008782] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:23.379902263 -0600 MDT m=+600.751931031]) +2019/06/14 13:45:23 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:21.307722352 -0600 MDT m=+598.679751090] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:23.392826934 -0600 MDT m=+600.764855701]) +2019/06/14 13:45:24 Blocking empty list... +2019/06/14 13:45:25 Blocking empty list... +2019/06/14 13:45:25 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:23.392826934 -0600 MDT m=+600.764855701] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:25.71438718 -0600 MDT m=+603.086415961]) +2019/06/14 13:45:25 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:23.379902263 -0600 MDT m=+600.751931031] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:25.759869463 -0600 MDT m=+603.131898219]) +2019/06/14 13:45:26 Blocking empty list... +2019/06/14 13:45:27 Blocking empty list... +2019/06/14 13:45:27 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:25.71438718 -0600 MDT m=+603.086415961] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:27.748442664 -0600 MDT m=+605.120471419]) +2019/06/14 13:45:27 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:25.759869463 -0600 MDT m=+603.131898219] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:27.762685583 -0600 MDT m=+605.134714377]) +2019/06/14 13:45:28 Blocking empty list... +2019/06/14 13:45:29 Blocking empty list... +2019/06/14 13:45:29 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:27.762685583 -0600 MDT m=+605.134714377] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:29.693781661 -0600 MDT m=+607.065810420]) +2019/06/14 13:45:29 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:27.748442664 -0600 MDT m=+605.120471419] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:29.7037451 -0600 MDT m=+607.075773851]) +2019/06/14 13:45:30 Blocking empty list... +2019/06/14 13:45:31 Blocking empty list... +2019/06/14 13:45:31 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:29.7037451 -0600 MDT m=+607.075773851] == [bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:31.581812917 -0600 MDT m=+608.953841681]) +2019/06/14 13:45:31 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:29.693781661 -0600 MDT m=+607.065810420] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:31.603363109 -0600 MDT m=+608.975391926]) +2019/06/14 13:45:32 Blocking empty list... +2019/06/14 13:45:33 true = ([bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:31.581812917 -0600 MDT m=+608.953841681] == [bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:33.129003954 -0600 MDT m=+610.501032706]) +2019/06/14 13:45:33 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:31.603363109 -0600 MDT m=+608.975391926] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:33.154188308 -0600 MDT m=+610.526217074]) +2019/06/14 13:45:33 Blocking empty list... +2019/06/14 13:45:34 Blocking empty list... +2019/06/14 13:45:34 true = ([bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:33.129003954 -0600 MDT m=+610.501032706] == [bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:34.698293537 -0600 MDT m=+612.070322308]) +2019/06/14 13:45:34 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:33.154188308 -0600 MDT m=+610.526217074] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:34.740571037 -0600 MDT m=+612.112599799]) +2019/06/14 13:45:35 Blocking empty list... +2019/06/14 13:45:36 Blocking empty list... +2019/06/14 13:45:36 true = ([bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:34.698293537 -0600 MDT m=+612.070322308] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:36.670375341 -0600 MDT m=+614.042404108]) +2019/06/14 13:45:36 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:34.740571037 -0600 MDT m=+612.112599799] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:36.714017157 -0600 MDT m=+614.086045966]) +2019/06/14 13:45:37 Blocking empty list... +2019/06/14 13:45:38 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:36.670375341 -0600 MDT m=+614.042404108] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:38.247777676 -0600 MDT m=+615.619806410]) +2019/06/14 13:45:38 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:36.714017157 -0600 MDT m=+614.086045966] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:38.270868543 -0600 MDT m=+615.642897295]) +2019/06/14 13:45:38 Blocking empty list... +2019/06/14 13:45:39 Blocking empty list... +2019/06/14 13:45:39 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:38.247777676 -0600 MDT m=+615.619806410] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:39.820522402 -0600 MDT m=+617.192551139]) +2019/06/14 13:45:39 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:38.270868543 -0600 MDT m=+615.642897295] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:39.840696355 -0600 MDT m=+617.212725106]) +2019/06/14 13:45:40 Blocking empty list... +2019/06/14 13:45:41 Blocking empty list... +2019/06/14 13:45:41 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:39.820522402 -0600 MDT m=+617.192551139] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:41.865548025 -0600 MDT m=+619.237576784]) +2019/06/14 13:45:41 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:39.840696355 -0600 MDT m=+617.212725106] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:41.87975323 -0600 MDT m=+619.251782000]) +2019/06/14 13:45:42 Blocking empty list... +2019/06/14 13:45:43 Blocking empty list... +2019/06/14 13:45:44 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:41.87975323 -0600 MDT m=+619.251782000] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:44.12899537 -0600 MDT m=+621.501024149]) +2019/06/14 13:45:44 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:41.865548025 -0600 MDT m=+619.237576784] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:44.160166521 -0600 MDT m=+621.532195282]) +2019/06/14 13:45:44 Blocking empty list... +2019/06/14 13:45:45 Blocking empty list... +2019/06/14 13:45:45 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:44.12899537 -0600 MDT m=+621.501024149] == [bid:Next Item on title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:45.698231339 -0600 MDT m=+623.070260115]) +2019/06/14 13:45:45 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:44.160166521 -0600 MDT m=+621.532195282] == [bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:45.730591096 -0600 MDT m=+623.102619832]) +2019/06/14 13:45:46 Blocking empty list... +2019/06/14 13:45:47 true = ([bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:45.730591096 -0600 MDT m=+623.102619832] == [bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:47.300433357 -0600 MDT m=+624.672462125]) +2019/06/14 13:45:47 Blocking empty list... +2019/06/14 13:45:47 DETAIL 8 6 +2019/06/14 13:45:47 false = ([bid:Next Item on title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:45.698231339 -0600 MDT m=+623.070260115] == [bid:$950 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:47.326540361 -0600 MDT m=+624.698569101]) +2019/06/14 13:45:47 DETAIL 8 6 +2019/06/14 13:45:47 TOP +2019/06/14 13:45:47 C [bid:$950 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:47.970680447 -0600 MDT m=+625.342709201] +2019/06/14 13:45:48 Blocking empty list... +2019/06/14 13:45:48 true = ([bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:47.300433357 -0600 MDT m=+624.672462125] == [bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:48.875565095 -0600 MDT m=+626.247593841]) +2019/06/14 13:45:49 Blocking empty list... +2019/06/14 13:45:49 true = ([bid:$950 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:47.970680447 -0600 MDT m=+625.342709201] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:49.530146108 -0600 MDT m=+626.902174848]) +2019/06/14 13:45:50 Blocking empty list... +2019/06/14 13:45:50 true = ([bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:48.875565095 -0600 MDT m=+626.247593841] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:50.441141654 -0600 MDT m=+627.813170424]) +2019/06/14 13:45:51 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:49.530146108 -0600 MDT m=+626.902174848] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:51.092703578 -0600 MDT m=+628.464732312]) +2019/06/14 13:45:51 Blocking empty list... +2019/06/14 13:45:52 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:50.441141654 -0600 MDT m=+627.813170424] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:52.014105523 -0600 MDT m=+629.386134268]) +2019/06/14 13:45:52 Blocking empty list... +2019/06/14 13:45:52 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:51.092703578 -0600 MDT m=+628.464732312] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:52.666563883 -0600 MDT m=+630.038592628]) +2019/06/14 13:45:53 Blocking empty list... +2019/06/14 13:45:53 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:52.014105523 -0600 MDT m=+629.386134268] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:53.557551959 -0600 MDT m=+630.929580695]) +2019/06/14 13:45:54 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:52.666563883 -0600 MDT m=+630.038592628] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:54.239611178 -0600 MDT m=+631.611639922]) +2019/06/14 13:45:54 Blocking empty list... +2019/06/14 13:45:55 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:53.557551959 -0600 MDT m=+630.929580695] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:55.114075035 -0600 MDT m=+632.486103788]) +2019/06/14 13:45:55 Blocking empty list... +2019/06/14 13:45:55 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:54.239611178 -0600 MDT m=+631.611639922] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:55.804221548 -0600 MDT m=+633.176250310]) +2019/06/14 13:45:56 Blocking empty list... +2019/06/14 13:45:56 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:55.114075035 -0600 MDT m=+632.486103788] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:56.706568281 -0600 MDT m=+634.078597042]) +2019/06/14 13:45:57 Blocking empty list... +2019/06/14 13:45:57 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:55.804221548 -0600 MDT m=+633.176250310] == [bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:57.361048223 -0600 MDT m=+634.733076974]) +2019/06/14 13:45:58 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:56.706568281 -0600 MDT m=+634.078597042] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:58.261410026 -0600 MDT m=+635.633438778]) +2019/06/14 13:45:58 Blocking empty list... +2019/06/14 13:45:58 true = ([bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:57.361048223 -0600 MDT m=+634.733076974] == [bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:58.912388766 -0600 MDT m=+636.284417514]) +2019/06/14 13:45:59 Blocking empty list... +2019/06/14 13:45:59 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:58.261410026 -0600 MDT m=+635.633438778] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:59.82282752 -0600 MDT m=+637.194856272]) +2019/06/14 13:46:00 Blocking empty list... +2019/06/14 13:46:00 true = ([bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:58.912388766 -0600 MDT m=+636.284417514] == [bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:00.465703716 -0600 MDT m=+637.837732454]) +2019/06/14 13:46:01 Blocking empty list... +2019/06/14 13:46:01 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:59.82282752 -0600 MDT m=+637.194856272] == [bid:Bonus title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:01.397741474 -0600 MDT m=+638.769770221]) +2019/06/14 13:46:02 true = ([bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:00.465703716 -0600 MDT m=+637.837732454] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:02.023624181 -0600 MDT m=+639.395652927]) +2019/06/14 13:46:02 Blocking empty list... +2019/06/14 13:46:03 true = ([bid:Bonus title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:01.397741474 -0600 MDT m=+638.769770221] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:03.006045999 -0600 MDT m=+640.378074735]) +2019/06/14 13:46:03 Blocking empty list... +2019/06/14 13:46:03 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:02.023624181 -0600 MDT m=+639.395652927] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:03.58135933 -0600 MDT m=+640.953388064]) +2019/06/14 13:46:04 Blocking empty list... +2019/06/14 13:46:04 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:03.006045999 -0600 MDT m=+640.378074735] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:04.578964932 -0600 MDT m=+641.950993680]) +2019/06/14 13:46:05 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:03.58135933 -0600 MDT m=+640.953388064] == [bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:05.140126563 -0600 MDT m=+642.512155309]) +2019/06/14 13:46:05 Blocking empty list... +2019/06/14 13:46:06 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:04.578964932 -0600 MDT m=+641.950993680] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:06.178025052 -0600 MDT m=+643.550053786]) +2019/06/14 13:46:06 Blocking empty list... +2019/06/14 13:46:06 true = ([bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:05.140126563 -0600 MDT m=+642.512155309] == [bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:06.697389814 -0600 MDT m=+644.069418561]) +2019/06/14 13:46:07 Blocking empty list... +2019/06/14 13:46:07 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:06.178025052 -0600 MDT m=+643.550053786] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:07.780702876 -0600 MDT m=+645.152731610]) +2019/06/14 13:46:08 true = ([bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:06.697389814 -0600 MDT m=+644.069418561] == [bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:08.248101491 -0600 MDT m=+645.620130237]) +2019/06/14 13:46:08 Blocking empty list... +2019/06/14 13:46:09 Blocking empty list... +2019/06/14 13:46:09 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:07.780702876 -0600 MDT m=+645.152731610] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:09.386820437 -0600 MDT m=+646.758849193]) +2019/06/14 13:46:09 true = ([bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:08.248101491 -0600 MDT m=+645.620130237] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:09.818455714 -0600 MDT m=+647.190484458]) +2019/06/14 13:46:10 Blocking empty list... +2019/06/14 13:46:10 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:09.386820437 -0600 MDT m=+646.758849193] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:10.971483398 -0600 MDT m=+648.343512143]) +2019/06/14 13:46:11 Blocking empty list... +2019/06/14 13:46:11 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:09.818455714 -0600 MDT m=+647.190484458] == [bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:11.378239494 -0600 MDT m=+648.750268245]) +2019/06/14 13:46:12 Blocking empty list... +2019/06/14 13:46:12 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:10.971483398 -0600 MDT m=+648.343512143] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:12.537834103 -0600 MDT m=+649.909862840]) +2019/06/14 13:46:12 true = ([bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:11.378239494 -0600 MDT m=+648.750268245] == [bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:12.921818006 -0600 MDT m=+650.293846777]) +2019/06/14 13:46:13 Blocking empty list... +2019/06/14 13:46:14 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:12.537834103 -0600 MDT m=+649.909862840] == [bid:Next Item on title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:14.115315236 -0600 MDT m=+651.487343970]) +2019/06/14 13:46:14 Blocking empty list... +2019/06/14 13:46:14 true = ([bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:12.921818006 -0600 MDT m=+650.293846777] == [bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:14.471067849 -0600 MDT m=+651.843096596]) +2019/06/14 13:46:15 Blocking empty list... +2019/06/14 13:46:15 DETAIL FRONT END REAR END +2019/06/14 13:46:15 false = ([bid:Next Item on title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:14.115315236 -0600 MDT m=+651.487343970] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:15.765589239 -0600 MDT m=+653.137617986]) +2019/06/14 13:46:15 DETAIL SIDE N/A +2019/06/14 13:46:15 TOP +2019/06/14 13:46:16 true = ([bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:14.471067849 -0600 MDT m=+651.843096596] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:16.02007468 -0600 MDT m=+653.392103448]) +2019/06/14 13:46:16 Blocking empty list... +2019/06/14 13:46:16 C [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:16.390025771 -0600 MDT m=+653.762054512] +2019/06/14 13:46:17 Blocking empty list... +2019/06/14 13:46:17 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:16.02007468 -0600 MDT m=+653.392103448] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:17.651753355 -0600 MDT m=+655.023782106]) +2019/06/14 13:46:17 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:16.390025771 -0600 MDT m=+653.762054512] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:17.945675122 -0600 MDT m=+655.317703865]) +2019/06/14 13:46:18 Blocking empty list... +2019/06/14 13:46:19 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:17.651753355 -0600 MDT m=+655.023782106] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:19.255879024 -0600 MDT m=+656.627907787]) +2019/06/14 13:46:19 Blocking empty list... +2019/06/14 13:46:19 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:17.945675122 -0600 MDT m=+655.317703865] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:19.503173988 -0600 MDT m=+656.875202744]) +2019/06/14 13:46:20 Blocking empty list... +2019/06/14 13:46:20 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:19.255879024 -0600 MDT m=+656.627907787] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:20.879860426 -0600 MDT m=+658.251889173]) +2019/06/14 13:46:21 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:19.503173988 -0600 MDT m=+656.875202744] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:21.074419533 -0600 MDT m=+658.446448280]) +2019/06/14 13:46:21 Blocking empty list... +2019/06/14 13:46:22 Blocking empty list... +2019/06/14 13:46:22 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:20.879860426 -0600 MDT m=+658.251889173] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:22.472975892 -0600 MDT m=+659.845004657]) +2019/06/14 13:46:22 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:21.074419533 -0600 MDT m=+658.446448280] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:22.638350764 -0600 MDT m=+660.010379508]) +2019/06/14 13:46:23 Blocking empty list... +2019/06/14 13:46:24 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:22.472975892 -0600 MDT m=+659.845004657] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:24.039286396 -0600 MDT m=+661.411315153]) +2019/06/14 13:46:24 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:22.638350764 -0600 MDT m=+660.010379508] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:24.210076006 -0600 MDT m=+661.582104749]) +2019/06/14 13:46:24 Blocking empty list... +2019/06/14 13:46:25 Blocking empty list... +2019/06/14 13:46:25 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:24.039286396 -0600 MDT m=+661.411315153] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:25.623141495 -0600 MDT m=+662.995170232]) +2019/06/14 13:46:25 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:24.210076006 -0600 MDT m=+661.582104749] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:25.77105872 -0600 MDT m=+663.143087460]) +2019/06/14 13:46:26 Blocking empty list... +2019/06/14 13:46:27 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:25.623141495 -0600 MDT m=+662.995170232] == [bid:Bonus title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:27.217110188 -0600 MDT m=+664.589138960]) +2019/06/14 13:46:27 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:25.77105872 -0600 MDT m=+663.143087460] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:27.316556146 -0600 MDT m=+664.688584889]) +2019/06/14 13:46:27 Blocking empty list... +2019/06/14 13:46:28 Blocking empty list... +2019/06/14 13:46:28 true = ([bid:Bonus title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:27.217110188 -0600 MDT m=+664.589138960] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:28.804421116 -0600 MDT m=+666.176449864]) +2019/06/14 13:46:28 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:27.316556146 -0600 MDT m=+664.688584889] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:28.874885439 -0600 MDT m=+666.246914183]) +2019/06/14 13:46:29 Blocking empty list... +2019/06/14 13:46:30 Blocking empty list... +2019/06/14 13:46:30 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:28.804421116 -0600 MDT m=+666.176449864] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:30.378302778 -0600 MDT m=+667.750331525]) +2019/06/14 13:46:30 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:28.874885439 -0600 MDT m=+666.246914183] == [bid:Bonus title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:30.430949455 -0600 MDT m=+667.802978198]) +2019/06/14 13:46:31 Blocking empty list... +2019/06/14 13:46:31 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:30.378302778 -0600 MDT m=+667.750331525] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:31.953632384 -0600 MDT m=+669.325661131]) +2019/06/14 13:46:31 true = ([bid:Bonus title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:30.430949455 -0600 MDT m=+667.802978198] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:31.996367484 -0600 MDT m=+669.368396221]) +2019/06/14 13:46:32 Blocking empty list... +2019/06/14 13:46:33 Blocking empty list... +2019/06/14 13:46:33 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:31.953632384 -0600 MDT m=+669.325661131] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:33.521086939 -0600 MDT m=+670.893115677]) +2019/06/14 13:46:33 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:31.996367484 -0600 MDT m=+669.368396221] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:33.571119989 -0600 MDT m=+670.943148735]) +2019/06/14 13:46:34 Blocking empty list... +2019/06/14 13:46:35 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:33.521086939 -0600 MDT m=+670.893115677] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:35.111873847 -0600 MDT m=+672.483902604]) +2019/06/14 13:46:35 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:33.571119989 -0600 MDT m=+670.943148735] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:35.140044919 -0600 MDT m=+672.512073682]) +2019/06/14 13:46:35 Blocking empty list... +2019/06/14 13:46:36 Blocking empty list... +2019/06/14 13:46:36 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:35.111873847 -0600 MDT m=+672.483902604] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:36.691188678 -0600 MDT m=+674.063217431]) +2019/06/14 13:46:36 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:35.140044919 -0600 MDT m=+672.512073682] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:36.72922032 -0600 MDT m=+674.101249074]) +2019/06/14 13:46:37 Blocking empty list... +2019/06/14 13:46:38 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:36.691188678 -0600 MDT m=+674.063217431] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:38.271432569 -0600 MDT m=+675.643461305]) +2019/06/14 13:46:38 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:36.72922032 -0600 MDT m=+674.101249074] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:38.298540491 -0600 MDT m=+675.670569229]) +2019/06/14 13:46:38 Blocking empty list... +2019/06/14 13:46:39 Blocking empty list... +2019/06/14 13:46:39 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:38.271432569 -0600 MDT m=+675.643461305] == [bid:Next Item on title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:39.854917796 -0600 MDT m=+677.226946542]) +2019/06/14 13:46:39 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:38.298540491 -0600 MDT m=+675.670569229] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:39.86269596 -0600 MDT m=+677.234724702]) +2019/06/14 13:46:40 Blocking empty list... +2019/06/14 13:46:41 Blocking empty list... +2019/06/14 13:46:41 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:39.86269596 -0600 MDT m=+677.234724702] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:41.421462137 -0600 MDT m=+678.793490880]) +2019/06/14 13:46:41 DETAIL 2.0L 4 4.8L 8 +2019/06/14 13:46:41 false = ([bid:Next Item on title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:39.854917796 -0600 MDT m=+677.226946542] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:41.444806466 -0600 MDT m=+678.816835202]) +2019/06/14 13:46:41 DETAIL $2,316 $5,782 +2019/06/14 13:46:41 TOP +2019/06/14 13:46:42 C [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:42.058019248 -0600 MDT m=+679.430047994] +2019/06/14 13:46:42 Blocking empty list... +2019/06/14 13:46:42 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:41.421462137 -0600 MDT m=+678.793490880] == [bid:Sold on title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:42.978837839 -0600 MDT m=+680.350866588]) +2019/06/14 13:46:43 Blocking empty list... +2019/06/14 13:46:43 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:42.058019248 -0600 MDT m=+679.430047994] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:43.652922025 -0600 MDT m=+681.024950771]) +2019/06/14 13:46:44 stale element reference: stale element reference: element is not attached to the page document + (Session info: chrome=75.0.3770.80) +2019/06/14 13:46:44 Blocking empty list... +2019/06/14 13:46:45 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:43.652922025 -0600 MDT m=+681.024950771] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:45.212745952 -0600 MDT m=+682.584774692]) +2019/06/14 13:46:45 Blocking empty list... +2019/06/14 13:46:46 Blocking empty list... +2019/06/14 13:46:46 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:45.212745952 -0600 MDT m=+682.584774692] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:46.779907351 -0600 MDT m=+684.151936105]) +2019/06/14 13:46:47 Blocking empty list... +2019/06/14 13:46:48 Blocking empty list... +2019/06/14 13:46:48 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:46.779907351 -0600 MDT m=+684.151936105] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:48.37493185 -0600 MDT m=+685.746960593]) +2019/06/14 13:46:49 Blocking empty list... +2019/06/14 13:46:50 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:48.37493185 -0600 MDT m=+685.746960593] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:50.006089325 -0600 MDT m=+687.378118062]) +2019/06/14 13:46:50 Blocking empty list... +2019/06/14 13:46:51 Blocking empty list... +2019/06/14 13:46:51 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:50.006089325 -0600 MDT m=+687.378118062] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:51.571964801 -0600 MDT m=+688.943993546]) +2019/06/14 13:46:52 Blocking empty list... +2019/06/14 13:46:53 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:51.571964801 -0600 MDT m=+688.943993546] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:53.168928243 -0600 MDT m=+690.540956989]) +2019/06/14 13:46:53 Blocking empty list... +2019/06/14 13:46:54 Blocking empty list... +2019/06/14 13:46:54 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:53.168928243 -0600 MDT m=+690.540956989] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:54.746981537 -0600 MDT m=+692.119010284]) +2019/06/14 13:46:55 Blocking empty list... +2019/06/14 13:46:56 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:54.746981537 -0600 MDT m=+692.119010284] == [bid:Sold! title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:56.312143023 -0600 MDT m=+693.684171758]) +2019/06/14 13:46:56 Blocking empty list... +2019/06/14 13:46:57 Blocking empty list... +2019/06/14 13:46:57 DETAIL 107,847 - Actual 157,979 - Exempt +2019/06/14 13:46:57 false = ([bid:Sold! title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:56.312143023 -0600 MDT m=+693.684171758] == [bid:Next Item on title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:57.92401858 -0600 MDT m=+695.296047330]) +2019/06/14 13:46:57 DETAIL 107,847 - Actual 157,979 - Exempt +2019/06/14 13:46:58 TOP +2019/06/14 13:46:58 Blocking empty list... +2019/06/14 13:46:58 C [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:46:58.636284949 -0600 MDT m=+696.008313695] +2019/06/14 13:46:59 Blocking empty list... +2019/06/14 13:47:00 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:46:58.636284949 -0600 MDT m=+696.008313695] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:00.228379187 -0600 MDT m=+697.600407934]) +2019/06/14 13:47:00 Blocking empty list... +2019/06/14 13:47:01 Blocking empty list... +2019/06/14 13:47:01 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:00.228379187 -0600 MDT m=+697.600407934] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:01.828705581 -0600 MDT m=+699.200734322]) +2019/06/14 13:47:02 Blocking empty list... +2019/06/14 13:47:03 Blocking empty list... +2019/06/14 13:47:03 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:01.828705581 -0600 MDT m=+699.200734322] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:03.404720678 -0600 MDT m=+700.776749424]) +2019/06/14 13:47:04 Blocking empty list... +2019/06/14 13:47:04 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:03.404720678 -0600 MDT m=+700.776749424] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:04.995027354 -0600 MDT m=+702.367056092]) +2019/06/14 13:47:05 Blocking empty list... +2019/06/14 13:47:06 Blocking empty list... +2019/06/14 13:47:06 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:04.995027354 -0600 MDT m=+702.367056092] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:06.553799294 -0600 MDT m=+703.925828028]) +2019/06/14 13:47:07 Blocking empty list... +2019/06/14 13:47:08 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:06.553799294 -0600 MDT m=+703.925828028] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:08.135736901 -0600 MDT m=+705.507765668]) +2019/06/14 13:47:08 Blocking empty list... +2019/06/14 13:47:09 Blocking empty list... +2019/06/14 13:47:09 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:08.135736901 -0600 MDT m=+705.507765668] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:09.740053433 -0600 MDT m=+707.112082171]) +2019/06/14 13:47:10 Blocking empty list... +2019/06/14 13:47:11 Blocking empty list... +2019/06/14 13:47:11 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:09.740053433 -0600 MDT m=+707.112082171] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:11.355342645 -0600 MDT m=+708.727371404]) +2019/06/14 13:47:12 Blocking empty list... +2019/06/14 13:47:12 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:11.355342645 -0600 MDT m=+708.727371404] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:12.953509692 -0600 MDT m=+710.325538426]) +2019/06/14 13:47:13 Blocking empty list... +2019/06/14 13:47:14 Blocking empty list... +2019/06/14 13:47:14 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:12.953509692 -0600 MDT m=+710.325538426] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:14.544215968 -0600 MDT m=+711.916244711]) +2019/06/14 13:47:15 Blocking empty list... +2019/06/14 13:47:16 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:14.544215968 -0600 MDT m=+711.916244711] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:16.111428829 -0600 MDT m=+713.483457570]) +2019/06/14 13:47:16 Blocking empty list... +2019/06/14 13:47:17 Blocking empty list... +2019/06/14 13:47:17 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:16.111428829 -0600 MDT m=+713.483457570] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:17.744188889 -0600 MDT m=+715.116217639]) +2019/06/14 13:47:18 Blocking empty list... +2019/06/14 13:47:19 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:17.744188889 -0600 MDT m=+715.116217639] == [bid:Next Item on title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:19.31997218 -0600 MDT m=+716.692000915]) +2019/06/14 13:47:19 Blocking empty list... +2019/06/14 13:47:20 Blocking empty list... +2019/06/14 13:47:20 DETAIL $24,039 $7,664 +2019/06/14 13:47:20 false = ([bid:Next Item on title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:19.31997218 -0600 MDT m=+716.692000915] == [bid:$7,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:20.975960694 -0600 MDT m=+718.347989437]) +2019/06/14 13:47:20 DETAIL BLACK BLUE +2019/06/14 13:47:21 TOP +2019/06/14 13:47:21 Blocking empty list... +2019/06/14 13:47:21 C [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:21.632839693 -0600 MDT m=+719.004868430] +2019/06/14 13:47:22 Blocking empty list... +2019/06/14 13:47:23 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:21.632839693 -0600 MDT m=+719.004868430] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:23.246285645 -0600 MDT m=+720.618314400]) +2019/06/14 13:47:23 Blocking empty list... +2019/06/14 13:47:24 Blocking empty list... +2019/06/14 13:47:24 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:23.246285645 -0600 MDT m=+720.618314400] == [bid:$8,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:24.857513644 -0600 MDT m=+722.229542387]) +2019/06/14 13:47:25 Blocking empty list... +2019/06/14 13:47:26 Blocking empty list... +2019/06/14 13:47:26 true = ([bid:$8,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:24.857513644 -0600 MDT m=+722.229542387] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:26.442221476 -0600 MDT m=+723.814250212]) +2019/06/14 13:47:27 Blocking empty list... +2019/06/14 13:47:27 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:26.442221476 -0600 MDT m=+723.814250212] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:27.9990393 -0600 MDT m=+725.371068068]) +2019/06/14 13:47:28 Blocking empty list... +2019/06/14 13:47:29 Blocking empty list... +2019/06/14 13:47:29 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:27.9990393 -0600 MDT m=+725.371068068] == [bid:$8,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:29.61021549 -0600 MDT m=+726.982244236]) +2019/06/14 13:47:30 Blocking empty list... +2019/06/14 13:47:31 true = ([bid:$8,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:29.61021549 -0600 MDT m=+726.982244236] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:31.217544509 -0600 MDT m=+728.589573280]) +2019/06/14 13:47:31 Blocking empty list... +2019/06/14 13:47:32 Blocking empty list... +2019/06/14 13:47:32 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:31.217544509 -0600 MDT m=+728.589573280] == [bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:32.789748968 -0600 MDT m=+730.161777737]) +2019/06/14 13:47:33 Blocking empty list... +2019/06/14 13:47:34 Blocking empty list... +2019/06/14 13:47:34 true = ([bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:32.789748968 -0600 MDT m=+730.161777737] == [bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:34.359088515 -0600 MDT m=+731.731117253]) +2019/06/14 13:47:35 Blocking empty list... +2019/06/14 13:47:36 Blocking empty list... +2019/06/14 13:47:36 true = ([bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:34.359088515 -0600 MDT m=+731.731117253] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:36.560628194 -0600 MDT m=+733.932656950]) +2019/06/14 13:47:37 Blocking empty list... +2019/06/14 13:47:38 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:36.560628194 -0600 MDT m=+733.932656950] == [bid:$8,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:38.175551491 -0600 MDT m=+735.547580230]) +2019/06/14 13:47:38 Blocking empty list... +2019/06/14 13:47:39 Blocking empty list... +2019/06/14 13:47:39 true = ([bid:$8,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:38.175551491 -0600 MDT m=+735.547580230] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:39.73534806 -0600 MDT m=+737.107376830]) +2019/06/14 13:47:40 Blocking empty list... +2019/06/14 13:47:41 Blocking empty list... +2019/06/14 13:47:41 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:39.73534806 -0600 MDT m=+737.107376830] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:41.333835964 -0600 MDT m=+738.705864712]) +2019/06/14 13:47:42 Blocking empty list... +2019/06/14 13:47:42 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:41.333835964 -0600 MDT m=+738.705864712] == [bid:$8,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:42.926327488 -0600 MDT m=+740.298356250]) +2019/06/14 13:47:43 Blocking empty list... +2019/06/14 13:47:44 Blocking empty list... +2019/06/14 13:47:44 true = ([bid:$8,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:42.926327488 -0600 MDT m=+740.298356250] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:44.493785479 -0600 MDT m=+741.865814216]) +2019/06/14 13:47:45 Blocking empty list... +2019/06/14 13:47:46 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:44.493785479 -0600 MDT m=+741.865814216] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:46.092736556 -0600 MDT m=+743.464765324]) +2019/06/14 13:47:46 Blocking empty list... +2019/06/14 13:47:47 Blocking empty list... +2019/06/14 13:47:47 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:46.092736556 -0600 MDT m=+743.464765324] == [bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:47.67597531 -0600 MDT m=+745.048004045]) +2019/06/14 13:47:48 Blocking empty list... +2019/06/14 13:47:49 true = ([bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:47.67597531 -0600 MDT m=+745.048004045] == [bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:49.283213406 -0600 MDT m=+746.655242158]) +2019/06/14 13:47:49 Blocking empty list... +2019/06/14 13:47:50 Blocking empty list... +2019/06/14 13:47:50 true = ([bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:49.283213406 -0600 MDT m=+746.655242158] == [bid:$9,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:50.867335397 -0600 MDT m=+748.239364160]) +2019/06/14 13:47:51 Blocking empty list... +2019/06/14 13:47:52 Blocking empty list... +2019/06/14 13:47:52 true = ([bid:$9,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:50.867335397 -0600 MDT m=+748.239364160] == [bid:$9,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:52.436153467 -0600 MDT m=+749.808182224]) +2019/06/14 13:47:53 Blocking empty list... +2019/06/14 13:47:54 true = ([bid:$9,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:52.436153467 -0600 MDT m=+749.808182224] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:54.03762827 -0600 MDT m=+751.409657021]) +2019/06/14 13:47:54 Blocking empty list... +2019/06/14 13:47:55 Blocking empty list... +2019/06/14 13:47:55 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:54.03762827 -0600 MDT m=+751.409657021] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:55.599953643 -0600 MDT m=+752.971982388]) +2019/06/14 13:47:56 Blocking empty list... +2019/06/14 13:47:57 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:55.599953643 -0600 MDT m=+752.971982388] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:57.206392983 -0600 MDT m=+754.578421720]) +2019/06/14 13:47:57 Blocking empty list... +2019/06/14 13:47:58 Blocking empty list... +2019/06/14 13:47:58 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:57.206392983 -0600 MDT m=+754.578421720] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:58.788865612 -0600 MDT m=+756.160894358]) +2019/06/14 13:47:59 Blocking empty list... +2019/06/14 13:48:00 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:58.788865612 -0600 MDT m=+756.160894358] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:00.334639215 -0600 MDT m=+757.706667963]) +2019/06/14 13:48:00 Blocking empty list... +2019/06/14 13:48:01 Blocking empty list... +2019/06/14 13:48:01 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:00.334639215 -0600 MDT m=+757.706667963] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:01.910710068 -0600 MDT m=+759.282738803]) +2019/06/14 13:48:02 Blocking empty list... +2019/06/14 13:48:03 Blocking empty list... +2019/06/14 13:48:03 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:01.910710068 -0600 MDT m=+759.282738803] == [bid:$9,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:03.504547263 -0600 MDT m=+760.876576007]) +2019/06/14 13:48:04 Blocking empty list... +2019/06/14 13:48:05 true = ([bid:$9,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:03.504547263 -0600 MDT m=+760.876576007] == [bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:05.075648795 -0600 MDT m=+762.447677531]) +2019/06/14 13:48:05 Blocking empty list... +2019/06/14 13:48:06 Blocking empty list... +2019/06/14 13:48:06 true = ([bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:05.075648795 -0600 MDT m=+762.447677531] == [bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:06.677601587 -0600 MDT m=+764.049630333]) +2019/06/14 13:48:07 Blocking empty list... +2019/06/14 13:48:08 true = ([bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:06.677601587 -0600 MDT m=+764.049630333] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:08.243314838 -0600 MDT m=+765.615343582]) +2019/06/14 13:48:08 Blocking empty list... +2019/06/14 13:48:09 Blocking empty list... +2019/06/14 13:48:09 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:08.243314838 -0600 MDT m=+765.615343582] == [bid:$9,800 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:09.816861858 -0600 MDT m=+767.188890627]) +2019/06/14 13:48:10 Blocking empty list... +2019/06/14 13:48:11 Blocking empty list... +2019/06/14 13:48:11 true = ([bid:$9,800 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:09.816861858 -0600 MDT m=+767.188890627] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:11.401970852 -0600 MDT m=+768.773999592]) +2019/06/14 13:48:12 Blocking empty list... +2019/06/14 13:48:13 Blocking empty list... +2019/06/14 13:48:13 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:11.401970852 -0600 MDT m=+768.773999592] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:13.385943303 -0600 MDT m=+770.757972044]) +2019/06/14 13:48:14 Blocking empty list... +2019/06/14 13:48:15 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:13.385943303 -0600 MDT m=+770.757972044] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:15.010900934 -0600 MDT m=+772.382929685]) +2019/06/14 13:48:15 Blocking empty list... +2019/06/14 13:48:16 Blocking empty list... +2019/06/14 13:48:16 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:15.010900934 -0600 MDT m=+772.382929685] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:16.582646794 -0600 MDT m=+773.954675536]) +2019/06/14 13:48:17 Blocking empty list... +2019/06/14 13:48:18 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:16.582646794 -0600 MDT m=+773.954675536] == [bid:$10,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:18.158918859 -0600 MDT m=+775.530947603]) +2019/06/14 13:48:18 Blocking empty list... +2019/06/14 13:48:19 Blocking empty list... +2019/06/14 13:48:19 true = ([bid:$10,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:18.158918859 -0600 MDT m=+775.530947603] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:19.762418285 -0600 MDT m=+777.134447038]) +2019/06/14 13:48:20 Blocking empty list... +2019/06/14 13:48:21 Blocking empty list... +2019/06/14 13:48:21 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:19.762418285 -0600 MDT m=+777.134447038] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:21.358132544 -0600 MDT m=+778.730161288]) +2019/06/14 13:48:22 Blocking empty list... +2019/06/14 13:48:22 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:21.358132544 -0600 MDT m=+778.730161288] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:22.960404858 -0600 MDT m=+780.332433601]) +2019/06/14 13:48:23 Blocking empty list... +2019/06/14 13:48:24 Blocking empty list... +2019/06/14 13:48:24 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:22.960404858 -0600 MDT m=+780.332433601] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:24.549422086 -0600 MDT m=+781.921450823]) +2019/06/14 13:48:25 Blocking empty list... +2019/06/14 13:48:26 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:24.549422086 -0600 MDT m=+781.921450823] == [bid:$10,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:26.125843233 -0600 MDT m=+783.497871975]) +2019/06/14 13:48:26 Blocking empty list... +2019/06/14 13:48:27 Blocking empty list... +2019/06/14 13:48:27 true = ([bid:$10,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:26.125843233 -0600 MDT m=+783.497871975] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:27.690221589 -0600 MDT m=+785.062250326]) +2019/06/14 13:48:28 Blocking empty list... +2019/06/14 13:48:29 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:27.690221589 -0600 MDT m=+785.062250326] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:29.264012162 -0600 MDT m=+786.636040912]) +2019/06/14 13:48:29 Blocking empty list... +2019/06/14 13:48:30 Blocking empty list... +2019/06/14 13:48:30 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:29.264012162 -0600 MDT m=+786.636040912] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:30.816621488 -0600 MDT m=+788.188650236]) +2019/06/14 13:48:31 Blocking empty list... +2019/06/14 13:48:32 Blocking empty list... +2019/06/14 13:48:33 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:30.816621488 -0600 MDT m=+788.188650236] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:33.096096709 -0600 MDT m=+790.468125473]) +2019/06/14 13:48:33 Blocking empty list... +2019/06/14 13:48:34 Blocking empty list... +2019/06/14 13:48:34 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:33.096096709 -0600 MDT m=+790.468125473] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:34.681657183 -0600 MDT m=+792.053685940]) +2019/06/14 13:48:35 Blocking empty list... +2019/06/14 13:48:36 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:34.681657183 -0600 MDT m=+792.053685940] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:36.241164634 -0600 MDT m=+793.613193386]) +2019/06/14 13:48:36 Blocking empty list... +2019/06/14 13:48:37 Blocking empty list... +2019/06/14 13:48:37 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:36.241164634 -0600 MDT m=+793.613193386] == [bid:Bonus title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:37.85757393 -0600 MDT m=+795.229602667]) +2019/06/14 13:48:38 Blocking empty list... +2019/06/14 13:48:39 Blocking empty list... +2019/06/14 13:48:39 true = ([bid:Bonus title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:37.85757393 -0600 MDT m=+795.229602667] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:39.441577958 -0600 MDT m=+796.813606720]) +2019/06/14 13:48:40 Blocking empty list... +2019/06/14 13:48:41 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:39.441577958 -0600 MDT m=+796.813606720] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:41.061072437 -0600 MDT m=+798.433101174]) +2019/06/14 13:48:41 Blocking empty list... +2019/06/14 13:48:42 Blocking empty list... +2019/06/14 13:48:42 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:41.061072437 -0600 MDT m=+798.433101174] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:42.682457336 -0600 MDT m=+800.054486086]) +2019/06/14 13:48:43 Blocking empty list... +2019/06/14 13:48:44 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:42.682457336 -0600 MDT m=+800.054486086] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:44.256806707 -0600 MDT m=+801.628835462]) +2019/06/14 13:48:44 Blocking empty list... +2019/06/14 13:48:45 Blocking empty list... +2019/06/14 13:48:45 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:44.256806707 -0600 MDT m=+801.628835462] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:45.967221097 -0600 MDT m=+803.339249831]) +2019/06/14 13:48:46 Blocking empty list... +2019/06/14 13:48:47 Blocking empty list... +2019/06/14 13:48:47 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:45.967221097 -0600 MDT m=+803.339249831] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:47.517339333 -0600 MDT m=+804.889368069]) +2019/06/14 13:48:48 Blocking empty list... +2019/06/14 13:48:48 parse watched +2019/06/14 13:48:49 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:47.517339333 -0600 MDT m=+804.889368069] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:49.118780967 -0600 MDT m=+806.490809704]) +2019/06/14 13:48:49 Blocking empty list... +2019/06/14 13:48:50 parse watched +2019/06/14 13:48:50 Blocking empty list... +2019/06/14 13:48:50 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:49.118780967 -0600 MDT m=+806.490809704] == [bid:Next Item on title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:50.667028521 -0600 MDT m=+808.039057254]) +2019/06/14 13:48:51 Blocking empty list... +2019/06/14 13:48:51 parse watched +2019/06/14 13:48:52 DETAIL $7,689 $24,039 +2019/06/14 13:48:52 false = ([bid:Next Item on title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:50.667028521 -0600 MDT m=+808.039057254] == [bid:$1,650 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:52.297679181 -0600 MDT m=+809.669707932]) +2019/06/14 13:48:52 DETAIL 1.8L 4 3.6L 6 +2019/06/14 13:48:52 Blocking empty list... +2019/06/14 13:48:52 TOP +2019/06/14 13:48:52 parse watched +2019/06/14 13:48:52 C [bid:$1,650 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:52.994021004 -0600 MDT m=+810.366049754] +2019/06/14 13:48:53 Blocking empty list... +2019/06/14 13:48:54 parse watched +2019/06/14 13:48:54 Blocking empty list... +2019/06/14 13:48:54 true = ([bid:$1,650 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:52.994021004 -0600 MDT m=+810.366049754] == [bid:Bid title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:54.583269582 -0600 MDT m=+811.955298323]) +2019/06/14 13:48:55 Blocking empty list... +2019/06/14 13:48:55 parse watched +2019/06/14 13:48:56 true = ([bid:Bid title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:54.583269582 -0600 MDT m=+811.955298323] == [bid:$1,700 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:56.181033887 -0600 MDT m=+813.553062652]) +2019/06/14 13:48:56 Blocking empty list... +2019/06/14 13:48:57 parse watched +2019/06/14 13:48:57 Blocking empty list... +2019/06/14 13:48:57 true = ([bid:$1,700 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:56.181033887 -0600 MDT m=+813.553062652] == [bid:$1,800 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:57.784934977 -0600 MDT m=+815.156963727]) +2019/06/14 13:48:58 Blocking empty list... +2019/06/14 13:48:58 parse watched +2019/06/14 13:48:59 Blocking empty list... +2019/06/14 13:48:59 true = ([bid:$1,800 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:57.784934977 -0600 MDT m=+815.156963727] == [bid:$1,850 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:59.373646279 -0600 MDT m=+816.745675026]) +2019/06/14 13:49:00 Blocking empty list... +2019/06/14 13:49:00 parse watched +2019/06/14 13:49:00 true = ([bid:$1,850 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:59.373646279 -0600 MDT m=+816.745675026] == [bid:$1,900 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:49:00.956853996 -0600 MDT m=+818.328882743]) +2019/06/14 13:49:01 Blocking empty list... +2019/06/14 13:49:02 parse watched +2019/06/14 13:49:02 Blocking empty list... +2019/06/14 13:49:02 true = ([bid:$1,900 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:49:00.956853996 -0600 MDT m=+818.328882743] == [bid:Bid title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:49:02.537892071 -0600 MDT m=+819.909920818]) +2019/06/14 13:49:03 Blocking empty list... +2019/06/14 13:49:03 stale element reference: stale element reference: element is not attached to the page document + (Session info: chrome=75.0.3770.80) +2019/06/14 13:49:04 Blocking empty list... +2019/06/14 13:49:05 Blocking empty list... +2019/06/14 13:49:06 Blocking empty list... diff --git a/copart/testdata/log2 b/copart/testdata/log2 new file mode 100644 index 0000000..b70af68 --- /dev/null +++ b/copart/testdata/log2 @@ -0,0 +1,242 @@ +2019/06/14 13:44:33 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:32.100278808 -0600 MDT m=+549.472307556] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:33.649979402 -0600 MDT m=+551.022008143]) +2019/06/14 13:44:34 true = ([bid:$4,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:33.263653682 -0600 MDT m=+550.635682442] == [bid:$4,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:34.853057112 -0600 MDT m=+552.225085858]) +2019/06/14 13:44:35 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:33.649979402 -0600 MDT m=+551.022008143] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:35.209579405 -0600 MDT m=+552.581608152]) +2019/06/14 13:44:36 true = ([bid:$4,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:34.853057112 -0600 MDT m=+552.225085858] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:36.442979544 -0600 MDT m=+553.815008292]) +2019/06/14 13:44:36 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:35.209579405 -0600 MDT m=+552.581608152] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:36.765530586 -0600 MDT m=+554.137559334]) +2019/06/14 13:44:37 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:36.442979544 -0600 MDT m=+553.815008292] == [bid:$4,700 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:37.998799546 -0600 MDT m=+555.370828308]) +2019/06/14 13:44:38 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:36.765530586 -0600 MDT m=+554.137559334] == [bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:38.309365279 -0600 MDT m=+555.681394016]) +2019/06/14 13:44:39 true = ([bid:$4,700 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:37.998799546 -0600 MDT m=+555.370828308] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:39.632325485 -0600 MDT m=+557.004354235]) +2019/06/14 13:44:39 true = ([bid:$750 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:38.309365279 -0600 MDT m=+555.681394016] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:39.876272196 -0600 MDT m=+557.248300968]) +2019/06/14 13:44:41 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:39.632325485 -0600 MDT m=+557.004354235] == [bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:41.210836371 -0600 MDT m=+558.582865114]) +2019/06/14 13:44:41 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:39.876272196 -0600 MDT m=+557.248300968] == [bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:41.434892417 -0600 MDT m=+558.806921162]) +2019/06/14 13:44:42 true = ([bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:41.210836371 -0600 MDT m=+558.582865114] == [bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:42.800903683 -0600 MDT m=+560.172932419]) +2019/06/14 13:44:42 true = ([bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:41.434892417 -0600 MDT m=+558.806921162] == [bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:42.975489596 -0600 MDT m=+560.347518332]) +2019/06/14 13:44:44 true = ([bid:$4,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:42.800903683 -0600 MDT m=+560.172932419] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:44.383681507 -0600 MDT m=+561.755710284]) +2019/06/14 13:44:44 true = ([bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:42.975489596 -0600 MDT m=+560.347518332] == [bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:44.533291771 -0600 MDT m=+561.905320516]) +2019/06/14 13:44:46 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:44.383681507 -0600 MDT m=+561.755710284] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:46.651673699 -0600 MDT m=+564.023702462]) +2019/06/14 13:44:46 true = ([bid:$775 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:44.533291771 -0600 MDT m=+561.905320516] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:46.71137253 -0600 MDT m=+564.083401292]) +2019/06/14 13:44:49 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:46.651673699 -0600 MDT m=+564.023702462] == [bid:$5,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:49.04381699 -0600 MDT m=+566.415845754]) +2019/06/14 13:44:49 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:46.71137253 -0600 MDT m=+564.083401292] == [bid:$800 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:49.075309089 -0600 MDT m=+566.447337833]) +2019/06/14 13:44:50 true = ([bid:$5,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:49.04381699 -0600 MDT m=+566.415845754] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:50.626495561 -0600 MDT m=+567.998524315]) +2019/06/14 13:44:50 true = ([bid:$800 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:49.075309089 -0600 MDT m=+566.447337833] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:50.637091128 -0600 MDT m=+568.009119874]) +2019/06/14 13:44:52 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:50.637091128 -0600 MDT m=+568.009119874] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:52.201787818 -0600 MDT m=+569.573816555]) +2019/06/14 13:44:52 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:50.626495561 -0600 MDT m=+567.998524315] == [bid:$5,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:52.210615356 -0600 MDT m=+569.582644106]) +2019/06/14 13:44:53 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:52.201787818 -0600 MDT m=+569.573816555] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:53.785375027 -0600 MDT m=+571.157403770]) +2019/06/14 13:44:53 true = ([bid:$5,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:52.210615356 -0600 MDT m=+569.582644106] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:53.794478475 -0600 MDT m=+571.166507235]) +2019/06/14 13:44:55 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:53.785375027 -0600 MDT m=+571.157403770] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:55.341663372 -0600 MDT m=+572.713692125]) +2019/06/14 13:44:55 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:53.794478475 -0600 MDT m=+571.166507235] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:55.347619414 -0600 MDT m=+572.719648150]) +2019/06/14 13:44:56 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:55.341663372 -0600 MDT m=+572.713692125] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:56.887273765 -0600 MDT m=+574.259302513]) +2019/06/14 13:44:56 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:55.347619414 -0600 MDT m=+572.719648150] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:56.894005011 -0600 MDT m=+574.266033759]) +2019/06/14 13:44:58 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:56.887273765 -0600 MDT m=+574.259302513] == [bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:58.467862845 -0600 MDT m=+575.839891596]) +2019/06/14 13:44:58 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:56.894005011 -0600 MDT m=+574.266033759] == [bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:58.467875669 -0600 MDT m=+575.839904419]) +2019/06/14 13:45:00 true = ([bid:$825 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:44:58.467862845 -0600 MDT m=+575.839891596] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:00.029947727 -0600 MDT m=+577.401976473]) +2019/06/14 13:45:00 true = ([bid:$5,900 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:44:58.467875669 -0600 MDT m=+575.839904419] == [bid:$6,000 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:00.033625382 -0600 MDT m=+577.405654118]) +2019/06/14 13:45:01 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:00.029947727 -0600 MDT m=+577.401976473] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:01.617679613 -0600 MDT m=+578.989708348]) +2019/06/14 13:45:01 true = ([bid:$6,000 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:00.033625382 -0600 MDT m=+577.405654118] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:01.626412103 -0600 MDT m=+578.998440838]) +2019/06/14 13:45:03 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:01.617679613 -0600 MDT m=+578.989708348] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:03.182911975 -0600 MDT m=+580.554940742]) +2019/06/14 13:45:03 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:01.626412103 -0600 MDT m=+578.998440838] == [bid:$6,100 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:03.199787677 -0600 MDT m=+580.571816439]) +2019/06/14 13:45:04 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:03.182911975 -0600 MDT m=+580.554940742] == [bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:04.746031495 -0600 MDT m=+582.118060242]) +2019/06/14 13:45:04 true = ([bid:$6,100 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:03.199787677 -0600 MDT m=+580.571816439] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:04.767179705 -0600 MDT m=+582.139208448]) +2019/06/14 13:45:06 true = ([bid:$850 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:04.746031495 -0600 MDT m=+582.118060242] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:06.310545892 -0600 MDT m=+583.682574636]) +2019/06/14 13:45:06 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:04.767179705 -0600 MDT m=+582.139208448] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:06.335166826 -0600 MDT m=+583.707195567]) +2019/06/14 13:45:07 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:06.310545892 -0600 MDT m=+583.682574636] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:07.883620143 -0600 MDT m=+585.255648901]) +2019/06/14 13:45:07 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:06.335166826 -0600 MDT m=+583.707195567] == [bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:07.907584605 -0600 MDT m=+585.279613340]) +2019/06/14 13:45:09 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:07.883620143 -0600 MDT m=+585.255648901] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:09.45518732 -0600 MDT m=+586.827216080]) +2019/06/14 13:45:09 true = ([bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:07.907584605 -0600 MDT m=+585.279613340] == [bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:09.4663536 -0600 MDT m=+586.838382341]) +2019/06/14 13:45:11 true = ([bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:09.4663536 -0600 MDT m=+586.838382341] == [bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:11.714388541 -0600 MDT m=+589.086417329]) +2019/06/14 13:45:11 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:09.45518732 -0600 MDT m=+586.827216080] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:11.744893291 -0600 MDT m=+589.116922050]) +2019/06/14 13:45:13 true = ([bid:$6,400 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:11.714388541 -0600 MDT m=+589.086417329] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:13.45008916 -0600 MDT m=+590.822117920]) +2019/06/14 13:45:13 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:11.744893291 -0600 MDT m=+589.116922050] == [bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:13.467717253 -0600 MDT m=+590.839745995]) +2019/06/14 13:45:15 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:13.45008916 -0600 MDT m=+590.822117920] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:15.028250727 -0600 MDT m=+592.400279501]) +2019/06/14 13:45:15 true = ([bid:$875 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:13.467717253 -0600 MDT m=+590.839745995] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:15.029365652 -0600 MDT m=+592.401394387]) +2019/06/14 13:45:16 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:15.028250727 -0600 MDT m=+592.400279501] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:16.574778848 -0600 MDT m=+593.946807598]) +2019/06/14 13:45:16 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:15.029365652 -0600 MDT m=+592.401394387] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:16.581757004 -0600 MDT m=+593.953785791]) +2019/06/14 13:45:18 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:16.574778848 -0600 MDT m=+593.946807598] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:18.148148234 -0600 MDT m=+595.520177008]) +2019/06/14 13:45:18 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:16.581757004 -0600 MDT m=+593.953785791] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:18.157707579 -0600 MDT m=+595.529736321]) +2019/06/14 13:45:19 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:18.157707579 -0600 MDT m=+595.529736321] == [bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:19.727213553 -0600 MDT m=+597.099242300]) +2019/06/14 13:45:19 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:18.148148234 -0600 MDT m=+595.520177008] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:19.732192656 -0600 MDT m=+597.104221399]) +2019/06/14 13:45:21 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:19.732192656 -0600 MDT m=+597.104221399] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:21.300980036 -0600 MDT m=+598.673008782]) +2019/06/14 13:45:21 true = ([bid:$900 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:19.727213553 -0600 MDT m=+597.099242300] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:21.307722352 -0600 MDT m=+598.679751090]) +2019/06/14 13:45:23 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:21.300980036 -0600 MDT m=+598.673008782] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:23.379902263 -0600 MDT m=+600.751931031]) +2019/06/14 13:45:23 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:21.307722352 -0600 MDT m=+598.679751090] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:23.392826934 -0600 MDT m=+600.764855701]) +2019/06/14 13:45:25 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:23.392826934 -0600 MDT m=+600.764855701] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:25.71438718 -0600 MDT m=+603.086415961]) +2019/06/14 13:45:25 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:23.379902263 -0600 MDT m=+600.751931031] == [bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:25.759869463 -0600 MDT m=+603.131898219]) +2019/06/14 13:45:27 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:25.71438718 -0600 MDT m=+603.086415961] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:27.748442664 -0600 MDT m=+605.120471419]) +2019/06/14 13:45:27 true = ([bid:$6,500 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:25.759869463 -0600 MDT m=+603.131898219] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:27.762685583 -0600 MDT m=+605.134714377]) +2019/06/14 13:45:29 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:27.762685583 -0600 MDT m=+605.134714377] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:29.693781661 -0600 MDT m=+607.065810420]) +2019/06/14 13:45:29 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:27.748442664 -0600 MDT m=+605.120471419] == [bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:29.7037451 -0600 MDT m=+607.075773851]) +2019/06/14 13:45:31 true = ([bid:$925 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:29.7037451 -0600 MDT m=+607.075773851] == [bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:31.581812917 -0600 MDT m=+608.953841681]) +2019/06/14 13:45:31 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:29.693781661 -0600 MDT m=+607.065810420] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:31.603363109 -0600 MDT m=+608.975391926]) +2019/06/14 13:45:33 true = ([bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:31.581812917 -0600 MDT m=+608.953841681] == [bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:33.129003954 -0600 MDT m=+610.501032706]) +2019/06/14 13:45:33 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:31.603363109 -0600 MDT m=+608.975391926] == [bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:33.154188308 -0600 MDT m=+610.526217074]) +2019/06/14 13:45:34 true = ([bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:33.129003954 -0600 MDT m=+610.501032706] == [bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:34.698293537 -0600 MDT m=+612.070322308]) +2019/06/14 13:45:34 true = ([bid:$6,600 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:33.154188308 -0600 MDT m=+610.526217074] == [bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:34.740571037 -0600 MDT m=+612.112599799]) +2019/06/14 13:45:36 true = ([bid:$950 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:34.698293537 -0600 MDT m=+612.070322308] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:36.670375341 -0600 MDT m=+614.042404108]) +2019/06/14 13:45:36 true = ([bid:Bid title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:34.740571037 -0600 MDT m=+612.112599799] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:36.714017157 -0600 MDT m=+614.086045966]) +2019/06/14 13:45:38 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:36.670375341 -0600 MDT m=+614.042404108] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:38.247777676 -0600 MDT m=+615.619806410]) +2019/06/14 13:45:38 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:36.714017157 -0600 MDT m=+614.086045966] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:38.270868543 -0600 MDT m=+615.642897295]) +2019/06/14 13:45:39 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:38.247777676 -0600 MDT m=+615.619806410] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:39.820522402 -0600 MDT m=+617.192551139]) +2019/06/14 13:45:39 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:38.270868543 -0600 MDT m=+615.642897295] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:39.840696355 -0600 MDT m=+617.212725106]) +2019/06/14 13:45:41 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:39.820522402 -0600 MDT m=+617.192551139] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:41.865548025 -0600 MDT m=+619.237576784]) +2019/06/14 13:45:41 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:39.840696355 -0600 MDT m=+617.212725106] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:41.87975323 -0600 MDT m=+619.251782000]) +2019/06/14 13:45:44 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:41.87975323 -0600 MDT m=+619.251782000] == [bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:44.12899537 -0600 MDT m=+621.501024149]) +2019/06/14 13:45:44 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:41.865548025 -0600 MDT m=+619.237576784] == [bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:44.160166521 -0600 MDT m=+621.532195282]) +2019/06/14 13:45:45 true = ([bid:$6,800 title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:44.12899537 -0600 MDT m=+621.501024149] == [bid:Next Item on title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:45.698231339 -0600 MDT m=+623.070260115]) +2019/06/14 13:45:45 true = ([bid:$975 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:44.160166521 -0600 MDT m=+621.532195282] == [bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:45.730591096 -0600 MDT m=+623.102619832]) +2019/06/14 13:45:47 true = ([bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:45.730591096 -0600 MDT m=+623.102619832] == [bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:47.300433357 -0600 MDT m=+624.672462125]) +2019/06/14 13:45:47 false = ([bid:Next Item on title:2015 LEXUS RC 350 watched:false images:4 when:2019-06-14 13:45:45.698231339 -0600 MDT m=+623.070260115] == [bid:$950 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:47.326540361 -0600 MDT m=+624.698569101]) +2019/06/14 13:45:48 true = ([bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:47.300433357 -0600 MDT m=+624.672462125] == [bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:48.875565095 -0600 MDT m=+626.247593841]) +2019/06/14 13:45:49 true = ([bid:$950 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:47.970680447 -0600 MDT m=+625.342709201] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:49.530146108 -0600 MDT m=+626.902174848]) +2019/06/14 13:45:50 true = ([bid:$1,000 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:48.875565095 -0600 MDT m=+626.247593841] == [bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:50.441141654 -0600 MDT m=+627.813170424]) +2019/06/14 13:45:51 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:49.530146108 -0600 MDT m=+626.902174848] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:51.092703578 -0600 MDT m=+628.464732312]) +2019/06/14 13:45:52 true = ([bid:Bid title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:50.441141654 -0600 MDT m=+627.813170424] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:52.014105523 -0600 MDT m=+629.386134268]) +2019/06/14 13:45:52 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:51.092703578 -0600 MDT m=+628.464732312] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:52.666563883 -0600 MDT m=+630.038592628]) +2019/06/14 13:45:53 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:52.014105523 -0600 MDT m=+629.386134268] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:53.557551959 -0600 MDT m=+630.929580695]) +2019/06/14 13:45:54 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:52.666563883 -0600 MDT m=+630.038592628] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:54.239611178 -0600 MDT m=+631.611639922]) +2019/06/14 13:45:55 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:53.557551959 -0600 MDT m=+630.929580695] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:55.114075035 -0600 MDT m=+632.486103788]) +2019/06/14 13:45:55 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:54.239611178 -0600 MDT m=+631.611639922] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:55.804221548 -0600 MDT m=+633.176250310]) +2019/06/14 13:45:56 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:55.114075035 -0600 MDT m=+632.486103788] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:56.706568281 -0600 MDT m=+634.078597042]) +2019/06/14 13:45:57 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:55.804221548 -0600 MDT m=+633.176250310] == [bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:57.361048223 -0600 MDT m=+634.733076974]) +2019/06/14 13:45:58 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:56.706568281 -0600 MDT m=+634.078597042] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:58.261410026 -0600 MDT m=+635.633438778]) +2019/06/14 13:45:58 true = ([bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:57.361048223 -0600 MDT m=+634.733076974] == [bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:58.912388766 -0600 MDT m=+636.284417514]) +2019/06/14 13:45:59 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:58.261410026 -0600 MDT m=+635.633438778] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:59.82282752 -0600 MDT m=+637.194856272]) +2019/06/14 13:46:00 true = ([bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:45:58.912388766 -0600 MDT m=+636.284417514] == [bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:00.465703716 -0600 MDT m=+637.837732454]) +2019/06/14 13:46:01 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:45:59.82282752 -0600 MDT m=+637.194856272] == [bid:Bonus title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:01.397741474 -0600 MDT m=+638.769770221]) +2019/06/14 13:46:02 true = ([bid:$1,300 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:00.465703716 -0600 MDT m=+637.837732454] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:02.023624181 -0600 MDT m=+639.395652927]) +2019/06/14 13:46:03 true = ([bid:Bonus title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:01.397741474 -0600 MDT m=+638.769770221] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:03.006045999 -0600 MDT m=+640.378074735]) +2019/06/14 13:46:03 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:02.023624181 -0600 MDT m=+639.395652927] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:03.58135933 -0600 MDT m=+640.953388064]) +2019/06/14 13:46:04 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:03.006045999 -0600 MDT m=+640.378074735] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:04.578964932 -0600 MDT m=+641.950993680]) +2019/06/14 13:46:05 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:03.58135933 -0600 MDT m=+640.953388064] == [bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:05.140126563 -0600 MDT m=+642.512155309]) +2019/06/14 13:46:06 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:04.578964932 -0600 MDT m=+641.950993680] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:06.178025052 -0600 MDT m=+643.550053786]) +2019/06/14 13:46:06 true = ([bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:05.140126563 -0600 MDT m=+642.512155309] == [bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:06.697389814 -0600 MDT m=+644.069418561]) +2019/06/14 13:46:07 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:06.178025052 -0600 MDT m=+643.550053786] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:07.780702876 -0600 MDT m=+645.152731610]) +2019/06/14 13:46:08 true = ([bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:06.697389814 -0600 MDT m=+644.069418561] == [bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:08.248101491 -0600 MDT m=+645.620130237]) +2019/06/14 13:46:09 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:07.780702876 -0600 MDT m=+645.152731610] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:09.386820437 -0600 MDT m=+646.758849193]) +2019/06/14 13:46:09 true = ([bid:$1,400 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:08.248101491 -0600 MDT m=+645.620130237] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:09.818455714 -0600 MDT m=+647.190484458]) +2019/06/14 13:46:10 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:09.386820437 -0600 MDT m=+646.758849193] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:10.971483398 -0600 MDT m=+648.343512143]) +2019/06/14 13:46:11 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:09.818455714 -0600 MDT m=+647.190484458] == [bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:11.378239494 -0600 MDT m=+648.750268245]) +2019/06/14 13:46:12 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:10.971483398 -0600 MDT m=+648.343512143] == [bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:12.537834103 -0600 MDT m=+649.909862840]) +2019/06/14 13:46:12 true = ([bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:11.378239494 -0600 MDT m=+648.750268245] == [bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:12.921818006 -0600 MDT m=+650.293846777]) +2019/06/14 13:46:14 true = ([bid:$1,050 title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:12.537834103 -0600 MDT m=+649.909862840] == [bid:Next Item on title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:14.115315236 -0600 MDT m=+651.487343970]) +2019/06/14 13:46:14 true = ([bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:12.921818006 -0600 MDT m=+650.293846777] == [bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:14.471067849 -0600 MDT m=+651.843096596]) +2019/06/14 13:46:15 false = ([bid:Next Item on title:2008 NISSAN ALTIMA 2.5 watched:false images:4 when:2019-06-14 13:46:14.115315236 -0600 MDT m=+651.487343970] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:15.765589239 -0600 MDT m=+653.137617986]) +2019/06/14 13:46:16 true = ([bid:$1,500 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:14.471067849 -0600 MDT m=+651.843096596] == [bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:16.02007468 -0600 MDT m=+653.392103448]) +2019/06/14 13:46:17 true = ([bid:Bid title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:16.02007468 -0600 MDT m=+653.392103448] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:17.651753355 -0600 MDT m=+655.023782106]) +2019/06/14 13:46:17 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:16.390025771 -0600 MDT m=+653.762054512] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:17.945675122 -0600 MDT m=+655.317703865]) +2019/06/14 13:46:19 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:17.651753355 -0600 MDT m=+655.023782106] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:19.255879024 -0600 MDT m=+656.627907787]) +2019/06/14 13:46:19 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:17.945675122 -0600 MDT m=+655.317703865] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:19.503173988 -0600 MDT m=+656.875202744]) +2019/06/14 13:46:20 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:19.255879024 -0600 MDT m=+656.627907787] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:20.879860426 -0600 MDT m=+658.251889173]) +2019/06/14 13:46:21 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:19.503173988 -0600 MDT m=+656.875202744] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:21.074419533 -0600 MDT m=+658.446448280]) +2019/06/14 13:46:22 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:20.879860426 -0600 MDT m=+658.251889173] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:22.472975892 -0600 MDT m=+659.845004657]) +2019/06/14 13:46:22 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:21.074419533 -0600 MDT m=+658.446448280] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:22.638350764 -0600 MDT m=+660.010379508]) +2019/06/14 13:46:24 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:22.472975892 -0600 MDT m=+659.845004657] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:24.039286396 -0600 MDT m=+661.411315153]) +2019/06/14 13:46:24 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:22.638350764 -0600 MDT m=+660.010379508] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:24.210076006 -0600 MDT m=+661.582104749]) +2019/06/14 13:46:25 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:24.039286396 -0600 MDT m=+661.411315153] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:25.623141495 -0600 MDT m=+662.995170232]) +2019/06/14 13:46:25 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:24.210076006 -0600 MDT m=+661.582104749] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:25.77105872 -0600 MDT m=+663.143087460]) +2019/06/14 13:46:27 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:25.623141495 -0600 MDT m=+662.995170232] == [bid:Bonus title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:27.217110188 -0600 MDT m=+664.589138960]) +2019/06/14 13:46:27 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:25.77105872 -0600 MDT m=+663.143087460] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:27.316556146 -0600 MDT m=+664.688584889]) +2019/06/14 13:46:28 true = ([bid:Bonus title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:27.217110188 -0600 MDT m=+664.589138960] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:28.804421116 -0600 MDT m=+666.176449864]) +2019/06/14 13:46:28 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:27.316556146 -0600 MDT m=+664.688584889] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:28.874885439 -0600 MDT m=+666.246914183]) +2019/06/14 13:46:30 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:28.804421116 -0600 MDT m=+666.176449864] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:30.378302778 -0600 MDT m=+667.750331525]) +2019/06/14 13:46:30 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:28.874885439 -0600 MDT m=+666.246914183] == [bid:Bonus title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:30.430949455 -0600 MDT m=+667.802978198]) +2019/06/14 13:46:31 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:30.378302778 -0600 MDT m=+667.750331525] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:31.953632384 -0600 MDT m=+669.325661131]) +2019/06/14 13:46:31 true = ([bid:Bonus title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:30.430949455 -0600 MDT m=+667.802978198] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:31.996367484 -0600 MDT m=+669.368396221]) +2019/06/14 13:46:33 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:31.953632384 -0600 MDT m=+669.325661131] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:33.521086939 -0600 MDT m=+670.893115677]) +2019/06/14 13:46:33 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:31.996367484 -0600 MDT m=+669.368396221] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:33.571119989 -0600 MDT m=+670.943148735]) +2019/06/14 13:46:35 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:33.521086939 -0600 MDT m=+670.893115677] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:35.111873847 -0600 MDT m=+672.483902604]) +2019/06/14 13:46:35 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:33.571119989 -0600 MDT m=+670.943148735] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:35.140044919 -0600 MDT m=+672.512073682]) +2019/06/14 13:46:36 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:35.111873847 -0600 MDT m=+672.483902604] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:36.691188678 -0600 MDT m=+674.063217431]) +2019/06/14 13:46:36 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:35.140044919 -0600 MDT m=+672.512073682] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:36.72922032 -0600 MDT m=+674.101249074]) +2019/06/14 13:46:38 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:36.691188678 -0600 MDT m=+674.063217431] == [bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:38.271432569 -0600 MDT m=+675.643461305]) +2019/06/14 13:46:38 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:36.72922032 -0600 MDT m=+674.101249074] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:38.298540491 -0600 MDT m=+675.670569229]) +2019/06/14 13:46:39 true = ([bid:$1,550 title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:38.271432569 -0600 MDT m=+675.643461305] == [bid:Next Item on title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:39.854917796 -0600 MDT m=+677.226946542]) +2019/06/14 13:46:39 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:38.298540491 -0600 MDT m=+675.670569229] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:39.86269596 -0600 MDT m=+677.234724702]) +2019/06/14 13:46:41 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:39.86269596 -0600 MDT m=+677.234724702] == [bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:41.421462137 -0600 MDT m=+678.793490880]) +2019/06/14 13:46:41 false = ([bid:Next Item on title:2007 CHEVROLET SILVERADO C1500 CLASSIC watched:false images:4 when:2019-06-14 13:46:39.854917796 -0600 MDT m=+677.226946542] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:41.444806466 -0600 MDT m=+678.816835202]) +2019/06/14 13:46:42 true = ([bid:$15,000 title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:41.421462137 -0600 MDT m=+678.793490880] == [bid:Sold on title:2016 GMC YUKON XL DENALI watched:false images:4 when:2019-06-14 13:46:42.978837839 -0600 MDT m=+680.350866588]) +2019/06/14 13:46:43 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:42.058019248 -0600 MDT m=+679.430047994] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:43.652922025 -0600 MDT m=+681.024950771]) +2019/06/14 13:46:45 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:43.652922025 -0600 MDT m=+681.024950771] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:45.212745952 -0600 MDT m=+682.584774692]) +2019/06/14 13:46:46 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:45.212745952 -0600 MDT m=+682.584774692] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:46.779907351 -0600 MDT m=+684.151936105]) +2019/06/14 13:46:48 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:46.779907351 -0600 MDT m=+684.151936105] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:48.37493185 -0600 MDT m=+685.746960593]) +2019/06/14 13:46:50 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:48.37493185 -0600 MDT m=+685.746960593] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:50.006089325 -0600 MDT m=+687.378118062]) +2019/06/14 13:46:51 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:50.006089325 -0600 MDT m=+687.378118062] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:51.571964801 -0600 MDT m=+688.943993546]) +2019/06/14 13:46:53 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:51.571964801 -0600 MDT m=+688.943993546] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:53.168928243 -0600 MDT m=+690.540956989]) +2019/06/14 13:46:54 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:53.168928243 -0600 MDT m=+690.540956989] == [bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:54.746981537 -0600 MDT m=+692.119010284]) +2019/06/14 13:46:56 true = ([bid:$475 title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:54.746981537 -0600 MDT m=+692.119010284] == [bid:Sold! title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:56.312143023 -0600 MDT m=+693.684171758]) +2019/06/14 13:46:57 false = ([bid:Sold! title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:56.312143023 -0600 MDT m=+693.684171758] == [bid:Next Item on title:2006 MAZDA 3 I watched:false images:4 when:2019-06-14 13:46:57.92401858 -0600 MDT m=+695.296047330]) +2019/06/14 13:47:00 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:46:58.636284949 -0600 MDT m=+696.008313695] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:00.228379187 -0600 MDT m=+697.600407934]) +2019/06/14 13:47:01 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:00.228379187 -0600 MDT m=+697.600407934] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:01.828705581 -0600 MDT m=+699.200734322]) +2019/06/14 13:47:03 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:01.828705581 -0600 MDT m=+699.200734322] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:03.404720678 -0600 MDT m=+700.776749424]) +2019/06/14 13:47:04 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:03.404720678 -0600 MDT m=+700.776749424] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:04.995027354 -0600 MDT m=+702.367056092]) +2019/06/14 13:47:06 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:04.995027354 -0600 MDT m=+702.367056092] == [bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:06.553799294 -0600 MDT m=+703.925828028]) +2019/06/14 13:47:08 true = ([bid:$2,400 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:06.553799294 -0600 MDT m=+703.925828028] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:08.135736901 -0600 MDT m=+705.507765668]) +2019/06/14 13:47:09 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:08.135736901 -0600 MDT m=+705.507765668] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:09.740053433 -0600 MDT m=+707.112082171]) +2019/06/14 13:47:11 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:09.740053433 -0600 MDT m=+707.112082171] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:11.355342645 -0600 MDT m=+708.727371404]) +2019/06/14 13:47:12 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:11.355342645 -0600 MDT m=+708.727371404] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:12.953509692 -0600 MDT m=+710.325538426]) +2019/06/14 13:47:14 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:12.953509692 -0600 MDT m=+710.325538426] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:14.544215968 -0600 MDT m=+711.916244711]) +2019/06/14 13:47:16 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:14.544215968 -0600 MDT m=+711.916244711] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:16.111428829 -0600 MDT m=+713.483457570]) +2019/06/14 13:47:17 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:16.111428829 -0600 MDT m=+713.483457570] == [bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:17.744188889 -0600 MDT m=+715.116217639]) +2019/06/14 13:47:19 true = ([bid:$2,450 title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:17.744188889 -0600 MDT m=+715.116217639] == [bid:Next Item on title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:19.31997218 -0600 MDT m=+716.692000915]) +2019/06/14 13:47:20 false = ([bid:Next Item on title:2009 HONDA CR-V LX watched:false images:4 when:2019-06-14 13:47:19.31997218 -0600 MDT m=+716.692000915] == [bid:$7,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:20.975960694 -0600 MDT m=+718.347989437]) +2019/06/14 13:47:23 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:21.632839693 -0600 MDT m=+719.004868430] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:23.246285645 -0600 MDT m=+720.618314400]) +2019/06/14 13:47:24 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:23.246285645 -0600 MDT m=+720.618314400] == [bid:$8,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:24.857513644 -0600 MDT m=+722.229542387]) +2019/06/14 13:47:26 true = ([bid:$8,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:24.857513644 -0600 MDT m=+722.229542387] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:26.442221476 -0600 MDT m=+723.814250212]) +2019/06/14 13:47:27 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:26.442221476 -0600 MDT m=+723.814250212] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:27.9990393 -0600 MDT m=+725.371068068]) +2019/06/14 13:47:29 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:27.9990393 -0600 MDT m=+725.371068068] == [bid:$8,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:29.61021549 -0600 MDT m=+726.982244236]) +2019/06/14 13:47:31 true = ([bid:$8,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:29.61021549 -0600 MDT m=+726.982244236] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:31.217544509 -0600 MDT m=+728.589573280]) +2019/06/14 13:47:32 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:31.217544509 -0600 MDT m=+728.589573280] == [bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:32.789748968 -0600 MDT m=+730.161777737]) +2019/06/14 13:47:34 true = ([bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:32.789748968 -0600 MDT m=+730.161777737] == [bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:34.359088515 -0600 MDT m=+731.731117253]) +2019/06/14 13:47:36 true = ([bid:$8,400 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:34.359088515 -0600 MDT m=+731.731117253] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:36.560628194 -0600 MDT m=+733.932656950]) +2019/06/14 13:47:38 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:36.560628194 -0600 MDT m=+733.932656950] == [bid:$8,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:38.175551491 -0600 MDT m=+735.547580230]) +2019/06/14 13:47:39 true = ([bid:$8,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:38.175551491 -0600 MDT m=+735.547580230] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:39.73534806 -0600 MDT m=+737.107376830]) +2019/06/14 13:47:41 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:39.73534806 -0600 MDT m=+737.107376830] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:41.333835964 -0600 MDT m=+738.705864712]) +2019/06/14 13:47:42 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:41.333835964 -0600 MDT m=+738.705864712] == [bid:$8,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:42.926327488 -0600 MDT m=+740.298356250]) +2019/06/14 13:47:44 true = ([bid:$8,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:42.926327488 -0600 MDT m=+740.298356250] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:44.493785479 -0600 MDT m=+741.865814216]) +2019/06/14 13:47:46 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:44.493785479 -0600 MDT m=+741.865814216] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:46.092736556 -0600 MDT m=+743.464765324]) +2019/06/14 13:47:47 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:46.092736556 -0600 MDT m=+743.464765324] == [bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:47.67597531 -0600 MDT m=+745.048004045]) +2019/06/14 13:47:49 true = ([bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:47.67597531 -0600 MDT m=+745.048004045] == [bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:49.283213406 -0600 MDT m=+746.655242158]) +2019/06/14 13:47:50 true = ([bid:$9,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:49.283213406 -0600 MDT m=+746.655242158] == [bid:$9,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:50.867335397 -0600 MDT m=+748.239364160]) +2019/06/14 13:47:52 true = ([bid:$9,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:50.867335397 -0600 MDT m=+748.239364160] == [bid:$9,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:52.436153467 -0600 MDT m=+749.808182224]) +2019/06/14 13:47:54 true = ([bid:$9,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:52.436153467 -0600 MDT m=+749.808182224] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:54.03762827 -0600 MDT m=+751.409657021]) +2019/06/14 13:47:55 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:54.03762827 -0600 MDT m=+751.409657021] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:55.599953643 -0600 MDT m=+752.971982388]) +2019/06/14 13:47:57 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:55.599953643 -0600 MDT m=+752.971982388] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:57.206392983 -0600 MDT m=+754.578421720]) +2019/06/14 13:47:58 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:57.206392983 -0600 MDT m=+754.578421720] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:58.788865612 -0600 MDT m=+756.160894358]) +2019/06/14 13:48:00 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:47:58.788865612 -0600 MDT m=+756.160894358] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:00.334639215 -0600 MDT m=+757.706667963]) +2019/06/14 13:48:01 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:00.334639215 -0600 MDT m=+757.706667963] == [bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:01.910710068 -0600 MDT m=+759.282738803]) +2019/06/14 13:48:03 true = ([bid:$9,500 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:01.910710068 -0600 MDT m=+759.282738803] == [bid:$9,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:03.504547263 -0600 MDT m=+760.876576007]) +2019/06/14 13:48:05 true = ([bid:$9,600 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:03.504547263 -0600 MDT m=+760.876576007] == [bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:05.075648795 -0600 MDT m=+762.447677531]) +2019/06/14 13:48:06 true = ([bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:05.075648795 -0600 MDT m=+762.447677531] == [bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:06.677601587 -0600 MDT m=+764.049630333]) +2019/06/14 13:48:08 true = ([bid:$9,700 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:06.677601587 -0600 MDT m=+764.049630333] == [bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:08.243314838 -0600 MDT m=+765.615343582]) +2019/06/14 13:48:09 true = ([bid:Bid title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:08.243314838 -0600 MDT m=+765.615343582] == [bid:$9,800 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:09.816861858 -0600 MDT m=+767.188890627]) +2019/06/14 13:48:11 true = ([bid:$9,800 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:09.816861858 -0600 MDT m=+767.188890627] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:11.401970852 -0600 MDT m=+768.773999592]) +2019/06/14 13:48:13 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:11.401970852 -0600 MDT m=+768.773999592] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:13.385943303 -0600 MDT m=+770.757972044]) +2019/06/14 13:48:15 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:13.385943303 -0600 MDT m=+770.757972044] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:15.010900934 -0600 MDT m=+772.382929685]) +2019/06/14 13:48:16 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:15.010900934 -0600 MDT m=+772.382929685] == [bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:16.582646794 -0600 MDT m=+773.954675536]) +2019/06/14 13:48:18 true = ([bid:$9,900 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:16.582646794 -0600 MDT m=+773.954675536] == [bid:$10,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:18.158918859 -0600 MDT m=+775.530947603]) +2019/06/14 13:48:19 true = ([bid:$10,000 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:18.158918859 -0600 MDT m=+775.530947603] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:19.762418285 -0600 MDT m=+777.134447038]) +2019/06/14 13:48:21 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:19.762418285 -0600 MDT m=+777.134447038] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:21.358132544 -0600 MDT m=+778.730161288]) +2019/06/14 13:48:22 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:21.358132544 -0600 MDT m=+778.730161288] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:22.960404858 -0600 MDT m=+780.332433601]) +2019/06/14 13:48:24 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:22.960404858 -0600 MDT m=+780.332433601] == [bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:24.549422086 -0600 MDT m=+781.921450823]) +2019/06/14 13:48:26 true = ([bid:$10,100 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:24.549422086 -0600 MDT m=+781.921450823] == [bid:$10,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:26.125843233 -0600 MDT m=+783.497871975]) +2019/06/14 13:48:27 true = ([bid:$10,200 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:26.125843233 -0600 MDT m=+783.497871975] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:27.690221589 -0600 MDT m=+785.062250326]) +2019/06/14 13:48:29 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:27.690221589 -0600 MDT m=+785.062250326] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:29.264012162 -0600 MDT m=+786.636040912]) +2019/06/14 13:48:30 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:29.264012162 -0600 MDT m=+786.636040912] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:30.816621488 -0600 MDT m=+788.188650236]) +2019/06/14 13:48:33 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:30.816621488 -0600 MDT m=+788.188650236] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:33.096096709 -0600 MDT m=+790.468125473]) +2019/06/14 13:48:34 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:33.096096709 -0600 MDT m=+790.468125473] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:34.681657183 -0600 MDT m=+792.053685940]) +2019/06/14 13:48:36 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:34.681657183 -0600 MDT m=+792.053685940] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:36.241164634 -0600 MDT m=+793.613193386]) +2019/06/14 13:48:37 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:36.241164634 -0600 MDT m=+793.613193386] == [bid:Bonus title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:37.85757393 -0600 MDT m=+795.229602667]) +2019/06/14 13:48:39 true = ([bid:Bonus title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:37.85757393 -0600 MDT m=+795.229602667] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:39.441577958 -0600 MDT m=+796.813606720]) +2019/06/14 13:48:41 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:39.441577958 -0600 MDT m=+796.813606720] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:41.061072437 -0600 MDT m=+798.433101174]) +2019/06/14 13:48:42 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:41.061072437 -0600 MDT m=+798.433101174] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:42.682457336 -0600 MDT m=+800.054486086]) +2019/06/14 13:48:44 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:42.682457336 -0600 MDT m=+800.054486086] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:44.256806707 -0600 MDT m=+801.628835462]) +2019/06/14 13:48:45 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:44.256806707 -0600 MDT m=+801.628835462] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:45.967221097 -0600 MDT m=+803.339249831]) +2019/06/14 13:48:47 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:45.967221097 -0600 MDT m=+803.339249831] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:47.517339333 -0600 MDT m=+804.889368069]) +2019/06/14 13:48:49 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:47.517339333 -0600 MDT m=+804.889368069] == [bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:49.118780967 -0600 MDT m=+806.490809704]) +2019/06/14 13:48:50 true = ([bid:$10,300 title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:49.118780967 -0600 MDT m=+806.490809704] == [bid:Next Item on title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:50.667028521 -0600 MDT m=+808.039057254]) +2019/06/14 13:48:52 false = ([bid:Next Item on title:2015 JEEP GRAND CHEROKEE OVERLAND watched:false images:4 when:2019-06-14 13:48:50.667028521 -0600 MDT m=+808.039057254] == [bid:$1,650 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:52.297679181 -0600 MDT m=+809.669707932]) +2019/06/14 13:48:54 true = ([bid:$1,650 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:52.994021004 -0600 MDT m=+810.366049754] == [bid:Bid title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:54.583269582 -0600 MDT m=+811.955298323]) +2019/06/14 13:48:56 true = ([bid:Bid title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:54.583269582 -0600 MDT m=+811.955298323] == [bid:$1,700 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:56.181033887 -0600 MDT m=+813.553062652]) +2019/06/14 13:48:57 true = ([bid:$1,700 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:56.181033887 -0600 MDT m=+813.553062652] == [bid:$1,800 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:57.784934977 -0600 MDT m=+815.156963727]) +2019/06/14 13:48:59 true = ([bid:$1,800 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:57.784934977 -0600 MDT m=+815.156963727] == [bid:$1,850 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:59.373646279 -0600 MDT m=+816.745675026]) +2019/06/14 13:49:00 true = ([bid:$1,850 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:48:59.373646279 -0600 MDT m=+816.745675026] == [bid:$1,900 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:49:00.956853996 -0600 MDT m=+818.328882743]) +2019/06/14 13:49:02 true = ([bid:$1,900 title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:49:00.956853996 -0600 MDT m=+818.328882743] == [bid:Bid title:2012 HONDA CIVIC EX watched:false images:4 when:2019-06-14 13:49:02.537892071 -0600 MDT m=+819.909920818]) diff --git a/copart/testdata/sample_auction_live.html.REMOVED.git-id b/copart/testdata/sample_auction_live.html.REMOVED.git-id new file mode 100644 index 0000000..bf93c08 --- /dev/null +++ b/copart/testdata/sample_auction_live.html.REMOVED.git-id @@ -0,0 +1 @@ +5db6601131524cea2060b504d5bdacd46cd0be1c \ No newline at end of file diff --git a/main.go b/main.go new file mode 100644 index 0000000..770e186 --- /dev/null +++ b/main.go @@ -0,0 +1,42 @@ +package main + +import ( + "local/rssmon3/copart/config" + "local/rssmon3/copart/server" + "log" + "os" + "os/signal" + "syscall" + "time" +) + +func main() { + log.SetPrefix("..") + time.Local = time.FixedZone("UTC-6", (-6*int(time.Hour))/int(time.Second)) + sigc := make(chan os.Signal) + + if err := config.New(); err != nil { + panic(err) + } + log.Println(config.Values()) + + s := server.New() + if err := s.Routes(); err != nil { + panic(err) + } + go func(c chan os.Signal) { + if err := s.Run(); err != nil { + log.Println(err) + } + c <- syscall.SIGINT + }(sigc) + + signal.Notify(sigc, + syscall.SIGHUP, + syscall.SIGINT, + syscall.SIGTERM, + syscall.SIGQUIT, + ) + <-sigc + config.Values().DB.Close() +} diff --git a/server/.routes_test.go.swp b/server/.routes_test.go.swp new file mode 100644 index 0000000..edede51 Binary files /dev/null and b/server/.routes_test.go.swp differ diff --git a/server/new.go b/server/new.go new file mode 100644 index 0000000..3fe393c --- /dev/null +++ b/server/new.go @@ -0,0 +1,21 @@ +package server + +import ( + "local/router" + "local/rssmon3/config" + "strings" +) + +type Server struct { + Port string + router *router.Router +} + +func New() *Server { + config := config.Values() + s := &Server{ + Port: ":" + strings.TrimPrefix(config.Port, ":"), + router: router.New(), + } + return s +} diff --git a/server/new_test.go b/server/new_test.go new file mode 100644 index 0000000..5443e24 --- /dev/null +++ b/server/new_test.go @@ -0,0 +1,13 @@ +package server + +import ( + "local/rssmon3/config" + "os" + "testing" +) + +func TestNew(t *testing.T) { + os.Setenv("DB", "MAP") + config.New() + New() +} diff --git a/server/routes.go b/server/routes.go new file mode 100644 index 0000000..53511a4 --- /dev/null +++ b/server/routes.go @@ -0,0 +1,165 @@ +package server + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + "io" + "local/router" + "local/rssmon3/config" + "local/sandbox/selenium/copart/copart/auction" + "local/storage" + "log" + "net/http" + "regexp" + "strings" +) + +func (s *Server) Routes() error { + handles := []struct { + path string + handler http.HandlerFunc + }{ + {path: fmt.Sprintf("/api/tag/%s", router.Wildcard), handler: s.tag}, + } + for _, handle := range handles { + if err := s.router.Add(handle.path, handle.handler); err != nil { + return err + } + } + return nil +} + +func (s *Server) notFound(w http.ResponseWriter, r *http.Request) { + http.NotFound(w, r) + return +} + +func (s *Server) userError(w http.ResponseWriter, r *http.Request, err error) { + status := http.StatusBadRequest + log.Printf("%d: %v", status, err) + w.WriteHeader(status) +} + +func (s *Server) error(w http.ResponseWriter, r *http.Request, err error) { + status := http.StatusInternalServerError + log.Printf("%d: %v", status, err) + w.WriteHeader(status) +} + +func (s *Server) tag(w http.ResponseWriter, r *http.Request) { + foo := s.notFound + switch r.Method { + case "GET": + foo = s.getFeedByTag + } + foo(w, r) +} + +func (s *Server) getFeedByTag(w http.ResponseWriter, r *http.Request) { + tag := regexp.MustCompile("^.*\\/").ReplaceAllString(r.URL.Path, "") + log.Println(tag) + s.error(w, r, errors.New("not impl")) +} + +func (s *Server) auctions(w http.ResponseWriter, r *http.Request) { + foo := http.NotFound + r.ParseForm() + switch strings.ToLower(r.Method) { + case "get": + if len(r.Form) > 0 { + foo = s.query + } else { + foo = s.get + } + } + foo(w, r) +} + +func (s *Server) get(w http.ResponseWriter, r *http.Request) { + db := config.Values().DB + if len(strings.Split(r.URL.Path, "/")) < 3 { + s.notFound(w, r) + return + } + key := strings.Split(r.URL.Path, "/")[2] + log.Println("GET", key) + value, err := db.Get(key) + if err == storage.ErrNotFound { + s.notFound(w, r) + return + } + if err != nil { + s.error(w, r, err) + return + } + io.Copy(w, bytes.NewBuffer(value)) +} + +func (s *Server) query(w http.ResponseWriter, r *http.Request) { + log.Println("QUERY", r.URL.Path) + list, err := s.list() + if err != nil { + s.error(w, r, err) + return + } + form := r.Form + for _, value := range form { + for _, chunk := range value { + iteration := []string{} + for _, name := range list { + if strings.Contains(strings.ToLower(name), strings.ToLower(chunk)) { + iteration = append(iteration, name) + } + } + list = iteration + } + } + if len(list) < 1 { + s.notFound(w, r) + return + } + carsJSON, err := s.gatherCarsTruncatedJSON(list) + if err != nil { + s.error(w, r, fmt.Errorf("gather cars(%v): %v", list, err)) + return + } + w.Write(carsJSON) +} + +func (s *Server) list() ([]string, error) { + db := config.Values().DB + list := []string{} + if b, err := db.Get("LIST"); err == storage.ErrNotFound { + list = []string{} + db.Set("LIST", []byte("[]")) + } else if err != nil { + return nil, fmt.Errorf("bad list in storage: %v", err) + } else if err := json.Unmarshal(b, &list); err != nil { + return nil, fmt.Errorf("bad list in storage: %v", err) + } + return list, nil +} + +func (s *Server) gatherCarsTruncatedJSON(keys []string) ([]byte, error) { + cars := []*auction.Car{} + k := 0 + for _, key := range keys { + k += 1 + if k > 50 { + cars = append(cars, &auction.Car{Title: "Max results reached, please search more specifically"}) + break + } + b, err := config.Values().DB.Get(key) + if err != nil { + return nil, err + } + c := auction.NewCar() + if err := c.Decode(b); err != nil { + return nil, err + } + cars = append(cars, c) + } + return json.Marshal(cars) +} diff --git a/server/routes_test.go b/server/routes_test.go new file mode 100644 index 0000000..a1c0028 --- /dev/null +++ b/server/routes_test.go @@ -0,0 +1,104 @@ +package server + +import ( + "local/rssmon3/config" + "net/http" + "net/http/httptest" + "os" + "strings" + "testing" +) + +var validNS = "ns" +var validKey = "key" +var validValue = "value" + +func TestRoutes(t *testing.T) { + os.Setenv("DB", "MAP") + os.Args = []string{"nothing"} + if err := config.New(); err != nil { + t.Fatal(err) + } + s := New() + if err := s.Routes(); err != nil { + t.Fatalf("cannot routes(): %v", err) + } + cases := []struct { + path string + method string + status int + }{ + { + path: "/api/tag", + method: "GET", + status: http.StatusNotFound, + }, + { + path: "/api/tag/", + method: "GET", + status: http.StatusNotFound, + }, + { + path: "/api/tag/key", + method: "GET", + status: http.StatusOK, + }, + { + path: "/api/tag/key", + method: "POST", + status: http.StatusNotFound, + }, + } + + for i, c := range cases { + r, err := http.NewRequest(c.method, c.path, strings.NewReader(validValue)) + if err != nil { + t.Fatalf("err making request: %v", err) + } + w := httptest.NewRecorder() + s.ServeHTTP(w, r) + if w.Code != c.status { + t.Errorf("[%d] wrong status for %q on %q: %v, want %v", i, c.method, c.path, w.Code, c.status) + } + } +} + +func TestServerHandlersNotFound(t *testing.T) { + os.Args = []string{"a"} + config.New() + s := New() + w := httptest.NewRecorder() + r, _ := http.NewRequest("GET", "/", nil) + s.notFound(w, r) + if w.Code != http.StatusNotFound { + t.Error(w.Code) + } +} + +func TestServerHandlers(t *testing.T) { + os.Args = []string{"a"} + config.New() + s := New() + cases := []struct { + foo func(http.ResponseWriter, *http.Request, error) + code int + }{ + { + foo: s.userError, + code: http.StatusBadRequest, + }, + { + foo: s.error, + code: http.StatusInternalServerError, + }, + } + + for _, c := range cases { + w := httptest.NewRecorder() + r, _ := http.NewRequest("GET", "/", nil) + c.foo(w, r, nil) + if w.Code != c.code { + t.Errorf("unexpected status: want %v, got %v", c.code, w.Code) + } + } +} diff --git a/server/server.go b/server/server.go new file mode 100644 index 0000000..954d1df --- /dev/null +++ b/server/server.go @@ -0,0 +1,13 @@ +package server + +import ( + "net/http" +) + +func (s *Server) Run() error { + return http.ListenAndServe(s.Port, s) +} + +func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { + s.router.ServeHTTP(w, r) +} diff --git a/server/server_test.go b/server/server_test.go new file mode 100644 index 0000000..eb2dc6e --- /dev/null +++ b/server/server_test.go @@ -0,0 +1,14 @@ +package server + +import ( + "local/rssmon3/config" + "testing" + "time" +) + +func TestServerRun(t *testing.T) { + config.New() + s := New() + go s.Run() + time.Sleep(time.Millisecond * 100) +}