text:
Pyxis Tankers Inc. (NASDAQ: PXS) Sells Two Small Tankers for $8.9M and Takes Delivery of Pyxis Lamda
Brandon Manns
Pyxis Tankers Inc. (NASDAQ: PXS) has announced an agreement to sell two small tankers, Northsea Beta and Northsea Alpha. The product tanker firm will sell the two 2010 constructed 8,600 dwt product tankers for a cash consideration of around $8.6 million. Pyxis has a modern fleet of seven tankers dealing with refined petroleum products and bulk liquids transportation.
Pyxis expects net proceeds of $2.8 million.
The sale of the vessel is expected to be completed between late January and towards the end of February 2022, pursuant to standard closing conditions. Following the discharge of the outstanding loans securing these boats and the settlement of other transaction expenses, Pyxis Tanker anticipates earning net cash proceeds of $2.8 million, which will be put into working capital. As a result, the company forecasts a $2 million non-cash loss from asset sales for the fiscal period ending December 31, 2021.
Valentines Valentis, Chairman and CEO of Pyxis Tankers, commented, "The sale of these non–core assets underscores our strategic focus on the eco–MR product tanker sector, reduces outstanding debt and improves balance sheet liquidity. Moving forward, we will have a fleet of five MRs with an average age of 8.3 years. Upon completion of the dispositions, our total debt should be approximately $77.35 million at a weighted average interest rate of less than 4% per annum with the next bank loan maturity scheduled in 3.5 years."
Pyxis acquired Pyxis Lamda for $32 million
Recently the company disclosed that according to a previously announced transaction, it has taken delivery of Pyxis Lamda. Pyxis Lamda is a 2017 built 50,596 dwt mid-sized product tanker that was acquired from an entity with links to the company's CEO and Chairman for $32 million.
Valentis commented, "We are pleased to announce the successful delivery of the Pyxis Lamda, which increases our fleet to a total of seven vessels, including five modern eco- MR2's. The addition of this young vessel to our fleet positions the Company to take advantage of an anticipated improving chartering environment within the product tanker sector.
*Past performance is not a predictor of future results. All investing involves risk of loss and individual investments may vary. The examples provided may not be representative of typical results. Your capital is at risk when you invest – you can lose some or all of your money. Never risk more than you can afford to lose.By submitting your information you agree to the terms of our Privacy Policy • Cancel Newsletter Any Time.This is a FREE service from Finacials Trend. Signing up for our FREE daily e-letter also entitles you to receive this report. We will NOT share your email address with anyone.
Related Topics:NASDAQ PXSPXSPXS NewsPXS StockPyxis Tankers Inc. (NASDAQ: PXS)
Green Thumb Industries Inc. (OTCMKTS: GTBIF) Finalizes Leafline Industries Acquisition Expanding to Minnesota
Zynerba Pharmaceuticals Inc. (NASDAQ: ZYNE) Offers Program Updates On Evaluation Of Zygel In ASD, 22q. DEE And FXS
Pyxis Tankers Inc. (NASDAQ: PXS) Reports 21.3% YoY Increase In Net Revenue For Q3 2021
Trulieve Cannabis Corp (OTCMKTS: TCNNF) will host a Listening and Education Tour. The tour aims to meet with local leaders and exchange ideas. It will cover topics like expungement, agricultural, economic, and medical opportunities in the cannabis industry.
Champ Bailey will moderate the event
Champ Bailey, a football Hall of Famer and the chief diversity officer at Trulieve Georgia, will moderate the event. Additionally, Trulieve will hold its first event at the Carolyn Harris Performing Arts Center, Adel.
According to Bailey, a resident and native of Georgia, he is excited to meet experts and teach people the medical benefits of cannabis. He adds that Trulieve will make several tour stops to meet with community leaders. With the help of these leaders, the company will teach locals about how the cannabis industry could change the community. It will also create local support programs.
Experts that will be at the events
Moreover, the programs will have various industry experts, including Jim Wernick, the Director of State Expansion at Trulieve; Dr. James Lillard, the lead researcher at more house school of Medicine; Chase Daughtrey, a Cook County Judge, Heather Green, the president of the Adel-cook County Chamber of Commerce, and Luther Duke, the Mayor of Adel.
Trulieve is asking communities to submit questions before each stop through its emails. After the sessions, the company will also try to develop ways to help the community.
Trulieve is a cannabis company that operates in 11 U.S states. It has leading operations in Pennsylvania, Florida, and Arizona. Its other locations are Maryland, West Virginia, Connecticut, Massachusetts, and California.
Trulieve focuses on logistics, cultivating, processing, manufacturing, wholesale, and retail of cannabis and cannabis-infused products. It sells these products through Trulieve branded retail stores. It also has an online website where customers can purchase its products.
Trulieve products include nasal sprays, tinctures, vapes, edibles, dissolvable powders, capsules, topicals, concentrates, and flowers. It sells them through the Roll One, Modern Flower, Loveli, Co2lors, Avenue, Alchemy, Sweet Talk, Muse, Momenta, and Cultivar Collection brands.
The company also has 161 dispensaries, 112 of which are in Florida. Its headquarters are in Quincy, Florida.
Ward abbott
HempMeds Brasil, a subsidiary of Medical Marijuana Inc (OTCMKTS: MJNA), will sponsor the first Obesity Medicine Symposium for the Brazilian Society of Obesity. This event will take place on March 3-6, 2022.
The symposium will educate people on the benefits of cannabidiol
The Symposium will be at the Centro South Convention Center, Santa Catarina. It aims to bring together medical professionals, wellness organizations, and educators to talk about technological innovations and techniques that have emerged in treating obesity. HempMeds is sponsoring the event to spread awareness on how cannabidiol can be a crucial step in wellness routines.
According to Matheus Patelli, the Managing Director at Hemp Meds Brasil, the event gives the company a chance to educate people on cannabidiol. It will also highlight the benefits of cannabinoids in wellness, how people can use them, and the research surrounding them.
Patelli adds that the event will benefit both the people and the company as cannabidiol is legal in the country. Moreover, the government subsidizes it, so people know how and when to use it.
HempMeds will also give a presentation
Besides providing sponsorship for the event, HempMeds will also give a presentation on cannabidiol and medical cannabis on March 4. The presentation will touch on products in Brazil, their safety, legality, and applications.
Blake Schroeder, the CEO of Medical Marijuana, states that the company has had high revenue and operational growth in the last few years. Furthermore, its brand presence enabled it to host and sponsor the event. Schroeder adds that it has partnered with high-profile researchers and doctors. This move has allowed Medical Marijuana to educate and be transparent with its customers.
HempMeds Brasil was among the first cannabis companies which the National Sanitary Surveillance Agency has approved to import cannabidiol-based products. The company's license allows it to supply products to various medical centers.
These products treat multiple sclerosis, chronic pain, Parkinson's disease, and epilepsy. HempMeds is developing products for other diseases.
HempMeds' parent company, Medical Marijuana, is a cannabis company that operates under various subsidiaries. Other than HempMeds, or also owns Kannaway. The company also partners with companies like Neuropathix and Axim Biotechnology Inc. Its headquarters are in San Diego, California.
Pineapple Express Delivery Inc, a subsidiary of Fire & Flower Holdings Corp (OTCMKTS: FFLWF), will offer next business day delivery via e-commerce websites owned by British Columbia Cannabis stores in Metro Vancouver. This will start on February 28, 2022.
Pineapple express makes fast deliveries
Pineapple Express is the most prominent cannabis delivery company. It does over 40,000 deliveries monthly to medical and adult-use cannabis customers in Canada. This company has become an essential part of Fire & Flower holdings since its acquisition on January 25, 2022.
According to the President of Pineapple Express, Randy Rolph, the company recognizes its customers' need for fast delivery. Cannabis users in the Metro Vancouver area will now take advantage of the subsidiary's services as it will begin offering next-day delivery services in British Columbia.
Ralph adds that Pineapple Express is very efficient with the fastest and highest scale in the country. The company can also make cost-effective deliveries.
Fire & Flower is a cannabis retailer that has over 100 stores. It uses Hifyre, a technology development subsidiary, to improve its operations and increase revenues. It also educates its customers on cannabis use.
Fire & Flower stores
Fire & Flower sells cannabis products through numerous stores. One of its first stores is Friendly Stranger, which opened in 1994 in Canada. This store has been advocating for cannabis legalization for years.
Friendly Stranger has worked to educate people on the benefits of using cannabis. It has also fought for people who were unfairly charged with cannabis use and made safe hemp products available for the people.
Another store that Fire & Flower owns is Happy Dayz which opened in 2007. The store now has 9 locations in Ontario. Unlike Friendly Stranger, these stores are smaller with an engaging team to give customers a more personalized experience.
HotBox Cannabis is a store that serves customers in Toronto. It also comes with a cannabis consumption lounge at 204 Augusta Street. This lounge, which was the first in Toronto, is near its 206 Augusta store, making it more convenient for cannabis customers. The lounge also sells accessories.
Fire & Flower also uses the Open Field Distribution logo to distribute wholesale products in Saskatchewan.


text:
using wallpaper::WallpaperLayout;
using wallpaper::WallpaperInfo;
using wallpaper::WALLPAPER_LAYOUT_CENTER;
using wallpaper::WALLPAPER_LAYOUT_CENTER_CROPPED;
using wallpaper::WALLPAPER_LAYOUT_STRETCH;
using wallpaper::WALLPAPER_LAYOUT_TILE;

namespace chromeos {

namespace {

int kLargeWallpaperWidth = 256;
int kLargeWallpaperHeight = wallpaper::kLargeWallpaperMaxHeight;
int kSmallWallpaperWidth = 256;
int kSmallWallpaperHeight = wallpaper::kSmallWallpaperMaxHeight;

const char kTestUser1[] = "test1@domain.com";
const char kTestUser1Hash[] = "test1@domain.com-hash";
const char kTestUser2[] = "test2@domain.com";
const char kTestUser2Hash[] = "test2@domain.com-hash";

}  // namespace

class WallpaperManagerBrowserTest : public InProcessBrowserTest {
 public:
  WallpaperManagerBrowserTest () : controller_(NULL),
                                   local_state_(NULL) {
  }

  virtual ~WallpaperManagerBrowserTest () {}

  virtual void SetUpOnMainThread() override {
    controller_ = ash::Shell::GetInstance()->desktop_background_controller();
    local_state_ = g_browser_process->local_state();
    ash::DesktopBackgroundController::TestAPI(controller_)
        .set_wallpaper_reload_delay_for_test(0);
    UpdateDisplay("800x600");
  }

  virtual void SetUpCommandLine(base::CommandLine* command_line) override {
    command_line->AppendSwitch(switches::kLoginManager);
    command_line->AppendSwitchASCII(switches::kLoginProfile, "user");
  }

  virtual void TearDownOnMainThread() override {
    controller_ = NULL;
  }

  // Update the display configuration as given in |display_specs|.  See
  // ash::test::DisplayManagerTestApi::UpdateDisplay for more details.
  void UpdateDisplay(const std::string& display_specs) {
    ash::test::DisplayManagerTestApi display_manager_test_api(
        ash::Shell::GetInstance()->display_manager());
    display_manager_test_api.UpdateDisplay(display_specs);
  }

  void WaitAsyncWallpaperLoadStarted() {
    base::RunLoop().RunUntilIdle();
  }

 protected:

  // Return custom wallpaper path. Create directory if not exist.
  base::FilePath GetCustomWallpaperPath(const char* sub_dir,
                                        const std::string& username_hash,
                                        const std::string& id) {
    base::FilePath wallpaper_path =
        WallpaperManager::Get()->GetCustomWallpaperPath(sub_dir,
                                                        username_hash,
                                                        id);
    if (!base::DirectoryExists(wallpaper_path.DirName()))
      base::CreateDirectory(wallpaper_path.DirName());

    return wallpaper_path;
  }

  // Logs in |username|.
  void LogIn(const std::string& username, const std::string& username_hash) {
    user_manager::UserManager::Get()->UserLoggedIn(
        username, username_hash, false);
    WaitAsyncWallpaperLoadStarted();
  }

  int LoadedWallpapers() {
    return WallpaperManager::Get()->loaded_wallpapers();
  }

  void ClearDisposableWallpaperCache() {
    WallpaperManager::Get()->ClearDisposableWallpaperCache();
  }

  // Initializes default wallpaper paths "*default_*file" and writes JPEG
  // wallpaper images to them.
  // Only needs to be called (once) by tests that want to test loading of
  // default wallpapers.
  void CreateCmdlineWallpapers() {
    wallpaper_dir_.reset(new base::ScopedTempDir);
    ASSERT_TRUE(wallpaper_dir_->CreateUniqueTempDir());
    wallpaper_manager_test_utils::CreateCmdlineWallpapers(
        *wallpaper_dir_, &wallpaper_manager_command_line_);
  }

  ash::DesktopBackgroundController* controller_;
  PrefService* local_state_;
  scoped_ptr<base::CommandLine> wallpaper_manager_command_line_;

  // Directory created by CreateCmdlineWallpapers () to store default
  // wallpaper images.
  scoped_ptr<base::ScopedTempDir> wallpaper_dir_;

 private:
  DISALLOW_COPY_AND_ASSIGN(WallpaperManagerBrowserTest);
};

// Tests that the appropriate custom wallpaper (large vs. small) is loaded
// depending on the desktop resolution.
IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTest,
                       LoadCustomLargeWallpaperForLargeExternalScreen) {
  WallpaperManager* wallpaper_manager = WallpaperManager::Get();
  LogIn(kTestUser1, kTestUser1Hash);
  std::string id = base::Int64ToString(base::Time::Now().ToInternalValue());
  base::FilePath small_wallpaper_path = GetCustomWallpaperPath(
      wallpaper::kSmallWallpaperSubDir, kTestUser1Hash, id);
  base::FilePath large_wallpaper_path = GetCustomWallpaperPath(
      wallpaper::kLargeWallpaperSubDir, kTestUser1Hash, id);

  // Saves the small/large resolution wallpapers to small/large custom
  // wallpaper paths.
  ASSERT_TRUE(wallpaper_manager_test_utils::WriteJPEGFile(
      small_wallpaper_path,
      kSmallWallpaperWidth,
      kSmallWallpaperHeight,
      wallpaper_manager_test_utils::kSmallDefaultWallpaperColor));
  ASSERT_TRUE(wallpaper_manager_test_utils::WriteJPEGFile(
      large_wallpaper_path,
      kLargeWallpaperWidth,
      kLargeWallpaperHeight,
      wallpaper_manager_test_utils::kLargeDefaultWallpaperColor));

  std::string relative_path = base::FilePath(kTestUser1Hash).Append(id).value();
  // Saves wallpaper info to local state for user |kTestUser1|.
  WallpaperInfo info = {relative_path, WALLPAPER_LAYOUT_CENTER_CROPPED,
                        user_manager::User::CUSTOMIZED,
                        base::Time::Now().LocalMidnight()};
  wallpaper_manager->SetUserWallpaperInfo(kTestUser1, info, true);

  // Set the wallpaper for |kTestUser1|.
  wallpaper_manager->SetUserWallpaperNow(kTestUser1);
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  gfx::ImageSkia wallpaper = controller_->GetWallpaper();

  // Display is initialized to 800x600. The small resolution custom wallpaper is
  // expected.
  EXPECT_EQ(kSmallWallpaperWidth, wallpaper.width());
  EXPECT_EQ(kSmallWallpaperHeight, wallpaper.height());

  // Hook up another 800x600 display. This shouldn't trigger a reload.
  UpdateDisplay("800x600,800x600");
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  // The small resolution custom wallpaper is expected.
  EXPECT_EQ(kSmallWallpaperWidth, wallpaper.width());
  EXPECT_EQ(kSmallWallpaperHeight, wallpaper.height());

  // Detach the secondary display.
  UpdateDisplay("800x600");
  // Hook up a 2000x2000 display. The large resolution custom wallpaper should
  // be loaded.
  UpdateDisplay("800x600,2000x2000");
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  wallpaper = controller_->GetWallpaper();

  // The large resolution custom wallpaper is expected.
  EXPECT_EQ(kLargeWallpaperWidth, wallpaper.width());
  EXPECT_EQ(kLargeWallpaperHeight, wallpaper.height());

  // Detach the secondary display.
  UpdateDisplay("800x600");
  // Hook up the 2000x2000 display again. The large resolution default wallpaper
  // should persist. Test for crbug/165788.
  UpdateDisplay("800x600,2000x2000");
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  wallpaper = controller_->GetWallpaper();

  // The large resolution custom wallpaper is expected.
  EXPECT_EQ(kLargeWallpaperWidth, wallpaper.width());
  EXPECT_EQ(kLargeWallpaperHeight, wallpaper.height());
}

// If chrome tries to reload the same wallpaper twice, the latter request should
// be prevented. Otherwise, there are some strange animation issues as
// described in crbug.com/158383.
IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTest,
                       PreventReloadingSameWallpaper) {
  WallpaperManager* wallpaper_manager = WallpaperManager::Get();
  // New user log in, a default wallpaper is loaded.
  LogIn(kTestUser1, kTestUser1Hash);
  EXPECT_EQ(1, LoadedWallpapers());
  // Loads the same wallpaper before the initial one finished. It should be
  // prevented.
  wallpaper_manager->SetUserWallpaperNow(kTestUser1);
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  EXPECT_EQ(1, LoadedWallpapers());
  // Loads the same wallpaper after the initial one finished. It should be
  // prevented.
  wallpaper_manager->SetUserWallpaperNow(kTestUser1);
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  EXPECT_EQ(1, LoadedWallpapers());
  ClearDisposableWallpaperCache();

  // Change wallpaper to a custom wallpaper.
  std::string id = base::Int64ToString(base::Time::Now().ToInternalValue());
  base::FilePath small_wallpaper_path = GetCustomWallpaperPath(
      wallpaper::kSmallWallpaperSubDir, kTestUser1Hash, id);
  ASSERT_TRUE(wallpaper_manager_test_utils::WriteJPEGFile(
      small_wallpaper_path,
      kSmallWallpaperWidth,
      kSmallWallpaperHeight,
      wallpaper_manager_test_utils::kSmallDefaultWallpaperColor));

  std::string relative_path = base::FilePath(kTestUser1Hash).Append(id).value();
  // Saves wallpaper info to local state for user |kTestUser1|.
  WallpaperInfo info = {relative_path, WALLPAPER_LAYOUT_CENTER_CROPPED,
                        user_manager::User::CUSTOMIZED,
                        base::Time::Now().LocalMidnight()};
  wallpaper_manager->SetUserWallpaperInfo(kTestUser1, info, true);

  wallpaper_manager->SetUserWallpaperNow(kTestUser1);
  WaitAsyncWallpaperLoadStarted();
  EXPECT_EQ(2, LoadedWallpapers());
  // Loads the same wallpaper before the initial one finished. It should be
  // prevented.
  wallpaper_manager->SetUserWallpaperNow(kTestUser1);
  WaitAsyncWallpaperLoadStarted();
  EXPECT_EQ(2, LoadedWallpapers());
  wallpaper_manager->SetUserWallpaperNow(kTestUser1);
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  EXPECT_EQ(2, LoadedWallpapers());
}

// Some users have old user profiles which may have legacy wallpapers. And these
// lagacy wallpapers should migrate to new wallpaper picker version seamlessly.
// This tests make sure we compatible with migrated old wallpapers.
// crosbug.com/38429
IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTest,
                       PRE_UseMigratedWallpaperInfo) {
  // New user log in, a default wallpaper is loaded.
  LogIn(kTestUser1, kTestUser1Hash);
  // Old wallpaper migration code doesn't exist in codebase anymore. Modify user
  // wallpaper info directly to simulate the wallpaper migration. See
  // crosbug.com/38429 for details about why we modify wallpaper info this way.
  WallpaperInfo info = {"123", WALLPAPER_LAYOUT_CENTER_CROPPED,
                        user_manager::User::DEFAULT,
                        base::Time::Now().LocalMidnight()};
  base::FilePath user_data_dir;
  ASSERT_TRUE(PathService::Get(chrome::DIR_USER_DATA, &user_data_dir));
  ASSERT_TRUE(wallpaper_manager_test_utils::WriteJPEGFile(
      user_data_dir.Append("123"),
      wallpaper_manager_test_utils::kWallpaperSize,
      wallpaper_manager_test_utils::kWallpaperSize,
      wallpaper_manager_test_utils::kLargeDefaultWallpaperColor));
  WallpaperManager::Get()->SetUserWallpaperInfo(kTestUser1, info, true);
}

IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTest,
                       UseMigratedWallpaperInfo) {
  LogIn(kTestUser1, kTestUser1Hash);
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  // This test should finish normally. If timeout, it is probably because
  // migrated wallpaper is somehow not loaded. Bad things can happen if
  // wallpaper is not loaded at login screen. One example is: crosbug.com/38429.
}

// Some users have old user profiles which may never get a chance to migrate.
// This tests make sure we compatible with these profiles.
IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTest,
                       PRE_UsePreMigrationWallpaperInfo) {
  // New user log in, a default wallpaper is loaded.
  LogIn(kTestUser1, kTestUser1Hash);
  // Old wallpaper migration code doesn't exist in codebase anymore. So if
  // user's profile is not migrated, it is the same as no wallpaper info. To
  // simulate this, we remove user's wallpaper info here.
  WallpaperManager::Get()->RemoveUserWallpaperInfo(kTestUser1);
}

IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTest,
                       UsePreMigrationWallpaperInfo) {
  LogIn(kTestUser1, kTestUser1Hash);
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  // This test should finish normally. If timeout, it is probably because chrome
  // can not handle pre migrated user profile (M21 profile or older).
}

// Test for http://crbug.com/265689. When hooked up a large external monitor,
// the default large resolution wallpaper should load.
IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTest,
                       HotPlugInScreenAtGAIALoginScreen) {
  UpdateDisplay("800x600");
  // Set initial wallpaper to the default wallpaper.
  WallpaperManager::Get()->SetDefaultWallpaperNow(chromeos::login::kStubUser);
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();

  // Hook up a 2000x2000 display. The large resolution custom wallpaper should
  // be loaded.
  UpdateDisplay("800x600,2000x2000");
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
}

class WallpaperManagerBrowserTestNoAnimation
    : public WallpaperManagerBrowserTest {
 public:
  virtual void SetUpCommandLine(base::CommandLine* command_line) override {
    command_line->AppendSwitch(switches::kLoginManager);
    command_line->AppendSwitchASCII(switches::kLoginProfile, "user");
    command_line->AppendSwitch(chromeos::switches::kDisableLoginAnimations);
    command_line->AppendSwitch(chromeos::switches::kDisableBootAnimation);
  }
};

// Same test as WallpaperManagerBrowserTest.UseMigratedWallpaperInfo. But
// disabled boot and login animation.
IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTestNoAnimation,
                       PRE_UseMigratedWallpaperInfo) {
  // New user log in, a default wallpaper is loaded.
  LogIn(kTestUser1, kTestUser1Hash);
  // Old wallpaper migration code doesn't exist in codebase anymore. Modify user
  // wallpaper info directly to simulate the wallpaper migration. See
  // crosbug.com/38429 for details about why we modify wallpaper info this way.
  WallpaperInfo info = {"123", WALLPAPER_LAYOUT_CENTER_CROPPED,
                        user_manager::User::DEFAULT,
                        base::Time::Now().LocalMidnight()};
  base::FilePath user_data_dir;
  ASSERT_TRUE(PathService::Get(chrome::DIR_USER_DATA, &user_data_dir));
  ASSERT_TRUE(wallpaper_manager_test_utils::WriteJPEGFile(
      user_data_dir.Append("123"),
      wallpaper_manager_test_utils::kWallpaperSize,
      wallpaper_manager_test_utils::kWallpaperSize,
      wallpaper_manager_test_utils::kLargeDefaultWallpaperColor));
  WallpaperManager::Get()->SetUserWallpaperInfo(kTestUser1, info, true);
}

IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTestNoAnimation,
                       UseMigratedWallpaperInfo) {
  LogIn(kTestUser1, kTestUser1Hash);
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  // This test should finish normally. If timeout, it is probably because
  // migrated wallpaper is somehow not loaded. Bad things can happen if
  // wallpaper is not loaded at login screen. One example is: crosbug.com/38429.
}

// Same test as WallpaperManagerBrowserTest.UsePreMigrationWallpaperInfo. But
// disabled boot and login animation.
IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTestNoAnimation,
                       PRE_UsePreMigrationWallpaperInfo) {
  // New user log in, a default wallpaper is loaded.
  LogIn(kTestUser1, kTestUser1Hash);
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  // Old wallpaper migration code doesn't exist in codebase anymore. So if
  // user's profile is not migrated, it is the same as no wallpaper info. To
  // simulate this, we remove user's wallpaper info here.
  WallpaperManager::Get()->RemoveUserWallpaperInfo(kTestUser1);
}

IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTestNoAnimation,
                       UsePreMigrationWallpaperInfo) {
  LogIn(kTestUser1, kTestUser1Hash);
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  // This test should finish normally. If timeout, it is probably because chrome
  // can not handle pre migrated user profile (M21 profile or older).
}

class WallpaperManagerBrowserTestCrashRestore
    : public WallpaperManagerBrowserTest {
 public:
  virtual void SetUpCommandLine(base::CommandLine* command_line) override {
    command_line->AppendSwitch(chromeos::switches::kDisableLoginAnimations);
    command_line->AppendSwitch(chromeos::switches::kDisableBootAnimation);
    command_line->AppendSwitchASCII(switches::kLoginUser, kTestUser1);
    command_line->AppendSwitchASCII(switches::kLoginProfile, "user");
  }
};

IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTestCrashRestore,
                       PRE_RestoreWallpaper) {
  LogIn(kTestUser1, kTestUser1Hash);
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
}

// Test for crbug.com/270278. It simulates a browser crash and verifies if user
// wallpaper is loaded.
// Fails on the MSAN bots. See http://crbug.com/444477
#if defined(MEMORY_SANITIZER)
#define MAYBE_RestoreWallpaper DISABLED_RestoreWallpaper
#else
#define MAYBE_RestoreWallpaper RestoreWallpaper
#endif
IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTestCrashRestore,
                       MAYBE_RestoreWallpaper) {
  EXPECT_EQ(1, LoadedWallpapers());
}

class WallpaperManagerBrowserTestCacheUpdate
    : public WallpaperManagerBrowserTest {
 public:
  virtual void SetUpCommandLine(base::CommandLine* command_line) override {
    command_line->AppendSwitchASCII(switches::kLoginUser, kTestUser1);
    command_line->AppendSwitchASCII(switches::kLoginProfile, "user");
  }
 protected:
  // Creates a test image of size 1x1.
  gfx::ImageSkia CreateTestImage(SkColor color) {
    return wallpaper_manager_test_utils::CreateTestImage(1, 1, color);
  }
};

// Sets kTestUser1's wallpaper to a custom wallpaper.
IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTestCacheUpdate,
                       PRE_VerifyWallpaperCache) {
  // Add kTestUser1 to user list. kTestUser1 is the default login profile.
  LogIn(kTestUser1, kTestUser1Hash);

  std::string id = base::Int64ToString(base::Time::Now().ToInternalValue());
  WallpaperManager* wallpaper_manager = WallpaperManager::Get();
  base::FilePath small_wallpaper_path = GetCustomWallpaperPath(
      wallpaper::kSmallWallpaperSubDir, kTestUser1Hash, id);
  base::FilePath large_wallpaper_path = GetCustomWallpaperPath(
      wallpaper::kLargeWallpaperSubDir, kTestUser1Hash, id);

  // Saves the small/large resolution wallpapers to small/large custom
  // wallpaper paths.
  ASSERT_TRUE(wallpaper_manager_test_utils::WriteJPEGFile(
      small_wallpaper_path,
      kSmallWallpaperWidth,
      kSmallWallpaperHeight,
      wallpaper_manager_test_utils::kSmallDefaultWallpaperColor));
  ASSERT_TRUE(wallpaper_manager_test_utils::WriteJPEGFile(
      large_wallpaper_path,
      kLargeWallpaperWidth,
      kLargeWallpaperHeight,
      wallpaper_manager_test_utils::kLargeDefaultWallpaperColor));

  std::string relative_path = base::FilePath(kTestUser1Hash).Append(id).value();
  // Saves wallpaper info to local state for user |kTestUser1|.
  WallpaperInfo info = {relative_path, WALLPAPER_LAYOUT_CENTER_CROPPED,
                        user_manager::User::CUSTOMIZED,
                        base::Time::Now().LocalMidnight()};
  wallpaper_manager->SetUserWallpaperInfo(kTestUser1, info, true);
  wallpaper_manager->SetUserWallpaperNow(kTestUser1);
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  scoped_ptr<WallpaperManager::TestApi> test_api;
  test_api.reset(new WallpaperManager::TestApi(wallpaper_manager));
  // Verify SetUserWallpaperNow updates wallpaper cache.
  gfx::ImageSkia cached_wallpaper;
  EXPECT_TRUE(test_api->GetWallpaperFromCache(kTestUser1, &cached_wallpaper));
}

// Tests for crbug.com/339576. Wallpaper cache should be updated in
// multi-profile mode when user:
// 1. chooses an online wallpaper from wallpaper
//    picker (calls SetWallpaperFromImageSkia);
// 2. chooses a custom wallpaper from wallpaper
//    picker (calls SetCustomWallpaper);
// 3. reverts to a default wallpaper.
// Also, when user login at multi-profile mode, previous logged in users'
// wallpaper cache should not be deleted.
IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTestCacheUpdate,
                       VerifyWallpaperCache) {
  WallpaperManager* wallpaper_manager = WallpaperManager::Get();

  // Force load initial wallpaper
  // (simulate DesktopBackgroundController::UpdateDisplay()).
  wallpaper_manager->UpdateWallpaper(true);
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  scoped_ptr<WallpaperManager::TestApi> test_api;
  test_api.reset(new WallpaperManager::TestApi(wallpaper_manager));
  gfx::ImageSkia cached_wallpaper;
  // Previous custom wallpaper should be cached after user login.
  EXPECT_TRUE(test_api->GetWallpaperFromCache(kTestUser1, &cached_wallpaper));

  LogIn(kTestUser2, kTestUser2Hash);
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  // Login another user should not delete logged in user's wallpaper cache.
  // Note active user is still kTestUser1.
  EXPECT_TRUE(test_api->GetWallpaperFromCache(kTestUser1, &cached_wallpaper));

  gfx::ImageSkia red_wallpaper = CreateTestImage(SK_ColorRED);
  wallpaper_manager->SetWallpaperFromImageSkia(kTestUser1,
                                               red_wallpaper,
                                               WALLPAPER_LAYOUT_CENTER,
                                               true);
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  // SetWallpaperFromImageSkia should update wallpaper cache when multi-profile
  // is turned on.
  EXPECT_TRUE(test_api->GetWallpaperFromCache(kTestUser1, &cached_wallpaper));
  EXPECT_TRUE(cached_wallpaper.BackedBySameObjectAs(red_wallpaper));

  gfx::ImageSkia green_wallpaper = CreateTestImage(SK_ColorGREEN);
  wallpaper_manager->SetCustomWallpaper(kTestUser1,
                                        kTestUser1Hash,
                                        "dummy",  // dummy file name
                                        WALLPAPER_LAYOUT_CENTER,
                                        user_manager::User::CUSTOMIZED,
                                        green_wallpaper,
                                        true);
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  // SetCustomWallpaper should also update wallpaper cache when multi-profile is
  // turned on.
  EXPECT_TRUE(test_api->GetWallpaperFromCache(kTestUser1, &cached_wallpaper));
  EXPECT_TRUE(cached_wallpaper.BackedBySameObjectAs(green_wallpaper));

  wallpaper_manager->SetDefaultWallpaperNow(kTestUser1);
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  // SetDefaultWallpaper should invalidate the user's wallpaper cache.
  EXPECT_FALSE(test_api->GetWallpaperFromCache(kTestUser1, &cached_wallpaper));
}

// ----------------------------------------------------------------------
// Test default wallpapers.

class TestObserver : public WallpaperManager::Observer {
 public:
  explicit TestObserver(WallpaperManager* wallpaper_manager)
      : update_wallpaper_count_(0), wallpaper_manager_(wallpaper_manager) {
    DCHECK(wallpaper_manager_);
    wallpaper_manager_->AddObserver(this);
  }

  virtual ~TestObserver() {
    wallpaper_manager_->RemoveObserver(this);
  }

  virtual void OnWallpaperAnimationFinished(const std::string&) override {
  }

  virtual void OnUpdateWallpaperForTesting() override {
    ++update_wallpaper_count_;
  }

  int GetUpdateWallpaperCountAndReset() {
    const size_t old = update_wallpaper_count_;
    update_wallpaper_count_ = 0;
    return old;
  }

 private:
  int update_wallpaper_count_;
  WallpaperManager* wallpaper_manager_;

  DISALLOW_COPY_AND_ASSIGN(TestObserver);
};

IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTest, DisplayChange) {
  // TODO(derat|oshima|bshe): Host windows can't be resized on Win8.
  if (!ash::test::AshTestHelper::SupportsHostWindowResize())
    return;

  TestObserver observer(WallpaperManager::Get());

  // Set the wallpaper to ensure that UpdateWallpaper() will be called when the
  // display configuration changes.
  gfx::ImageSkia image = wallpaper_manager_test_utils::CreateTestImage(
      640, 480, wallpaper_manager_test_utils::kCustomWallpaperColor);
  controller_->SetWallpaperImage(image, WALLPAPER_LAYOUT_STRETCH);

  // Small wallpaper images should be used for configurations less than or
  // equal to kSmallWallpaperMaxWidth by kSmallWallpaperMaxHeight, even if
  // multiple displays are connected.
  UpdateDisplay("800x600");
  // Wait for asynchronous DisplayBackgroundController::UpdateDisplay() call.
  base::RunLoop().RunUntilIdle();
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  EXPECT_EQ(WallpaperManager::WALLPAPER_RESOLUTION_SMALL,
            WallpaperManager::Get()->GetAppropriateResolution());
  EXPECT_EQ(0, observer.GetUpdateWallpaperCountAndReset());

  UpdateDisplay("800x600,800x600");
  // Wait for asynchronous DisplayBackgroundController::UpdateDisplay() call.
  base::RunLoop().RunUntilIdle();
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  EXPECT_EQ(WallpaperManager::WALLPAPER_RESOLUTION_SMALL,
            WallpaperManager::Get()->GetAppropriateResolution());
  EXPECT_EQ(0, observer.GetUpdateWallpaperCountAndReset());

  UpdateDisplay("1366x800");
  // Wait for asynchronous DisplayBackgroundController::UpdateDisplay() call.
  base::RunLoop().RunUntilIdle();
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  EXPECT_EQ(WallpaperManager::WALLPAPER_RESOLUTION_SMALL,
            WallpaperManager::Get()->GetAppropriateResolution());
  EXPECT_EQ(1, observer.GetUpdateWallpaperCountAndReset());

  // At larger sizes, large wallpapers should be used.
  UpdateDisplay("1367x800");
  // Wait for asynchronous DisplayBackgroundController::UpdateDisplay() call.
  base::RunLoop().RunUntilIdle();
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  EXPECT_EQ(WallpaperManager::WALLPAPER_RESOLUTION_LARGE,
            WallpaperManager::Get()->GetAppropriateResolution());
  EXPECT_EQ(1, observer.GetUpdateWallpaperCountAndReset());

  UpdateDisplay("1367x801");
  // Wait for asynchronous DisplayBackgroundController::UpdateDisplay() call.
  base::RunLoop().RunUntilIdle();
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  EXPECT_EQ(WallpaperManager::WALLPAPER_RESOLUTION_LARGE,
            WallpaperManager::Get()->GetAppropriateResolution());
  EXPECT_EQ(1, observer.GetUpdateWallpaperCountAndReset());

  UpdateDisplay("2560x1700");
  // Wait for asynchronous DisplayBackgroundController::UpdateDisplay() call.
  base::RunLoop().RunUntilIdle();
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  EXPECT_EQ(WallpaperManager::WALLPAPER_RESOLUTION_LARGE,
            WallpaperManager::Get()->GetAppropriateResolution());
  EXPECT_EQ(1, observer.GetUpdateWallpaperCountAndReset());

  // Rotated smaller screen may use larger image.
  UpdateDisplay("800x600/r");
  // Wait for asynchronous DisplayBackgroundController::UpdateDisplay() call.
  base::RunLoop().RunUntilIdle();
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  EXPECT_EQ(WallpaperManager::WALLPAPER_RESOLUTION_SMALL,
            WallpaperManager::Get()->GetAppropriateResolution());
  EXPECT_EQ(1, observer.GetUpdateWallpaperCountAndReset());

  UpdateDisplay("800x600/r,800x600");
  // Wait for asynchronous DisplayBackgroundController::UpdateDisplay() call.
  base::RunLoop().RunUntilIdle();
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  EXPECT_EQ(WallpaperManager::WALLPAPER_RESOLUTION_SMALL,
            WallpaperManager::Get()->GetAppropriateResolution());
  EXPECT_EQ(1, observer.GetUpdateWallpaperCountAndReset());
  UpdateDisplay("1366x800/r");
  // Wait for asynchronous DisplayBackgroundController::UpdateDisplay() call.
  base::RunLoop().RunUntilIdle();
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  EXPECT_EQ(WallpaperManager::WALLPAPER_RESOLUTION_LARGE,
            WallpaperManager::Get()->GetAppropriateResolution());
  EXPECT_EQ(1, observer.GetUpdateWallpaperCountAndReset());

  // Max display size didn't chagne.
  UpdateDisplay("900x800/r,400x1366");
  // Wait for asynchronous DisplayBackgroundController::UpdateDisplay() call.
  base::RunLoop().RunUntilIdle();
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  EXPECT_EQ(0, observer.GetUpdateWallpaperCountAndReset());
}

// Test that WallpaperManager loads the appropriate wallpaper
// images as specified via command-line flags in various situations.
// Splitting these into separate tests avoids needing to run animations.
// TODO(derat): Combine these into a single test
IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTest, SmallDefaultWallpaper) {
  if (!ash::test::AshTestHelper::SupportsMultipleDisplays())
    return;

  CreateCmdlineWallpapers();

  // At 800x600, the small wallpaper should be loaded.
  UpdateDisplay("800x600");
  WallpaperManager::Get()->SetDefaultWallpaperNow(std::string());
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor(
      controller_->GetWallpaper(),
      wallpaper_manager_test_utils::kSmallDefaultWallpaperColor));
}

IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTest, LargeDefaultWallpaper) {
  if (!ash::test::AshTestHelper::SupportsMultipleDisplays())
    return;

  CreateCmdlineWallpapers();
  UpdateDisplay("1600x1200");
  WallpaperManager::Get()->SetDefaultWallpaperNow(std::string());
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor(
      controller_->GetWallpaper(),
      wallpaper_manager_test_utils::kLargeDefaultWallpaperColor));
}

IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTest,
                       LargeDefaultWallpaperWhenRotated) {
  if (!ash::test::AshTestHelper::SupportsMultipleDisplays())
    return;
  CreateCmdlineWallpapers();

  UpdateDisplay("1200x800/r");
  WallpaperManager::Get()->SetDefaultWallpaperNow(std::string());
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor(
      controller_->GetWallpaper(),
      wallpaper_manager_test_utils::kLargeDefaultWallpaperColor));
}

IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTest, SmallGuestWallpaper) {
  if (!ash::test::AshTestHelper::SupportsMultipleDisplays())
    return;
  CreateCmdlineWallpapers();
  user_manager::UserManager::Get()->UserLoggedIn(
      chromeos::login::kGuestUserName, chromeos::login::kGuestUserName, false);
  UpdateDisplay("800x600");
  WallpaperManager::Get()->SetDefaultWallpaperNow(std::string());
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor(
      controller_->GetWallpaper(),
      wallpaper_manager_test_utils::kSmallGuestWallpaperColor));
}

IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTest, LargeGuestWallpaper) {
  if (!ash::test::AshTestHelper::SupportsMultipleDisplays())
    return;

  CreateCmdlineWallpapers();
  user_manager::UserManager::Get()->UserLoggedIn(
      chromeos::login::kGuestUserName, chromeos::login::kGuestUserName, false);
  UpdateDisplay("1600x1200");
  WallpaperManager::Get()->SetDefaultWallpaperNow(std::string());
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();
  EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor(
      controller_->GetWallpaper(),
      wallpaper_manager_test_utils::kLargeGuestWallpaperColor));
}

IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTest,
                       SwitchBetweenDefaultAndCustom) {
  // Start loading the default wallpaper.
  UpdateDisplay("640x480");
  CreateCmdlineWallpapers();
  user_manager::UserManager::Get()->UserLoggedIn(
      chromeos::login::kStubUser, "test_hash", false);

  WallpaperManager::Get()->SetDefaultWallpaperNow(std::string());

  // Custom wallpaper should be applied immediately, canceling the default
  // wallpaper load task.
  gfx::ImageSkia image = wallpaper_manager_test_utils::CreateTestImage(
      640, 480, wallpaper_manager_test_utils::kCustomWallpaperColor);
  WallpaperManager::Get()->SetCustomWallpaper(chromeos::login::kStubUser,
                                              "test_hash",
                                              "test-nofile.jpeg",
                                              WALLPAPER_LAYOUT_STRETCH,
                                              user_manager::User::CUSTOMIZED,
                                              image,
                                              true);
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();

  EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor(
      controller_->GetWallpaper(),
      wallpaper_manager_test_utils::kCustomWallpaperColor));

  WallpaperManager::Get()->SetDefaultWallpaperNow(std::string());
  wallpaper_manager_test_utils::WaitAsyncWallpaperLoadFinished();

  EXPECT_TRUE(wallpaper_manager_test_utils::ImageIsNearColor(
      controller_->GetWallpaper(),
      wallpaper_manager_test_utils::kSmallDefaultWallpaperColor));
}

}  // namespace chromeos

redpajama_set_name: RedPajamaGithub


text:
Time to regulate China's booming bike share sector
With 7.2 million shared bikes on the road, new policies are needed to protect the public interest
Liu Shaokun, Li Wei, Deng Han
As China's sharing economy took off in 2016, shared bicycle schemes powered by internet connectivity and smartphone apps spread from university campuses to cover entire cities.
Almost overnight, millions of company bikes in red, yellow and blue spread across China's city streets and into their back alleys. These bikes rapidly overtook other forms of transport for people making short journeys.
The traditional model of bike sharing requires bikes to be returned to fixed docking stations. But the new market entrants wanted to do away with docking and service points in favour of GPS positioning and mobile payments.
Using your phone, you can see the nearest bike on a map and once you've located it, you scan a barcode on the frame to unlock it and pay. When you're done, you leave it where you want. This approach is much more flexible and convenient, allowing you to get closer to your location. An ITDP survey of 10,000 people in Tianjin found that 93% of users said shared bikes would become an essential part of public transport.
Statistics from Cheetah Global Lab, an internet research company, show that as of April 2017 there were 45 firms running bike-share schemes in China, with 7.2 million bikes on the streets. Data from China's two largest bike-share companies shows that Mobike has over three million bikes in 50 cities, which are used up to 20 million times a day, with a total of 600 million journeys made so far. Competitor Ofo also has over three million bikes in use, but across 70 cities.
This explosive growth has been fuelled by a previously unmet demand for cheap and convenient transportation over short distances, as well as a need to improve the structure of urban transport and reduce air pollution.
A report by online mapping provider Gaode into urban transport in China during the first quarter of 2017 indicated that the arrival of bike-share schemes in Beijing and Shanghai was associated with a clear drop in the number of car journeys of less than five kilometres. This would also suggest a reduction in pollution and energy consumption.
But the rocketing number of bikes has presented cities with a new set of challenges. There's a lack of infrastructure to accommodate the increasing number of bike journeys, and rules for managing bike-share schemes are inadequate or absent.
Governments across China are starting to guide development of the sector, with nine cities having issued policies on shared bikes so far. However, local governments are just starting to explore the issues involved, rather than actually solve them.
Self-regulation by the market alone will not fix the problems faced by this new sector. There's an urgent need for a systematic framework of management policies and service norms.
The bike-share schemes popular in China today are operated by the market but rely on public infrastructure. The services provided are of public benefit, and the market does have inherent quality and efficiency advantages when it comes to providing public services. But there are undeniable problems with a purely market-based approach.
Companies provide services for the sake of profit and are rarely motivated to spend money to provide public services. The most obvious problem with the schemes is the inconsiderate parking of thousands of bikes. There should be policies or rules in place that define the responsibilities of companies, the government and users; whereby companies supply and rent bikes, the government provides standards and guidance, complementary infrastructure and policy safeguards, while people make use of the service.
With this in mind, here are four areas where action is needed now:
1. Providing bike infrastructure
The rise of bike-share schemes has highlighted the failure of Chinese cities to give bicycles their rightful place in urban transportation and exposed a lack of cycling infrastructure. Such infrastructure is essential if cycling is to become a safe, convenient and a practical mode of transport.
Cycling infrastructure needs to meet demand. It should include the provision of bike racks near public transport stops and commercial, business and residential centres. This will make life easier for cyclists and reduce the number of bikes parked without consideration for others. Bike lanes are also essential to allow for safe, pleasant and convenient travel.
2. Setting product standards
Shared bikes are used far more intensively than privately owned ones but current product standards are nowhere near adequate. Specific standards are needed to ensure rider safety.
3. More accessible payment methods
It is easy to overlook the "social justice" dimension to shared bikes. Most users of bikes from companies such as Mobike and Ofo are young. In part, this is because the ability to make use of a smartphone and app to find, rent and pay for a bike is essential. But this is a barrier to use for older customers. Conventional bike rental schemes offer a range of payment methods and so are used by a wider range of age groups. To ensure fair access to public transportation, other payment options should be offered so more urban residents can make use of shared bikes.
4. Data-led management
Bike-share schemes have succeeded thanks to modern information technology. But such technology can also be used to reduce the problem of badly parked bikes. For example, shared bikes should have GPS trackers that allow for geo-fencing to determine whether the bike has been left in a permitted location.
If bike-share companies shared data across a single platform for analysis, city managers could also determine the optimum number of bikes needed, and use this data to work out where to place bike racks, and so on.
The development of shared bike schemes has met a public need for short-distance transportation. In the short term though the exponential growth, lack of relevant policy and infrastructure failings have inevitably created several problems. It's now time for considered guidance to help this emerging industry contribute to the greening of China's urban transport.
Liu Shaokun
Deng Han
consumersinfrastructurepolicy
Bike-sharing schemes: Flourishing or running riot?
Reinventing the wheel: Chinese cycle scheme wins innovation race
VIDEO: Hangzhou takes to two wheels in green transport revolution
Nostalgia and utopia on two wheels

redpajama_set_name: RedPajamaCommonCrawl


text:
Guilty Pleasure: Hari Kondabolu loves 'Untamed Heart'
September 19, 2019 · 4:00 PM EDT
By Schuyler Swenson
In the mid-'90s, when all of his buddies were watching action movies, 14-year-old Hari Kondabolu was secretly obsessing over a romantic drama, "Untamed Heart."
The movie stars Marisa Tomei as a waitress at a diner in Minneapolis. She falls in love with a mysterious busboy played by Christian Slater, but there's a catch — Slater's character claims to have a baboon heart, which ultimately leads to a tragic ending.
Video of Untamed Heart Official Trailer #1 - Christian Slater Movie (1993) HD
Ridiculous conflict device aside, pubescent Kondabolu knew it wasn't the kind of movie he could tell other people was his favorite.
"As a teenage boy ... you're not supposed to want to fall in love, and you're not supposed to appreciate two characters who are in love. We're not really taught that."
Nevertheless, "Untamed Heart" was just the gateway drug for Kondabolu, who has been mainlining sappy romance films ever since.
Guest host Hari Kondabolu is a stand-up comedian and the writer and star of the documentary "The Problem with Apu." He's performing shows across the United States this fall.
(Originally aired October 19, 2017)
Guilty Pleasure: 'Sweet Valley High'
Guilty Pleasure: Tig Notaro defends 'Photograph' by Nickelback
Guilty Pleasure: The word 'moist'
Guilty Pleasure: 'Love Actually'
Arts, Culture & MediaGuilty Pleasures
Hari KondaboluMarisa TomeiChristian Slater


text:
<?php
//EligeRespuestaType.php
namespace juanluisroman\CslmBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class EligeRespuestaType extends AbstractType
{
    private $idiomas;
    private $niveles;

    public function __construct($idiomas, $niveles)
    {
        $this->idiomas = $idiomas;
        $this->niveles = $niveles;
    }

    public function buildForm(FormBuilderInterface $builder, array $options)
    {

        $builder
            ->add('nombre', null, array('attr' => array('class' => 'input-texto')))
            ->add('enunciado', null, array('attr' => array('class' => 'input-texto')))
            ->add('respuestaCorrecta', null, array('attr' => array('class' => 'input-texto')))
            ->add('respuesta2', null, array('attr' => array('class' => 'input-texto')))
            ->add('respuesta3', null, array('attr' => array('class' => 'input-texto')))
            ->add('respuesta4', null, array('attr' => array('class' => 'input-texto')))
            ->add('enunciado', null, array('attr' => array('class' => 'input-texto')))
            ->add(
                'idioma',
                'choice',
                array(
                    'choices' => array('Idiomas' => $this->idiomas)
                )
            )
            ->add(
                'nivel',
                'choice',
                array(
                    'choices' => array('Niveles' => $this->niveles)
                )
            )
            ->add('guardar', 'submit')
        ;
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'juanluisroman\CslmBundle\Entity\EligeRespuesta'
        ));
    }

    public function getName()
    {
        return 'elige_respuesta_form';
    }
}


text:
« Creation Creditors Daily Sacrifice, The »
Defined — Phm 1:18.
Might demand
Pledges. — De 24:10,11; Pr 22:27.
Security of others. — Pr 6:1; 22:26.
Mortgages on property. — Ne 5:3.
Bills or promissory notes. — Lu 16:6,7.
To return before sunset, garments taken in pledge — Ex 22:26,27; De 24:12,13; Eze 18:7,12.
Prohibited from
Taking millstones in pledge. — De 24:6.
Violently selecting pledges. — De 24:10.
Exacting usury from brethren. — Ex 22:25; Le 25:36,37.
Exacting debts from brethren during sabbatical year. — De 15:2,3.
Might take interest from strangers — De 23:20.
Sometimes entirely remitted debts — Ne 5:10-12; Mt 18:27; Lu 7:42.
Often cruel in exacting debts — Ne 5:7-9; Job 24:3-9; Mt 18:28-30.
Often exacted debts
By selling the debtor or taking him for a servant. — Mt 18:25; Ex 21:2.
By selling the debtor's property. — Mt 18:25.
By selling the debtor's family. — 2Ki 4:1; Job 24:9; Mt 18:25.
By imprisonment. — Mt 5:25,26; 18:34.
From the sureties. — Pr 11:15; 22:26,27.
Were often defrauded — 1Sa 22:2; Lu 16:5-7.
Illustrative of
God's claim upon men. — Mt 5:25,26; 18:23,25; Lu 7:41,47.
The demands of the law. — Ga 5:3.


Autosol metal polish is a versatile and very effective metal polish which can be used in all forms of metallic polishing and cleaning including the stainless steel, chrome metals and nickel metals. It's the best polish recommended for a safe, effective and easy cleaner for metallic equipment.
It's the best option for cleaning and removing rusts from metallic equipment, clearing oxidation and removing stains among all other dirt associated with metals. When cleaned or polished, the metal is given a brand new look which is very shiny and attractive to the eyes of human beings.
Autosol metal polish is also used for polishing metals and by that, it gives them a wonderful shiny look which lasts for a guaranteed long period of time and thus prolongs the life of the particular metal, without the owner having to keep on applying maintenance activities. Once the metal has been polished and or cleaned with this quality metal polish, it fully acquires a guaranteed long period of protection against bad weather side effects such as the rusting, oxidation, irremovable staining and wearing out.
I am interested in the "Autosol Metal Polish".


Vesicles By the time we hit 60, most of us have lost of our flavor and a lot of our sense of smell. The cornea of the eye is the only part of the body which has no blood supply. Hair is so strong that if you should create a rope out of it you can lift a vehicle. The tongue is the only muscle. The eye remains exactly the identical size from birth, however, also the ear and nose never quit growing.
Newborn babies are unable to cry till they are about three months old, because they can not shed tears. That doesn't stop them from crying! When you die, your nails and hair seem to grow. This is simply an illusion resulting from the moisture leaving our own body causing it to shrivel up. Every human being begins out their life . This lasts for about 30 minutes. A new born baby will have approximately 100 more bones than a fully grownup because our bones fuse together as we grow. The thigh bone (Femur) that extends from the pelvis to the knee will be the biggest, longest, strongest bone in the human body. The Stapes bone at the ear is the tiniest bone.
Our muscles operate by pulling. They never push. The individual heart beats approximately 100,000 times per day. Each Kidney has more than one million tubes, which will measure 64 km (40 miles) should put end to end. The liver is five times heavier than the heart. They'd streetch should you lie all the blood vessels on your body end to end! All of us have. However there are just a few people world wide. HH is the most popular blood type and O is the most frequent. The human lungs have the exact same surface area for a tennis court. Fingernails grow about twice as fast as toenails. The single thing in life is death!
Thanks for visiting my blog, article above Vesicles If you like the Vesicles what I would like you to do is to support and help us developing more experience by sharing this Skeleton design reference or clicking some related posts below for more pictures gallery and further information. Moreover you can help us grow by sharing this reference of home designs or interior architecture on Facebook, Twitter, and Google Plus.


text:
APLU Recognizes UT Austin for Leadership in Degree Completion
The Association of Public and Land-grant Universities (APLU) today named UT Austin as one of five finalists for its 2017 Project Degree Completion Award, recognizing efforts to improve degree completion rates.
AUSTIN, Texas — As part of its ongoing efforts to increase degree completion, the Association of Public and Land-grant Universities (APLU) today named The University of Texas at Austin as one of five finalists for its 2017 Project Degree Completion Award. The annual prize recognizes and rewards public universities across the country that employ innovative approaches to improve retention and degree completion.
Since making increased graduation rates a priority, UT Austin has implemented a comprehensive set of programs to increase student retention and graduation rates, especially for students in underserved populations. Using predictive analytics to provide information about students who need support, UT Austin's four-year graduation rate increased to 61 percent in 2016 — the highest on record for the university and an increase of 10 percentage points since 2011.
"Entering college and pursuing a degree is more important than ever before," said APLU President Peter McPherson. "But the critical importance of completing a degree is too often overlooked. UT Austin and the other four 2017 Project Degree Completion Award finalists have made great strides in improving student retention and degree completion — and we're thrilled to share their experiences so other institutions can replicate their approaches and results."
The UT Austin student success initiatives include the use of predictive analytics to identify students most likely to be underprepared for the rigors of college, redesigning orientation to emphasize academics and a sense of belonging for every student, and placing all incoming first-year students in small communities to help them acclimate academically, developmentally and socially.
In addition, an enhanced "progress to degree" tool tracks students' progress toward completing their coursework in four years and alerts advisers if they are off track. The Graduation Help Desk assists students with barriers to timely graduation, including course availability and scheduling conflicts.
The University Leadership Network was also created to address the nonacademic barriers at-risk students face by providing incentive-based scholarships alongside professional development and internship programming.
"Being accepted to UT is the first step for our students, but timely graduation and the award of a bachelor's degree are the goals that empower every student to flourish in a career and a lifetime of achievement and commitment," said Gregory L. Fenves, president of the university. "Because of the university's student success initiatives, record numbers of students from all backgrounds are graduating from UT on time and realizing their potential."
The other finalists for the 2017 Project Degree Completion are Boise State University, Colorado State University, the University of Hawaii at Manoa and Western Michigan University.
The annual Project Degree Completion Award is open to all APLU members. A panel of seven judges reviewed the applications and determined the finalists. The award winner will be announced and all finalists will be recognized at the APLU Annual Meeting, Nov. 12-14, in Washington, D.C.
The award is part of Project Degree Completion — a joint initiative that APLU and the American Association of State Colleges and Universities developed in which nearly 500 public colleges and universities have pledged to collectively award 3.8 million more degrees by 2025.


Edgecombe County Mugshots: Edgecombe County North Carolina Sheriff's Department Inmates and Who's In Jail Roster.
North Carolina Edgecombe County Mugshots.
Search Jail Inmate Roster of Edgecombe County Sheriff's Office.
Edgecombe County Jail Mugshots: Rocky Mount, Conetoe, Leggett, Macclesfield, Pinetops, Princeville, Sharpsburg, Speed, Tarboro, Whitakers.


To use: warm, cool, complimentary, monochromatic, and achromatic color theory in your photographs.
Take a variety of photographs that illustrate: warm colors, cool colors, complimentary colors, monochromatic and achromatic color.
In the assignment lay out 5 image boxes with the labels warm, cool, complimentary, monochromatic and achromatic under the boxes as illustrated above.
Upload your photos and turn on lightbox.
Turn in 5 files: Example of warm, cool, complimentary, monochromatic, and achromatic color. Due Friday, Dec 1.


Board of Governors of the Federal Reserve System (U.S.), 1935- and Federal Reserve Board, 1914-1935.	"September 1974," Federal Reserve Bulletin (September 1974). https://fraser.stlouisfed.org/title/62/item/21477, accessed on April 18, 2019.


A 1914-15 Star, British War Medal, Victory Medal, Comrades of the Great War Badge, National Union of Railwaymen badge, Army Service Book, Association Membership books, Original paperwork etc. Plus his Mother's Silk Memorial marker in envelope.
1631 PTE. H. WRIGHT. W. YORK. R.
Private Harry Wright a native of Hunslet, Leeds, Yorkshire, a Railwayman by trade, was entitled to wear Two Wound Stripes and was discharged due to Wounds received in Action 17.9.1918 and awarded the Silver War Badge number B1144 whilst serving in the 8th Leeds Rifles Battalion of the West Yorkshire Regiment, having been called up to serve on 2.8.1914 from the Territorials, posted to France 16.4.1915.
His papers are on line at Find My Past.
His Regimental number was changed during service to 305199.
A superb original lot with good research potential. Copy MiC and SWB Roll included.


At the Rehabilitation and Orthopedic Center of Johnson Memorial Health, our singular goal is to get you back to your normal, active lifestyle and help you pursue the activities you enjoy the most.
Orthopedic and sports medicine specialists located at the center include James Friedlander, M.D. and Martin Turner, D.O. Dr. Friedlander is a board-certified orthopedic surgeon who has been practicing in Johnson County for many years. Dr. Turner is a board-certified orthopedic surgeon and has completed a special training fellowship in sports medicine. He brings a wide range of new expertise and knowledge to Johnson Memorial and works closely with area high school athletes.
Pain Relief Specialists, Vincent R. Gathings, M.D. is located at the center. Dr. Gathings is a board-certified anesthesiologist who joined the medical staff at Johnson Memorial Health in 2008. Dr. Gathings provides an extensive array of pain therapies with a focus on the treatment of persistent and chronic pain by offering consultation, education, physical rehabilitaton and interventional therapies.
We also have a staff of dedicated RNs, physical therapists, certified athletic trainers and certified x-ray technicians who provide comprehensive orthopedic care. From diagnosing what ails you, to treatment and surgery, and complete recovery and rehabilitation, we will make sure you are back up and running (or playing golf) as soon as possible.
The Orthopedic Care Center is located in the new 1165 Building on the Johnson Memorial Hospital campus. For more information, call us at 317.346.3100.


Archstone, (formerly Archstone-Smith), approached STUDIOS with the vision of creating a 980 unit luxury rental property that contained an unusually large amount of dedicated public amenity space, intended to differentiate their product in an increasingly competitive rental market of Washington, DC. New amenities such as a pet spa, screening room, music rehearsal studios, café, lounge and even an open kitchen for cooking classes and parties, all help to define this property as 'beyond the ordinary'. STUDIOS' vision purposefully blurs the line between interior and exterior space, with a highly coordinated design between the landscaped courtyard and the ground floor amenities. Interior reflecting pools, stone flooring and integrated bench seating enhance this concept. This project was also approached from the viewpoint of the sales process. Knowing that 50% of the units would turn over each year, the planning and design of the spaces was focused on the sales process. STUDIOS deliberately choreographed every step in the sales process, to guide every potential tenant through the spaces and entice them to choose this property.


One of those things is this super-duper-mega-üper-(insert some other extreme adjective here)-chunky knitted pillow(case) I made.
I got some really chunky yard from my mum and decided to make a pillow out of it.
The design is actually really easy and I didn't follow any particular pattern. I just knew that I wanted there to be knitted cables in various sizes on it. And that's basically what I created.
I tried to make a printable pattern if anybody would happen to be interested. Since this is the first time I've done this it might not be perfect but I tried my best to make it clear :)) I knitted a piece that was approximately 30 cm wide and 95 cm long repeating this pattern.


text:
People in Iowa City use service to remember Martin Luther King Jr
IUML wins Kerala's Vengara bypoll
In the Lok Sabha polls, Kunhalikutty had secured a margin of over 40,000 votes, while at the 2016 assembly polls he won with a margin of over 38,000 votes. And ...
North Korea labels Donald Trump a 'war merchant and strangler of peace'
After North Korea conducted its sixth and most powerful nuclear test on September 3, Chinese media executives were told that news stories on North Korea mus...
Birmingham Islamic faith school guilty of sex discrimination
The school is run by a religious group but most of its capital costs -building maintenance, etc. - are paid with taxpayer monies. Friday's court ruling mean...
Brexit negotiations reach deadlock over 'disturbing' divorce bill
Barnier told reporters in Brussels on Thursday that on the issue of the financial settlement, there have "been no negotiations". Though he remained hopeful of r...
MNS members defect to Shiv Sena in BMC; Uddhav calls it 'gharwapsi'
The rebellious faction comprising senior corporator Dilip Lande from Kurla, Archana Bhalerao from Ghatkopar, Parmeshwar Kadam from Vikhroli, Harshala More and D...
Himachal Pradesh assembly election on November 9, counting on December 18
The fact that some regions, especially Lahaul-Spiti become snow bound during winter months, influenced the Commission's decision in finalising the polling sched...
Cavaliers' Tyronn Lue, Dwyane Wade respond to Irving's comments about Cleveland
Coming from Cleveland , the Midwest, where the culture is different. "But we know in Cleveland , we got a great sports town in Cleveland ". Irving sees a...
China's Exports Grow Less Than Forecast; Imports Growth Tops Expectations
Imports for the first three quarters were 3.44 million tonnes, down 9.4 percent on the same period a year ago, customs said. Exports were also optimistic else...
James Van Der Beek Says He Was Harassed As Younger Actor
Van Der Beek, 40, opened up about his own experience, writing on Twitter that he understands "the unwarranted shame" that some of the women involved in the Har...
Sri Lankan Cricketers Not Ready to Play in Lahore
When contacted, a Pakistan Cricket Board official said: "The Sri Lankan cricket board gave us a go ahead after the ICC meeting, so they will not back off from...
Cargo plane crashes into sea off Ivory Coast capital
The crash occurred during a storm with heavy rain and lightning. "There were 10 people aboard including six crew members, three French soldiers and a French c...
Man Finds Winning Lottery Ticket In Pocket Two Days Before Deadline
As it turns out, he checked the tickets right on time, because if he had waited two days later, he would have lost out on $24.1 million. The director of the N...
Pakistan again violates ceasefire in J&K's Poonch, three children injured
The spokesman said the unprovoked firing and condemnable action by Pakistani Army had caused serious injuries to the civilians, and added that army was retaliat...
PM Modi to address centenary celebrations of Patna University today
Modi appreciated the efforts Nitish Kumar towards development of the state and said the progress of eastern India is the Centre's topmost priority. Earlier, i...
JP Morgan Boss Can't Stop Talking About Bitcoin - Calls Investors "Stupid"
Bitcoin is also up 470 percent this year. But yesterday, Dimon went on a tirade against Bitcoin at the Institute of global Finance Conference, speaking at len...
NAB team likely to visit London to collect evidence against Sharif family
An anti-corruption court on Friday adjourned the indictment of ousted Prime Minister Nawaz Sharif , his daughter Maryam Nawaz and son-in-law Muhammad Safdar ...
Faridabad: Five people thrashed by cow vigilantes chanting 'jai hanuman'
One of the victims claimed that the attackers forced him to say " Jai Hanuman ". At least five people were allegedly beaten up by unidentified assailants on t...
Seven killed in Kenya's Turkana county
The heinous attack is believed to be orchestrated by a student suspended from the school a month ago. The students were in school preparing for their national...
Gauri Lankesh murder case: two suspects identified
Two of the three sketches are based on different descriptions of the same suspect. The police on Saturday released two clips of a suspect on a motorcycle scou...
Darjeeling: Several policemen injured in fresh clashes with GJM supporters
Gurung was in hiding in neighbouring Sikkim and had tried to enter Darjeeling hills today, Sharma said. Additional director general of police (Law & Order) A...
States File Lawsuit Over Insurance Cost-Sharing Subsidies
On Thursday night, the White House said the federal government will stop the cost-sharing reduction (CSR) payments for insurers under Obamacare. The legal...
Deadly bomb blast strikes Somalia's Mogadishu
Al-Shabab, an armed group fighting to overthrow the internationally recognised government, has carried out frequent gun, grenade and bomb attacks in Mogadishu a...
China protests to U.S. over sail-by in disputed waters
Beijing says that guided missile destroyer the USS Chafee, entered its territory on Tuesday and carried out "freedom of navigation" maneuvers without Chinese co...
Trump names top Kelly aide, a cybersecurity expert, to run Homeland Security
Bush administration who has lately worked to impose order in Mr. Trump's chaotic West Wing. But even before Trump formally announced Nielsen's appointment du...
Paris to Ban Fossil Fuel Cars by 2030
Rumors have surfaced in recent months that the city would take measures to ban diesel vehicles prior to the 2024 games. Paris City Hall unveiled its vision ...
Maine's Susan Collins declines gov run, will remain in Senate
Maine's senior senator ended months of speculation about her interest in being Maine's next governor by telling 225 attendees at the Penobscot Bay Regional Cham...
Egypt: Khattab Gets 12 Votes in 2nd Round of Unesco Election
Egypt's Foreign Ministry spokesman tweeted out a congratulatory note to Azoulay and wished her success in the final election against Kawari that will be held to...
North Korea renews Guam threat before joint naval exercise
The maneuvers are meant to reinforce the "communications, interoperability and cooperation" between the two armies in the face of North Korea's weapons developm...
Quake hits North Korea near nuclear test site
It was centred very close to North Korea's Punggye-ri Nuclear Test Site, which previous weapons tests have been detected at through the earthquakes they generat...
Officers Down, Schools on Lockdown After North Carolina Prison Break
Police have not identified those killed during the attempted escape. Correction Enterprises Manager Veronica Darden, 50, supervised inmates working in the Speci...
Trump says people using 'Merry Christmas' again
He noted, as Christian conservatives often do, that there are four references to the "creator" in the Declaration of Independence, saying "religious liberty i...
US State Department: Actions against Russian consulate 'perfectly legal'
In a telephone call , Lavrov told Secretary of State Rex Tillerson that the move went against efforts to fix ties between the two countries, which have become ...
International Day of the Girl Child 2017 observed globally
A panel discussion bringing together the selected empowered girls as motivation for other young girls was also arranged. The World Bank in June said ending c...
Indian Court Bans Underage Sex in Child Marriages
The Supreme Court clarified that it has not dealt with the issue of marital rape as it was not raised by respective parties. The bench a bench of Justices Ma...
Man charged for rigging Airbnb rental with hidden cameras
Starnes alerted police. This was found in apartment local station WFTS according to a furr camera, which was hidden in a smoke detector, computer and SD cards...
« First ‹ Previous 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 Next › Last »
BT becomes first European partner for Google Stadia
New push for universal phone chargers across the EU
Cyberpunk 2077 Delay Pushes the Release Date to September 2020
Kumail Nanjiani & Issa Rae in Comedy 'The Lovebirds' Official Trailer
Charlize Theron didn't meet Megyn Kelly before Bombshell role
Celine Dion dedicates Miami concert to mother after her death
Spotify have made a pet playlist for Ozzy Osbourne's dog Rocky
Newspaper: US, China agree to semi-annual talks
BoyleSports takes punt on 33 William Hill stores in NI deal
General Motors employees caught racing in Corvettes, police say
Amazon dismisses employees for filtering email addresses and customer phone numbers
Royal Caribbean: Grandfather 'reckless' in toddler death
Rep. Nadler: Hunter Biden Isn't Legit Witness For Senate Trial
Extreme winter storm: Photos from eastern Newfoundland's monster blizzard
Trump warns Iran's leader to be 'careful with his words'
& # 39; We made a mistake & # 39; altering anti-Trump images: National Archives
China and Myanmar 'stand together' despite Rohingya backlash
Ex-US Rep. Collins gets over 2 years in insider trading case
Trump reveals details of Qassem Soleimani strike at Mar-a-Lago fundraiser
Police officers injured in Honolulu shooting
Libyan commander's forces choke oil flows, overshadowing peace summit
Meghan Markle BUSTED with Tom Cruise
Additional Cases of Coronavirus Reported in Wuhan
BJP announces alliance with Pawan Kalyan-led Jana Sena in Andhra Pradesh
Dinosaur trees in wildfire path saved from extinction
France deploys radar system in Saudi Arabia to 'reassure' Riyadh
4 killed, 1 wounded in shooting
Militants launch 4 rockets from Gaza Strip, 2 intercepted
Copyright © 2020. All rights reserved. ElegantHomesInla


text:
25° Mostly Cloudy Severe Weather Alert
Residents want to block Greenwood quarry's expansion
Leslie Aguilar,
Leslie Aguilar
A quarry near Greenwood, Missouri is looking for permission to expand and that has many folks in Greenwood, and even Pleasant Hill, up in arms. So many people in fact, that a meeting Tuesday night on the quarry had to be moved to a larger location.
GREENWOOD, MO (KCTV) -- A quarry near Greenwood, Missouri is looking for permission to expand and that has many folks in Greenwood, and even Pleasant Hill, up in arms. So many people in fact, that a meeting Tuesday night on the quarry had to be moved to a larger location.
The Greenwood Elementary School gym filled up with folks. A lot of people are going to speak in front of the planning commission and urge them to say no to a special use permit that would allow the nearby quarry to expand.
Barb Byrne's property in Pleasant Hill overlooks some quiet farmland newly annexed into the city of Greenwood. She and her husband moved there years ago, knowing the Martin Marietta Quarry was about three miles away.
"It was far enough away, and it was fine. We were told that within a certain number of years, they would be done. Because they would be finished mining the land that they have now. There was never any talk about them expanding," Byrne said.
Now the company is leasing about 2,000 acres of land adjacent to the existing quarry and to Byrne's home and dozens more.
"I worry about the integrity of my home and then the trucks and the beeping and the noise and the blasting," Byrne said.
The city of Greenwood is considering changing the zoning of the land now leased by Martin Marietta to allow for mining. Neighbors have signs in their yards protesting the change, thanks in part to Byrne's extensive research and outreach on the issue.
"This quarry is something that needs to be more studied before we do a contract for 30 years with this billion-dollar corporation," Byrne said.
Jesse Hill is a lifelong Greenwood resident and member of an environmental group called the Sunrise Movement.
"I had to go to Children's Mercy several times to receive as much treatments as well as many of my neighbors did. I would cough constantly. And my doctors told my parents that the problem was because of the low air quality," Hill said.
He says the risks of making Greenwood a permanent mining town outweigh the benefits of the proposed deal.
$850,000 to fix second Street. A six cent per ton tax on materials leaving the quarry, and 200 acres of donated land.
"If Greenwood is worried about growing, which I know there are, this is not the way to go," Byrne said.
Byrne and her husband created an LLC to fight the quarry expansion and have hired attorney's. Tuesday night, the zoning commission will make their recommendation on the issue which will then go to the Board of Alderman for a vote. We'll let you know what happens.
KCTV5.com is now with you on the go! Get the latest news updates and video, StormTrack5 weather forecast, weather radar, special investigative reports, sports headlines and much more from KCTV5 News.
>> Click/tap here to download our free mobile app. <<
Copyright 2020 KCTV (Meredith Corp.) All rights reserved.
Large crowd shuts down Greenwood City Hall meeting Monday night
Greenwood City Hall simply wasn't big enough to hold every person who wants to make their voice heard about the possible expansion of a quarry's mining operations. The Greenwood Board of Alderman approved the Martin Marietta Greenwood quarry property annexation last month. City leaders must decide if they'll approve a needed permit to expand mining operations within those boundaries.
Barb Byrne
Jesse Hill
Follow Leslie Aguilar
Follow Maggie Holmes


text:
Q: AWS CLI S3 - moving all files in a bucket into a single directory I have an S3 bucket with paths such as:
s3://mybucket/data/2017-01-01/raw/file_file1.txt
s3://mybucket/data/2017-01-01/raw/file_file2.txt
s3://mybucket/data/2017-01-01/filtered/file_file3.txt
s3://mybucket/data/2017-02-01/edited/file_file4.txt

Is there a way to move all files at the end of the directories (they all start with file_) into:
s3://mybucket/data/

with a single command?

A: Recursively copying S3 objects to another bucket
When passed with the parameter --recursive, the following cp command recursively copies all objects under a specified bucket to another bucket while excluding some objects by using an --exclude parameter. In this example, the bucket mybucket has the objects test1.txt and another/test1.txt:
aws s3 cp s3://mybucket/ s3://mybucket2/ --recursive --exclude "mybucket/another/*"

Output:
copy: s3://mybucket/test1.txt to s3://mybucket2/test1.txt

You can combine --exclude and --include options to copy only objects that match a pattern, excluding all others:
aws s3 cp s3://mybucket/logs/ s3://mybucket2/logs/ --recursive --exclude "*" --include "*.log"

Output:
copy: s3://mybucket/test/test.log to s3://mybucket2/test/test.log
copy: s3://mybucket/test3.log to s3://mybucket2/test3.log

In your case it will be:
aws s3 cp s3://mybucket/data/ s3://mybucket/data/ --recursive --exclude "*" --include "file_*.txt"

Source: AWS CLI cp command documentation

A: I think you just have to do
aws s3 cp s3://mybucket/data/ s3://mybucket/data/ --recursive --include "file_file*.txt"

to copy it

redpajama_set_name: RedPajamaStackExchange


text:
Евгений Ребенжа (; 5 марта 1995) — молдавский футболист, нападающий «Флориана» () и молодёжной сборной Молдавии.

Карьера
Евгений является воспитанником Академии футбола «Шериф», выступал за вторую, а затем и основную команду «Шериф». В июле 2013 года подписал контракт с «Тирасполем». В январе 2015 года на правах аренды Ребенжа перешёл в «Шериф». 24 мая 2015 года выиграл с командой Кубок Молдавии 2014/15.

Достижения
 Шериф
  Обладатель Кубка Молдавии (1): 2014/15
  Чемпион Молдавии (2): 2012/13, 2015/16
  Бронзовый призёр чемпионата Молдавии (1): 2014/15

Примечания

Ссылки
 Профиль на сайте ФК «Шериф»
  Профиль на footballdatabase.eu

Футболисты Молдавии
Игроки ФК «Тирасполь»
Игроки ФК «Шериф»
Игроки ФК «Сперанца» Ниспорены

redpajama_set_name: RedPajamaWikipedia


The Triumph of the Cream Separator and the Triumphal Return of the Normandy Cow.
Fresh cow's milk comprises between 85%-90% water and less than 5% fat (cream). Historically, the valuable cream was obtained by leaving the milk to stand in crocks or earthenware containers in the dairy. The less dense fat globules in the milk would rise to the top of the containers and after a period of up to 24 hours, the cream layer could be skimmed off the top. Later refinements of a tap, fitted to the bottom of the container, allowed for the denser skimmed milk to be drained, leaving the cream behind.
There was always a considerable amount of cream left within the skimmed milk and this, coupled with the chance of contamination or souring during the long settling period, was a reason why the dairy side of the farm was never a large proportion of the enterprise. This all changed with the introduction of the continuous cream separator in the last half of the 19th century. Thereby allowing small farmers and homesteaders/smallholders to make cream and butter on a viable marketable scale.
Most of us today will have seen the centrifugal effect, laundry sticking to the walls of the washing machine drum during the spin cycle is a good example and it was the utilisation of this effect which led to the development of the cream separator. Originally containers holding the full-cream milk were spun around a vertical axis. The centrifugal effect on the milk meant that the less dense fraction (the cream) would separate from the main body of liquid and once brought to rest could be skimmed off. Although separation was faster it still meant that the milk had to be processed in batches.
Carl Gustaf de Laval refined the centrifuge idea to create a machine that continuously separated the cream from the milk. His design had a covered bowl which rotated around its vertical axis. Inside this bowl were assembled a stack of conical discs. The bowl, its lid and the discs were all mounted on a driven shaft.
The cream is used directly from the cow so it is run directly into a churn to avoid it being cooled in the bulk tank.
Nowadays it is usual for an electric motor to spin the bowl but originally many of these machines were turned by hand. An exceedingly high gear ratio means that the hand cranking speed is increased to a bowl speed of 6 000 to 8 000 rpm. The consequence of this gearing is that it is very hard to start the turning, you can hear in the film Mickael joking that my face was going redder, well it was hard work! Nowadays 'soft start' electric motors obviate the need for any human musclepower.
The milk is poured into a header tank above the the bowl and enters the bowl via a spigot. where it experiences the centrifugal effect causing the rapid separation of the cream from the milk.
It is interesting to note the configuration of these discs. In the case of the separator in the film (at the end of this post) all of the discs excepting the top one have four 1cm diameter holes near the large central mounting hole. When these discs are assembled these holes line up with those in the adjoining disc. The purpose of these holes is to allow the passage of the raw milk, fed from the bottom of the assembly. It thus means that each interstice between the discs has fresh milk entering it, the denser fraction of the milk is flung to the wall of the disc and thence to the disc perimeter, leaving the cream to rise and pass through the cream outlet.
Although it takes 20 litres of milk to make one litre of cream the farmer is left with two usable and/or marketable products, skimmed milk and cream. Furthermore, the cream can undergo another transformation and be made into butter. Every litre of cream yields 500 grams of butter and again there is no loss with two separate products being created from the process, butter and buttermilk. As people like us are returning to the land and self sufficiency, these sort of machines are proving invaluable and the great thing is they are still about. Many people using or finding them as flower baskets or garden ornaments are now refurbishing them back to working machines. There is also still the possibility of getting spare parts and there are people out there, including on the internet, willing to share knowledge in maintaining and rebuilding these separators. I will put some useful links at the end of this post. It is very pleasing to me that these wonderful pieces of engineering are experiencing a renaissance after so many decades of neglect. It is particularly poignant for us because Gustaf de Laval, although born in Sweden was from French ancestry and Laval is just over the border from here in the next county.
The Normandy is the ultimate sustainable cow because she has only been bred for one thing, to produce high quality creamy milk from grass pasture. When the Vikings came marauding around Northern Europe they were well equipped for a long stay, even bringing their own livestock with them and began farming here in the 10th century. The descendants of these cattle, like the Normandy, can been seen today in the hardy ancient breeds on the Islands and Mainland of Scotland and Ireland and the coastlines of Northern France. Some 5,000 years ago a mutation occurred in the milk solids of dairy herds, in particular in the beta-casein chain of amino acids at position number 67. Cows without the mutation are known as A2 and those with the mutation, such as the Holstein race, are called A1. There is a great deal of information on the internet in particular from the Weston Price Foundation on the health implications of A2 v A1 milk.
A victim of war like the cream separator, the race of la vache normande was virtually wiped out in the battles of Normandy during WWII. It has been a labour of love by individual farmers and enthusiasts to get these beautiful animals back into their countryside. A crowning achievement recently, was the inauguration of an AOC Camembert made exclusively from la vache normande cows' milk. With the ever increasing back-to-the-land movement here in France, the Normandy and her sisters, such as La Pie Noir and the Froment du Léon have returned and to stay.
I have noticed a couple of typos which appear above and below the heading "The Normandy Cow". The first one is "ther" and the second is "the", both should read 'there'.
The is a great deal of information on the internet in particular from the Weston Price Foundation on the health implications of A2 v A1 milk".
I really like reading your articles; you cannot produce them fast enough for me! Thank you very much for taking the time to create and post them.
Nice post. If anyone want to buy the best cream separator in india then you can visit our website NK Dairy equipments. We provide all types cream separator at very cheap rates. If anyone interested you can visit our website.
Thanks Rajwant, if any of your customers want to see this farms' cream separator in operation then they should watch the short film above.
This moved me to tears, because it made me think of my grandma (born 1903). She used to tell me about her odious childhood chore of cleaning the cream separator's discs on their dairy farm. I never knew what it looked like until now. I imagined it quite different. Thank you for writing about this.


text:
Cases Of An Often Drug-Resistant Fungal Infection Were Found In The US
By Ethan Weston
Thirteen cases have been identified in U.S. since spring 2013.
An often drug-resistant fungal infection has made it to the United States, and it can be deadly.
The fungus — a yeast called Candida auris — is believed to have infected 13 people so far in the U.S. According to the Centers for Disease Control and Prevention, this is the first time the fungus has been seen in the states.
SEE MORE: How A Florida Teen Survived A Rare Brain-Eating Amoeba Infection
The infection is often found in health care settings like hospitals and nursing homes and first made an appearance in Japan in 2009.
The first seven cases of Candida auris infection in the U.S. happened between spring 2013 and summer 2016. Four of those patients died, but because they were all already very sick, it's unclear if the fungus killed them.
Six more cases were reported to the CDC after August 2016, and are still under investigation.
Since it was first identified seven years ago, the fungus has been found in South America, the Middle East, Africa, Europe, in Asia's southeast and east — and now North America.
Since it was first identified seven years ago, the fungus has been found in South America, the Middle East, Africa, Europe, in Asia's southeast and east — and now the U.S.
All of the U.S. strains tested were linked to South America and South Asia.
Although most cases of the infection are resistant to multiple drugs, the U.S. cases have all had at least one anti-fungal drug that worked — at least for now.
But officials have long been worried about the increasing rate of antibiotic resistance and science's ability to keep up.
CDC Director Tom Frieden said: "We need to act now to better understand, contain and stop the spread of this drug-resistant fungus. This is an emerging threat, and we need to protect vulnerable patients and others."
The CDC is also worried because at least two of the U.S. infections occurred in patients at an unnamed hospital in Illinois, which is further evidence the fungus can spread within health care systems.
SEE MORE: Cat-Scratch Disease Is Putting More Infected People In The Hospital


If you're looking for Jersey's premier restaurant then look no further than St Aubin where The Anchor Club sits on the first floor of The Boat House.
With probably the best elevated views across St Aubins Bay and the picturesque harbour of St Aubin, The Anchor Club offers wonderful customer service and a menu that makes the most of the magnificent produce Jersey has to offer from land and sea, cooked simply but well.
Once you set foot in The Anchor Club you will be amazed by the nautical opulence of the design of our restaurant which cleverly fuses superyacht with plantation.


Beasties are fun, friendly little monsters with a real sense of adventure! Inspired by everything from film, TV and books to the everyday things we love most about this island we call home, each Beastie is lovingly handmade by Helen right here in Dublin. She knits with high-quality natural fibre yarns, and every Beastie's features and accessories are carefully hand stitched. They also carry their own personal passport, so you'll know yours is truly the only one of its kind!
A lifelong craft addict, Helen has always had a soft spot for weird and wonderful creatures, which she can trace back to a childhood spent watching cartoons and "The Muppet Show". She's been bringing her imaginary friends into the real world with the help of needles, felt and yarn ever since! As well as the Beasties, she'll be packing her stall with some sweet little plushie characters, which will delight kids of all ages.
The Beasties look forward to seeing you all at this year's Flea – in the meantime, find us online and see what we've been up to lately!