text:
<!DOCTYPE html>
<title>menus.inc</title>
<link rel="stylesheet" href="style.css"/>

/**
 * vim: set ts=4 :
 * =============================================================================
 * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
 * =============================================================================
 *
 * This file is part of the SourceMod/SourcePawn SDK.
 *
 * This program is free software; you can redistribute it and/or modify it under
 * the terms of the GNU General Public License, version 3.0, as published by the
 * Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
 * details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * As a special exception, AlliedModders LLC gives you permission to link the
 * code of this program (as well as its derivative works) to "Half-Life 2," the
 * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
 * by the Valve Corporation.  You must obey the GNU General Public License in
 * all respects for all other code used.  Additionally, AlliedModders LLC grants
 * this exception to all derivative works.  AlliedModders LLC defines further
 * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
 * or <http://www.sourcemod.net/license.php>.
 *
 * Version: $Id$
 */

#if defined _menus_included
 #endinput
#endif
#define _menus_included

/**
 * Low-level drawing style of the menu.
 */
enum MenuStyle
{
	MenuStyle_Default = 0,		/**< The "default" menu style for the mod */
	MenuStyle_Valve = 1,		/**< The Valve provided menu style (Used on HL2DM) */
	MenuStyle_Radio = 2,		/**< The simpler menu style commonly used on CS:S */
};

/**
 * Different actions for the menu "pump" callback
 */
enum MenuAction
{
	MenuAction_Start = (1<<0),		/**< A menu has been started (nothing passed) */
	MenuAction_Display = (1<<1),	/**< A menu is about to be displayed (param1=client, param2=MenuPanel Handle) */
	MenuAction_Select = (1<<2),		/**< An item was selected (param1=client, param2=item) */
	MenuAction_Cancel = (1<<3),		/**< The menu was cancelled (param1=client, param2=reason) */
	MenuAction_End = (1<<4),		/**< A menu display has fully ended.
										 param1 is the MenuEnd reason, and if it's MenuEnd_Cancelled, then
										 param2 is the MenuCancel reason from MenuAction_Cancel.
										 */
	MenuAction_VoteEnd = (1<<5),	/**< (VOTE ONLY): A vote sequence has succeeded (param1=chosen item)
										 This is not called if SetVoteResultCallback has been used on the menu. */
	MenuAction_VoteStart = (1<<6), 	/**< (VOTE ONLY): A vote sequence has started (nothing passed) */
	MenuAction_VoteCancel = (1<<7),	/**< (VOTE ONLY): A vote sequence has been cancelled (param1=reason) */
	MenuAction_DrawItem = (1<<8),	/**< An item is being drawn; return the new style (param1=client, param2=item) */
	MenuAction_DisplayItem = (1<<9),/**< Item text is being drawn to the display (param1=client, param2=item)
										  To change the text, use RedrawMenuItem().
										  If you do so, return its return value.  Otherwise, return 0.
										  */
};

/** Default menu actions */
#define MENU_ACTIONS_DEFAULT	MenuAction_Select|MenuAction_Cancel|MenuAction_End
/** All menu actions */
#define MENU_ACTIONS_ALL		MenuAction:0xFFFFFFFF

#define MENU_NO_PAGINATION		0		/**< Menu should not be paginated (10 items max) */
#define MENU_TIME_FOREVER		0		/**< Menu should be displayed as long as possible */

#define ITEMDRAW_DEFAULT		(0)		/**< Item should be drawn normally */
#define ITEMDRAW_DISABLED		(1<<0)	/**< Item is drawn but not selectable */
#define ITEMDRAW_RAWLINE		(1<<1)	/**< Item should be a raw line, without a slot */
#define ITEMDRAW_NOTEXT			(1<<2)	/**< No text should be drawn */
#define ITEMDRAW_SPACER			(1<<3)	/**< Item should be drawn as a spacer, if possible */
#define ITEMDRAW_IGNORE	((1<<1)|(1<<2))	/**< Item should be completely ignored (rawline + notext) */
#define ITEMDRAW_CONTROL		(1<<4)	/**< Item is control text (back/next/exit) */

#define MENUFLAG_BUTTON_EXIT		(1<<0)	/**< Menu has an "exit" button (default if paginated) */
#define MENUFLAG_BUTTON_EXITBACK	(1<<1)	/**< Menu has an "exit back" button */
#define MENUFLAG_NO_SOUND			(1<<2)	/**< Menu will not have any select sounds */
#define MENUFLAG_BUTTON_NOVOTE		(1<<3)	/**< Menu has a "No Vote" button at slot 1 */

#define VOTEINFO_CLIENT_INDEX		0		/**< Client index */
#define VOTEINFO_CLIENT_ITEM		1		/**< Item the client selected, or -1 for none */
#define VOTEINFO_ITEM_INDEX			0		/**< Item index */
#define VOTEINFO_ITEM_VOTES			1		/**< Number of votes for the item */

#define VOTEFLAG_NO_REVOTES			(1<<0)	/**< Players cannot change their votes */

/**
 * Reasons a menu can be cancelled (MenuAction_Cancel).
 */
enum
{
	MenuCancel_Disconnected = -1,	/**< Client dropped from the server */
	MenuCancel_Interrupted = -2,	/**< Client was interrupted with another menu */
	MenuCancel_Exit = -3,			/**< Client exited via "exit" */
	MenuCancel_NoDisplay = -4,		/**< Menu could not be displayed to the client */
	MenuCancel_Timeout = -5,		/**< Menu timed out */
	MenuCancel_ExitBack = -6,		/**< Client selected "exit back" on a paginated menu */
};

/**
 * Reasons a vote can be cancelled (MenuAction_VoteCancel).
 */
enum
{
	VoteCancel_Generic = -1,		/**< Vote was generically cancelled. */
	VoteCancel_NoVotes = -2,		/**< Vote did not receive any votes. */
};

/**
 * Reasons a menu ended (MenuAction_End).
 */
enum
{
	MenuEnd_Selected = 0,			/**< Menu item was selected */
	MenuEnd_VotingDone = -1,		/**< Voting finished */
	MenuEnd_VotingCancelled = -2,	/**< Voting was cancelled */
	MenuEnd_Cancelled = -3,			/**< Menu was cancelled (reason in param2) */
	MenuEnd_Exit = -4,				/**< Menu was cleanly exited via "exit" */
	MenuEnd_ExitBack = -5,			/**< Menu was cleanly exited via "back" */
};

/**
 * Describes a menu's source
 */
enum MenuSource
{
	MenuSource_None = 0,			/**< No menu is being displayed */
	MenuSource_External = 1,		/**< External menu */
	MenuSource_Normal = 2,			/**< A basic menu is being displayed */
	MenuSource_RawPanel = 3,		/**< A display is active, but it is not tied to a menu */
};

/**
 * Called when a menu action is completed.
 *
 * @param menu				The menu being acted upon.
 * @param action			The action of the menu.
 * @param param1			First action parameter (usually the client).
 * @param param2			Second action parameter (usually the item).
 * @noreturn
 */
functag public MenuHandler(Handle:menu, MenuAction:action, param1, param2);

/**
 * Creates a new, empty menu using the default style.
 *
 * @param handler			Function which will receive menu actions.
 * @param actions			Optionally set which actions to receive.  Select,
 *							Cancel, and End will always be received regardless
 *							of whether they are set or not.  They are also
 *							the only default actions.
 * @return					A new menu Handle.
 */
native Handle:CreateMenu(MenuHandler:handler, MenuAction:actions=MENU_ACTIONS_DEFAULT);

/**
 * Displays a menu to a client.
 *
 * @param menu				Menu Handle.
 * @param client			Client index.
 * @param time				Maximum time to leave menu on the screen.
 * @return					True on success, false on failure.
 * @error					Invalid Handle or client not in game.
 */
native bool:DisplayMenu(Handle:menu, client, time);

/**
 * Displays a menu to a client, starting from the given item.
 *
 * @param menu				Menu Handle.
 * @param client			Client index.
 * @param first_item		First item to begin drawing from.
 * @param time				Maximum time to leave menu on the screen.
 * @return					True on success, false on failure.
 * @error					Invalid Handle or client not in game.
 */
native bool:DisplayMenuAtItem(Handle:menu, client, first_item, time);

/**
 * Appends a new item to the end of a menu.
 *
 * @param menu				Menu Handle.
 * @param info				Item information string.
 * @param display			Default item display string.
 * @param style				Drawing style flags.  Anything other than DEFAULT or
 *							DISABLED will be completely ignored when paginating.
 * @return					True on success, false on failure.
 * @error					Invalid Handle or item limit reached.
 */
native AddMenuItem(Handle:menu,
					const String:info[],
					const String:display[],
					style=ITEMDRAW_DEFAULT);

/**
 * Inserts an item into the menu before a certain position; the new item will
 * be at the given position and all next items pushed forward.
 *
 * @param menu				Menu Handle.
 * @param position			Position, starting from 0.
 * @param info				Item information string.
 * @param display			Default item display string.
 * @param style				Drawing style flags.  Anything other than DEFAULT or
 *							DISABLED will be completely ignored when paginating.
 * @return					True on success, false on failure.
 * @error					Invalid Handle or menu position.
 */
native bool:InsertMenuItem(Handle:menu,
						position,
						const String:info[],
						const String:display[],
						style=ITEMDRAW_DEFAULT);

/**
 * Removes an item from the menu.
 *
 * @param menu				Menu Handle.
 * @param position			Position, starting from 0.
 * @return					True on success, false on failure.
 * @error					Invalid Handle or menu position.
 */
native bool:RemoveMenuItem(Handle:menu, position);

/**
 * Removes all items from a menu.
 *
 * @param menu				Menu Handle.
 * @noreturn
 * @error					Invalid Handle or menu position.
 */
native RemoveAllMenuItems(Handle:menu);

/**
 * Retrieves information about a menu item.
 *
 * @param menu				Menu Handle.
 * @param position			Position, starting from 0.
 * @param infoBuf			Info buffer.
 * @param infoBufLen		Maximum length of the info buffer.
 * @param style				By-reference variable to store drawing flags.
 * @param dispBuf			Display buffer.
 * @param dispBufLen		Maximum length of the display buffer.
 * @return					True on success, false if position is invalid.
 * @error					Invalid Handle.
 */
native bool:GetMenuItem(Handle:menu,
						position,
						String:infoBuf[],
						infoBufLen,
						&style=0,
						String:dispBuf[]="",
						dispBufLen=0);

/**
 * Returns the first item on the page of a currently selected menu.
 *
 * This is only valid inside a MenuAction_Select callback.
 *
 * @return					First item number on the page the client was viewing
 *							before selecting the item in the callback.  This can
 *							be used to re-display the menu from the original
 *							position.
 * @error					Not called from inside a MenuAction_Select callback.
 */
native GetMenuSelectionPosition();

/**
 * Returns the number of items in a menu.
 *
 * @param menu				Menu Handle.
 * @return					Number of items in the menu.
 * @error					Invalid Handle.
 */
native GetMenuItemCount(Handle:menu);

/**
 * Sets whether the menu should be paginated or not.
 *
 * If itemsPerPage is MENU_NO_PAGINATION, and the exit button flag is set,
 * then the exit button flag is removed.  It can be re-applied if desired.
 *
 * @param menu				Handle to the menu.
 * @param itemsPerPage		Number of items per page, or MENU_NO_PAGINATION.
 * @return					True on success, false if pagination is too high or
 *							low.
 * @error					Invalid Handle.
 */
native bool:SetMenuPagination(Handle:menu, itemsPerPage);

/**
 * Returns a menu's pagination setting.
 *
 * @param menu				Handle to the menu.
 * @return					Pagination setting.
 * @error					Invalid Handle.
 */
native GetMenuPagination(Handle:menu);

/**
 * Returns a menu's MenuStyle Handle.  The Handle
 * is global and cannot be freed.
 *
 * @param menu				Handle to the menu.
 * @return 					Handle to the menu's draw style.
 * @error					Invalid Handle.
 */
native Handle:GetMenuStyle(Handle:menu);

/**
 * Sets the menu's default title/instruction message.
 *
 * @param menu				Menu Handle.
 * @param fmt				Message string format
 * @param ...				Message string arguments.
 * @noreturn
 * @error					Invalid Handle.
 */
native SetMenuTitle(Handle:menu, const String:fmt[], any:...);

/**
 * Returns the text of a menu's title.
 *
 * @param menu				Menu Handle.
 * @param buffer			Buffer to store title.
 * @param maxlength			Maximum length of the buffer.
 * @return					Number of bytes written.
 * @error					Invalid Handle/
 */
native GetMenuTitle(Handle:menu, String:buffer[], maxlength);

/**
 * Creates a raw MenuPanel based off the menu's style.
 * The Handle must be freed with CloseHandle().
 *
 * @param menu				Menu Handle.
 * @return					A new MenuPanel Handle.
 * @error					Invalid Handle.
 */
native Handle:CreatePanelFromMenu(Handle:menu);

/**
 * Returns whether or not the menu has an exit button.
 * By default, menus have an exit button.
 *
 * @param menu				Menu Handle.
 * @return 					True if the menu has an exit button; false otherwise.
 * @error					Invalid Handle.
 */
native bool:GetMenuExitButton(Handle:menu);

/**
 * Sets whether or not the menu has an exit button.  By default, paginated menus
 * have an exit button.
 *
 * If a menu's pagination is changed to MENU_NO_PAGINATION, and the pagination
 * was previously a different value, then the Exit button status is changed to
 * false.  It must be explicitly re-enabled afterwards.
 *
 * If a non-paginated menu has an exit button, then at most 9 items will be
 * displayed.
 *
 * @param menu				Menu Handle.
 * @param button			True to enable the button, false to remove it.
 * @return 					True if allowed; false on failure.
 * @error					Invalid Handle.
 */
native bool:SetMenuExitButton(Handle:menu, bool:button);

/**
 * Returns whether or not the menu has an "exit back" button.  By default,
 * menus do not have an exit back button.
 *
 * Exit Back buttons appear as "Back" on page 1 of paginated menus and have
 * functionality defined by the user in MenuEnd_ExitBack.
 *
 * @param menu				Menu Handle.
 * @return 					True if the menu has an exit back button; false otherwise.
 * @error					Invalid Handle.
 */
native bool:GetMenuExitBackButton(Handle:menu);

/**
 * Sets whether or not the menu has an "exit back" button. By default, menus
 * do not have an exit back button.
 *
 * Exit Back buttons appear as "Back" on page 1 of paginated menus and have
 * functionality defined by the user in MenuEnd_ExitBack.
 *
 * @param menu				Menu Handle.
 * @param button			True to enable the button, false to remove it.
 * @error					Invalid Handle.
 */
native SetMenuExitBackButton(Handle:menu, bool:button);

/**
 * Sets whether or not the menu has a "no vote" button in slot 1.
 * By default, menus do not have a no vote button.
 *
 * @param menu				Menu Handle.
 * @param button			True to enable the button, false to remove it.
 * @return 					True if allowed; false on failure.
 * @error					Invalid Handle.
 */
native bool:SetMenuNoVoteButton(Handle:menu, bool:button);

/**
 * Cancels a menu from displaying on all clients.  While the
 * cancellation is in progress, this menu cannot be re-displayed
 * to any clients.
 *
 * The menu may still exist on the client's screen after this command.
 * This simply verifies that the menu is not being used anywhere.
 *
 * If any vote is in progress on a menu, it will be cancelled.
 *
 * @param menu				Menu Handle.
 * @noreturn
 * @error					Invalid Handle.
 */
native CancelMenu(Handle:menu);

/**
 * Retrieves a menu's option flags.
 *
 * @param menu				Menu Handle.
 * @return					A bitstring of MENUFLAG bits.
 * @error					Invalid Handle.
 */
native GetMenuOptionFlags(Handle:menu);

/**
 * Sets a menu's option flags.
 *
 * If a certain bit is not supported, it will be stripped before being set.
 * See SetMenuExitButton() for information on Exit buttons.
 * See SetMenuExitBackButton() for information on Exit Back buttons.
 *
 * @param menu				Menu Handle.
 * @param flags				A new bitstring of MENUFLAG bits.
 * @noreturn
 * @error					Invalid Handle.
 */
native SetMenuOptionFlags(Handle:menu, flags);

/**
 * Returns whether a vote is in progress.
 *
 * @param menu				Deprecated; no longer used.
 * @return					True if a vote is in progress, false otherwise.
 */
native bool:IsVoteInProgress(Handle:menu=INVALID_HANDLE);

/**
 * Cancels the vote in progress.
 *
 * @noreturn
 * @error					If no vote is in progress.
 */
native CancelVote();

/**
 * Broadcasts a menu to a list of clients.  The most selected item will be
 * returned through MenuAction_End.  On a tie, a random item will be returned
 * from a list of the tied items.
 *
 * Note that MenuAction_VoteEnd and MenuAction_VoteStart are both
 * default callbacks and do not need to be enabled.
 *
 * @param menu				Menu Handle.
 * @param clients			Array of clients to broadcast to.
 * @param numClients		Number of clients in the array.
 * @param time				Maximum time to leave menu on the screen.
 * @param flags				Optional voting flags.
 * @return					True on success, false if this menu already has a vote session
 *							in progress.
 * @error					Invalid Handle, or a vote is already in progress.
 */
native bool:VoteMenu(Handle:menu, clients[], numClients, time, flags=0);

/**
 * Sends a vote menu to all clients.  See VoteMenu() for more information.
 *
 * @param menu				Menu Handle.
 * @param time				Maximum time to leave menu on the screen.
 * @param flags				Optional voting flags.
 * @return					True on success, false if this menu already has a vote session
 *							in progress.
 * @error					Invalid Handle.
 */
stock bool:VoteMenuToAll(Handle:menu, time, flags=0)
{
	new total;
	decl players[MaxClients];

	for (new i=1; i<=MaxClients; i++)
	{
		if (!IsClientInGame(i) || IsFakeClient(i))
		{
			continue;
		}
		players[total++] = i;
	}

	return VoteMenu(menu, players, total, time, flags);
}
/**
 * Callback for when a vote has ended and results are available.
 *
 * @param menu				The menu being voted on.
 * @param num_votes			Number of votes tallied in total.
 * @param num_clients		Number of clients who could vote.
 * @param client_info		Array of clients.  Use VOTEINFO_CLIENT_ defines.
 * @param num_items			Number of unique items that were selected.
 * @param item_info			Array of items, sorted by count.  Use VOTEINFO_ITEM
 *							defines.
 * @noreturn
 */
functag public VoteHandler(Handle:menu,
						   num_votes,
						   num_clients,
						   const client_info[][2],
						   num_items,
						   const item_info[][2]);

/**
 * Sets an advanced vote handling callback.  If this callback is set,
 * MenuAction_VoteEnd will not be called.
 *
 * @param menu				Menu Handle.
 * @param callback			Callback function.
 * @noreturn
 * @error					Invalid Handle or callback.
 */
native SetVoteResultCallback(Handle:menu, VoteHandler:callback);

/**
 * Returns the number of seconds you should "wait" before displaying
 * a publicly invocable menu.  This number is the time remaining until
 * (last_vote + sm_vote_delay).
 *
 * @return					Number of seconds to wait, or 0 for none.
 */
native CheckVoteDelay();

/**
 * Returns whether a client is in the pool of clients allowed
 * to participate in the current vote.  This is determined by
 * the client list passed to VoteMenu().
 *
 * @param client			Client index.
 * @return					True if client is allowed to vote, false otherwise.
 * @error					If no vote is in progress or client index is invalid.
 */
native bool:IsClientInVotePool(client);

/**
 * Redraws the current vote menu to a client in the voting pool.
 *
 * @param client			Client index.
 * @param revotes			True to allow revotes, false otherwise.
 * @return					True on success, false if the client is in the vote pool
 *							but cannot vote again.
 * @error					No vote in progress, client is not in the voting pool,
 *							or client index is invalid.
 */
native bool:RedrawClientVoteMenu(client, bool:revotes=true);

/**
 * Returns a style's global Handle.
 *
 * @param style			Menu Style.
 * @return				A Handle, or INVALID_HANDLE if not found or unusable.
 */
native Handle:GetMenuStyleHandle(MenuStyle:style);

/**
 * Creates a MenuPanel from a MenuStyle.  Panels are used for drawing raw
 * menus without any extra helper functions.  The Handle must be closed
 * with CloseHandle().
 *
 * @param hStyle		MenuStyle Handle, or INVALID_HANDLE to use the default style.
 * @return				A new MenuPanel Handle.
 * @error				Invalid Handle other than INVALID_HANDLE.
 */
native Handle:CreatePanel(Handle:hStyle=INVALID_HANDLE);

/**
 * Creates a Menu from a MenuStyle.  The Handle must be closed with
 * CloseHandle().
 *
 * @param hStyle		MenuStyle Handle, or INVALID_HANDLE to use the default style.
 * @param handler		Function which will receive menu actions.
 * @param actions		Optionally set which actions to receive.  Select,
 *						Cancel, and End will always be received regardless
 *						of whether they are set or not.  They are also
 *						the only default actions.
 * @return				A new menu Handle.
 * @error				Invalid Handle other than INVALID_HANDLE.
 */
native Handle:CreateMenuEx(Handle:hStyle=INVALID_HANDLE, MenuHandler:handler, MenuAction:actions=MENU_ACTIONS_DEFAULT);

/**
 * Returns whether a client is viewing a menu.
 *
 * @param client		Client index.
 * @param hStyle		MenuStyle Handle, or INVALID_HANDLE to use the default style.
 * @return				A MenuSource value.
 * @error				Invalid Handle other than INVALID_HANDLE.
 */
native MenuSource:GetClientMenu(client, Handle:hStyle=INVALID_HANDLE);

/**
 * Cancels a menu on a client.  This will only affect non-external menus.
 *
 * @param hStyle		MenuStyle Handle, or INVALID_HANDLE to use the default style.
 * @param client		Client index.
 * @param autoIgnore	If true, no menus can be re-drawn on the client during
 *						the cancellation process.
 * @return				True if a menu was cancelled, false otherwise.
 */
native bool:CancelClientMenu(client, bool:autoIgnore=false, Handle:hStyle=INVALID_HANDLE);

/**
 * Returns a style's maximum items per page.
 *
 * @param hStyle		MenuStyle Handle, or INVALID_HANDLE to use the default style.
 * @return				Maximum items per page.
 * @error				Invalid Handle other than INVALID_HANDLE.
 */
native GetMaxPageItems(Handle:hStyle=INVALID_HANDLE);

/**
 * Returns a MenuPanel's parent style.
 *
 * @param panel			A MenuPanel Handle.
 * @return				The MenuStyle Handle that created the panel.
 * @error				Invalid Handle.
 */
native Handle:GetPanelStyle(Handle:panel);

/**
 * Sets the panel's title.
 *
 * @param panel			A MenuPanel Handle.
 * @param text			Text to set as the title.
 * @param onlyIfEmpty	If true, the title will only be set if no title is set.
 * @noreturn
 * @error				Invalid Handle.
 */
native Handle:SetPanelTitle(Handle:panel, const String:text[], bool:onlyIfEmpty=false);

/**
 * Draws an item on a panel.  If the item takes up a slot, the position
 * is returned.
 *
 * @param panel			A MenuPanel Handle.
 * @param text			Display text to use.  If not a raw line,
 *						the style may automatically add color markup.
 *						No numbering or newlines are needed.
 * @param style			ITEMDRAW style flags.
 * @return				A slot position, or 0 if item was a rawline or could not be drawn.
 * @error				Invalid Handle.
 */
native DrawPanelItem(Handle:panel, const String:text[], style=ITEMDRAW_DEFAULT);

/**
 * Draws a raw line of text on a panel, without any markup other than a newline.
 *
 * @param panel			A MenuPanel Handle, or INVALID_HANDLE if inside a
 *						MenuAction_DisplayItem callback.
 * @param text			Display text to use.
 * @return				True on success, false if raw lines are not supported.
 * @error				Invalid Handle.
 */
native DrawPanelText(Handle:panel, const String:text[]);

/**
 * Returns whether or not the given drawing flags are supported by
 * the menu style.
 *
 * @param panel			A MenuPanel Handle.
 * @param style			ITEMDRAW style flags.
 * @return				True if item is drawable, false otherwise.
 * @error				Invalid Handle.
 */
native CanPanelDrawFlags(Handle:panel, style);

/**
 * Sets the selectable key map of a panel.  This is not supported by
 * all styles (only by Radio, as of this writing).
 *
 * @param panel			A MenuPanel Handle.
 * @param keys			An integer where each bit N allows key
 *						N+1 to be selected.  If no keys are selectable,
 *						then key 0 (bit 9) is automatically set.
 * @return 				True if supported, false otherwise.
 */
native bool:SetPanelKeys(Handle:panel, keys);

/**
 * Sends a panel to a client.  Unlike full menus, the handler
 * function will only receive the following actions, both of
 * which will have INVALID_HANDLE for a menu, and the client
 * as param1.
 *
 * MenuAction_Select (param2 will be the key pressed)
 * MenuAction_Cancel (param2 will be the reason)
 *
 * Also, if the menu fails to display, no callbacks will be called.
 *
 * @param panel			A MenuPanel Handle.
 * @param client		A client to draw to.
 * @param handler		The MenuHandler function to catch actions with.
 * @param time			Time to hold the menu for.
 * @return				True on success, false on failure.
 * @error				Invalid Handle.
 */
native bool:SendPanelToClient(Handle:panel, client, MenuHandler:handler, time);

/**
 * @brief Returns the amount of text the menu can still hold.  If this is
 * limit is reached or overflowed, the text is silently truncated.
 *
 * Radio menus: Currently 511 characters (512 bytes).
 * Valve menus: Currently -1 (no meaning).
 *
 * @param panel			A MenuPanel Handle.
 * @return				Number of characters that the menu can still hold,
 *						or -1 if there is no known limit.
 * @error				Invalid Handle.
 */
native GetPanelTextRemaining(Handle:panel);

/**
 * @brief Returns the current key position.
 *
 * @param panel			A MenuPanel Handle.
 * @return				Current key position starting at 1.
 * @error				Invalid Handle.
 */
native GetPanelCurrentKey(Handle:panel);

/**
 * @brief Sets the next key position.  This cannot be used
 * to traverse backwards.
 *
 * @param panel			A MenuPanel Handle.
 * @param key			Key that is greater or equal to
 *						GetPanelCurrentKey().
 * @return				True on success, false otherwise.
 * @error				Invalid Handle.
 */
native bool:SetPanelCurrentKey(Handle:panel, key);

/**
 * @brief Redraws menu text from inside a MenuAction_DisplayItem callback.
 *
 * @param text			Menu text to draw.
 * @return				Item position; must be returned via the callback.
 */
native RedrawMenuItem(const String:text[]);

/**
 * This function is provided for legacy code only.  Some older plugins may use
 * network messages instead of the panel API.  This function wraps the panel
 * API for eased portability into the SourceMod menu system.
 *
 * This function is only usable with the Radio Menu style.  You do not need to
 * split up your menu into multiple packets; SourceMod will break the string
 * up internally.
 *
 * @param client		Client index.
 * @param str			Full menu string as would be passed over the network.
 * @param time			Time to hold the menu for.
 * @param keys			Selectable key bitstring.
 * @param handler		Optional handler function, with the same rules as
 *						SendPanelToClient().
 * @return				True on success, false on failure.
 * @error				Invalid client index, or radio menus not supported.
 */
native bool:InternalShowMenu(client, const String:str[], time, keys=-1, MenuHandler:handler=MenuHandler:-1);

/**
 * Retrieves voting information from MenuAction_VoteEnd.
 *
 * @param param2		Second parameter of MenuAction_VoteEnd.
 * @param winningVotes	Number of votes received by the winning option.
 * @param totalVotes	Number of total votes received.
 * @noreturn
 */
stock GetMenuVoteInfo(param2, &winningVotes, &totalVotes)
{
	winningVotes = param2 & 0xFFFF;
	totalVotes = param2 >> 16;
}

/**
 * Quick stock to determine whether voting is allowed.  This doesn't let you
 * fine-tune a reason for not voting, so it's not recommended for lazily
 * telling clients that voting isn't allowed.
 *
 * @return				True if voting is allowed, false if voting is in progress
 *						or the cooldown is active.
 */
stock bool:IsNewVoteAllowed()
{
	if (IsVoteInProgress() || CheckVoteDelay() != 0)
	{
		return false;
	}

	return true;
}

redpajama_set_name: RedPajamaGithub


Occupational science is the study of humans as occupational beings. People have an innate desire to occupy themselves and occupations that are sustained over a period of time, hold meaning to individuals which are personal and idiosyncratic. Occupation is not viewed in the lay sense of the term as a job of work, but as the things we chose to do in our daily lives that have meaning to us. We know that what people do has an influence on their health and wellbeing, so the occupational science research group aims to explore this link. Occupational science is informed by many disciplines interested in what people do, for example, occupational therapists, health professionals, human geographers, anthropologists, sociologists, psychologists, and educators. A better understanding of why and how people chose and sustain their engagement in their daily occupations will inform and influence health promotion of individuals, communities and populations. Occupational science is the cognate discipline that guides occupational therapists in their therapeutic use of occupation.
For further information on staff publications and presentations, visit the individuals personal and professional profiles, to the left. You can also find us on Facebook.


Look after your zips cause any damage to them would require new zips installation , which is in most situations rather expensive operation. Here we have some tips for keeping zips in good condition .
Never force zips. If they will not slide with ease, lubricate, backtrack and try gently again.
In Tents zips - Lubricate full zip length regularly with a pure SILICON SPRAY.
Never use oil based lubricant as it attracts grit and will therefore wear out your slider at a fast rate.


text:
The reason why iPhone will always have a 3.5-inch screen
By Ali Raza
Smartphones are the most outrageous gadgets which have truly dominated the modern day technology. The competition is growing day by day with an array of devices featuring every now and then. The fascinating design, beguiling specifications and adorable platform all account in the success of a smartphone. Perhaps the most subtle feature is that of screen size. At one end Samsung, HTC and Motorola are competing in making huge screens but the top smartphone company, Apple, remains aloof of the competition and is stuck at 3.5 inches from day one and is likely to remain as it is for a genuine reason.
Apple could have easily outraged its competitors through a large, maybe a 4.3 inches screen, in the lately iPhone 4S but has instead chosen the contemporary 3.5 inches size. No one ever came up with an intriguing reason to support Apple but Dustin Curtis.
Curtis, a designer who has been spending a little time with a Samsung Galaxy SII Android phone, complete with its huge 4.21-inch screen. Apparently, the reason Apple's iPhones are smaller is all down to how you use the device with one hand, and more to the point, where your thumb reaches. Read his interesting discovery with facts, given after the break.
I've been wondering why Apple chose to make the iPhone 4′s screen 3.5-inches when other comparable phones with Android and Windows Phone 7 have larger, more inviting screens. When you first see a phone with a 4-inch or larger screen, it seems like a much better experience. I thought it was a technical decision, and it could be, but since switching to an Android phone — a Samsung Galaxy S II, the "best Android phone you can buy, anywhere" — 15 days ago, I have realized another huge downside of larger screens: when holding the phone with one hand, I can't reach the other side of the screen with my thumb.
Touching the upper right corner of the screen on the Galaxy S II using one hand, with its 4.27-inch screen, while you're walking down the street looking at Google Maps, is extremely difficult and frustrating. I pulled out my iPhone 4 to do a quick test, and it turns out that when you hold the iPhone in your left hand and articulate your thumb, you can reach almost exactly to the other side of the screen. This means it's easy to touch any area of the screen while holding the phone in one hand, with your thumb. It is almost impossible to do this on the Galaxy S II.
This Hack Lets You Run Ubuntu on iPhone 7 Using Checkra1n
Analyst Predicts New Apple Services Could Potentially Include Podcasts+, Mail+, and Stocks+
Google Will Update its iOS Apps With Privacy Labels Starting This Week
Ali Salman • Jan 6
Future MacBooks Will Be Able to Wirelessly Charge Your iPhone, iPad, and Apple Watch
Apple Plans to Release Its Item Tracking AirTags and an Augmented Reality Device This Year
NVIDIA Unveils GeForce RTX 30 Max-Q & Max-P Mobility GPUs In GeForce RTX 3080 16 GB, RTX 3070 8 GB & RTX 3060 6 GB Flavors, Much Faster Than PS52647

redpajama_set_name: RedPajamaCommonCrawl


text:
Pedregal House by R79
luxury house, modern house, houses in m
The succession of blind volumes on the exterior of the building is faithful to our position of "not showing" and enabling the complete understanding and enjoyment of the space only to those who have been granted the confidence to enter the house.
Architect: R79
Location: Mérida, Yucatán, Mexico
Area: 750 sq.m.
Lead Architects: Valentina Losa Rubio, Roberto Ramírez Pizarro, Gerardo Trejo López
Construction: Suprodec Construcciones S.A. de C.V. / Arq. Flor Dueñas Echeverría
Lighting Design: Lumínica. Maribel Morales Hernández
Photography: Manolo R Solís
From the architect: The location of the access is due to the pre-existing vegetation, surrounded by it, one reaches a covered hallway with outdoor chairs that remind of the ancient custom of the inhabitants of the city centre of ¨going outside to chat and watch the night fall¨.
On the opposite side, there is day-to-day entrance passing through the garage. Through here, the circulation leads to the kitchen and opens to a flooded courtyard.
This exteror space becomes the visual focal point of several areas, making the routes more enjoyable and injecting light into the house.
The house is conceived as a large multifaceted social area. It is made up of interwoven areas that can function independently or as parts that complete a whole.
The program is very simple, a double-height space functions as the centre of the project, this social room flows towards both directions, on one side there is the courtyard and on the other, the pool and the garden. It serves as a lobby and articulator for the spaces that coexist around it.
The staircase has a leading role in this composition and takes on a sculptural character due to its constructive complexity.
The details of the staircase, of this "carpet" that unfold from above and floats above the void and the windows below, consists of "undressing" the structure, leaving its guts visible to explain how it supports itself while it contrasts the visual noise and materials around it.
This circulation has its horizontal counterweight supported by the light line of the bridge that crosses the social area, leading to the rooms that are located at both ends of it.
A constant rhythm of wooden elements is repeated in different areas to separate the spaces and to conduct them visually, sometimes as a lattice and at other times in the pergola.
The materiality of the stone presents diverse formats and textures, with a cream hue contrasting perfectly with white, steel and wood, giving a contemporary touch, but presenting warmth to the space at the same time. A couture piece, a good gift that reflects the personality of its owner.
YOU MAY ALSO LIKE: Pal Mar 11.5 by R79
YOU MAY ALSO LIKE: Casa El Ortigo by Grupo Arquitectura
YOU MAY ALSO LIKE: Casa Kutz by CPDA Arquitectos
10 / 18 / 2019 The succession of blind volumes on the exterior of the building is faithful to our position of not showing and enabling the complete understanding and enjoyment of the space...
Sooke 01 House by Campos Studio
Casa El Remanso by HJ Arquitectura
Tel-Aviv beach house by Studio Shira Lavi BD
Cap St-Martin house by Bourgeois / Lechasseur architects
Le Pine: Family summer house in Saint Tropez by SAOTA
House in La Cañada by Ramón Esteve Estudio
Recommended post: CCP - Custom furniture for a living room by PLUS ULTRA studio


text:
package com.intellij.debugger.impl;

import com.intellij.debugger.engine.DebuggerUtils;
import com.intellij.debugger.settings.DebuggerSettings;
import com.intellij.debugger.ui.DebuggerPanelsManager;
import com.intellij.execution.ExecutionException;
import com.intellij.execution.Executor;
import com.intellij.execution.configurations.*;
import com.intellij.execution.executors.DefaultDebugExecutor;
import com.intellij.execution.runners.ExecutionEnvironment;
import com.intellij.execution.runners.JavaPatchableProgramRunner;
import com.intellij.execution.ui.RunContentDescriptor;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.options.SettingsEditor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public class GenericDebuggerRunner extends JavaPatchableProgramRunner<GenericDebuggerRunnerSettings> {
  @Override
  public boolean canRun(@NotNull final String executorId, @NotNull final RunProfile profile) {
    return executorId.equals(DefaultDebugExecutor.EXECUTOR_ID) && profile instanceof ModuleRunProfile
           && !(profile instanceof RunConfigurationWithSuppressedDefaultDebugAction);
  }

  @Override
  @NotNull
  public String getRunnerId() {
    return DebuggingRunnerData.DEBUGGER_RUNNER_ID;
  }

  @Override
  protected RunContentDescriptor doExecute(final Project project,
                                           final RunProfileState state,
                                           final RunContentDescriptor contentToReuse,
                                           final ExecutionEnvironment env) throws ExecutionException {
    FileDocumentManager.getInstance().saveAllDocuments();
    return createContentDescriptor(project, state, contentToReuse, env);
  }

  @Nullable
  protected RunContentDescriptor createContentDescriptor(Project project, RunProfileState state,
                                                         RunContentDescriptor contentToReuse,
                                                         ExecutionEnvironment env) throws ExecutionException {
    if (state instanceof JavaCommandLine) {
      final JavaParameters parameters = ((JavaCommandLine)state).getJavaParameters();
      runCustomPatchers(parameters, env.getExecutor(), env.getRunProfile());
      RemoteConnection connection = DebuggerManagerImpl.createDebugParameters(parameters, true, DebuggerSettings.getInstance().DEBUGGER_TRANSPORT, "", false);
      return attachVirtualMachine(project, state, contentToReuse, env, connection, true);
    }
    if (state instanceof PatchedRunnableState) {
      final RemoteConnection connection = doPatch(new JavaParameters(), env.getRunnerSettings());
      return attachVirtualMachine(project, state, contentToReuse, env, connection, true);
    }
    if (state instanceof RemoteState) {
      final RemoteConnection connection = createRemoteDebugConnection((RemoteState)state, env.getRunnerSettings());
      return attachVirtualMachine(project, state, contentToReuse, env, connection, false);
    }

    return null;
  }

  @Nullable
  protected RunContentDescriptor attachVirtualMachine(Project project, RunProfileState state,
                                                      RunContentDescriptor contentToReuse,
                                                      ExecutionEnvironment env, RemoteConnection connection, boolean pollConnection)
    throws ExecutionException {
    final DebuggerPanelsManager manager = DebuggerPanelsManager.getInstance(project);
    return manager.attachVirtualMachine(env.getExecutor(), this, env, state, contentToReuse, connection, pollConnection);
  }

  private static RemoteConnection createRemoteDebugConnection(RemoteState connection, final RunnerSettings settings) {
    final RemoteConnection remoteConnection = connection.getRemoteConnection();

    GenericDebuggerRunnerSettings debuggerRunnerSettings = (GenericDebuggerRunnerSettings)settings;

    if (debuggerRunnerSettings != null) {
      remoteConnection.setUseSockets(debuggerRunnerSettings.getTransport() == DebuggerSettings.SOCKET_TRANSPORT);
      remoteConnection.setAddress(debuggerRunnerSettings.DEBUG_PORT);
    }

    return remoteConnection;
  }

  @Override
  public GenericDebuggerRunnerSettings createConfigurationData(ConfigurationInfoProvider settingsProvider) {
    return new GenericDebuggerRunnerSettings();
  }

  @Override
  public void patch(JavaParameters javaParameters, RunnerSettings settings, RunProfile runProfile, final boolean beforeExecution) throws ExecutionException {
    doPatch(javaParameters, settings);
    runCustomPatchers(javaParameters, Executor.EXECUTOR_EXTENSION_NAME.findExtension(DefaultDebugExecutor.class), runProfile);
  }

  private static RemoteConnection doPatch(final JavaParameters javaParameters, final RunnerSettings settings) throws ExecutionException {
    final GenericDebuggerRunnerSettings debuggerSettings = ((GenericDebuggerRunnerSettings)settings);
    if (StringUtil.isEmpty(debuggerSettings.getDebugPort())) {
      debuggerSettings.setDebugPort(DebuggerUtils.getInstance().findAvailableDebugAddress(debuggerSettings.getTransport() == DebuggerSettings.SOCKET_TRANSPORT));
    }
    return DebuggerManagerImpl.createDebugParameters(javaParameters, debuggerSettings, false);
  }

  @Override
  public SettingsEditor<GenericDebuggerRunnerSettings> getSettingsEditor(final Executor executor, RunConfiguration configuration) {
    if (configuration instanceof RunConfigurationWithRunnerSettings) {
      if (((RunConfigurationWithRunnerSettings)configuration).isSettingsNeeded()) {
        return new GenericDebuggerParametersRunnerConfigurable(configuration.getProject());
      }
    }
    return null;
  }
}


text:
MailSpeech taps into e-mail
By Dan Caterinicchia, Dan Caterinicchia
"BlackBerry pushes a sweet solution"
"Finding its net voice"
Mobile federal workers could have a new option for checking e-mail — any touch-tone telephone — with today's launch of MailSpeech from DPD International.
MailSpeech enables users to access their agency's e-mail system from any cellular or regular touch-tone phone, and at a fraction of the cost and/or effort that goes into carrying around a laptop computer, pager or other special access device, said Ron Browning, vice president of marketing at DPD.
"What should interest federal agencies is that this is the lowest-cost solution to remote e-mail access," Browning said. "Any organization that has people [working] out of the office but that still need access to e-mail" is a potential customer.
The initial cost for MailSpeech is $8,000 for a two-port system and $10,000 for a four-port system, both of which can accommodate up to 25 users. The number of ports correlates to how many calls can be processed simultaneously, Browning said. Comparable unified messaging systems can cost anywhere from $25,000 to $100,000, he said.
The two major glitches that DPD had to fix before it could begin shipping MailSpeech this month involved the speech-conversion software and overall speed of the system.
"The speech-conversion software was just a little fuzzier than we'd like...but we're getting a new engine in there that provides clearer speech," he said. "There was also a pause, between eight and 60 seconds, during the text-to-speech conversion, and we got that down to one or two seconds."
DPD is already working on future enhancements for MailSpeech, including the addition of using voice commands instead of having to punch numbers. That feature should be ready by late summer, Browning said.


Considered by some as the personification of a howitzer shell with the steely disposition of a tyrant, Louis Félix Marie François Franchet d'Espèrey, was a French General during World War I. Yet outside his tough military demeanor, d'Espèrey was a kind man with, as we shall see, the heart of an adventurer.
D'Espèrey, born 25 May 1856 in Mostaganem in French Algeria, was the son of a cavalry officer in the Chasseurs d'Afrique. Following in his father's footsteps, d'Espèrey began his life-long military career in 1876 after being educated at Saint-Cyr. Before the outbreak of World War I, d'Espèrey had already forged a distinguished career. After serving in a regiment of Algerian Tirailleurs (native infantry), he served in French Indochina, and then in China during the Boxer Rebellion in 1900. He was then packed off to France where he was given command of various infantry regiments in France. He obviously did something right, as in 1913 - just a year before the war - he was given command of I Corps.
During WWI, d'Espèrey served on several fronts. Most notably, he was given command of the large Allied army based at Salonika. It was in this role that he led "the successful Macedonian campaign, which caused the collapse of the Southern Front and contributed to the armistice" (Wikipedia). After the war his military successes continued with the command of operations against the Hungarian Soviet Republic in 1919. Then on 19 February 1921 he was given the honour of the title of Marshal of France.
Skipping ahead to 1924, we find d'Espèrey now in the role of inspector-general of France's North African troops. It was in this capacity that he "became interested in the strategic potential of the "grand axis" north-south route across the Sahara" (Wikipedia). And it was later in this same year that the adventurous spirit within d'Espèrey was unleashed.
On 15 November 1924, d'Espèrey joined a trans-Saharan expedition led by Gaston Gradis in three six-wheel Renaults with double tyres (see image below). Interestingly, this was Gradis' second trans-Sahara expedition, the first being earlier in that same year. Other members of the expedition included the journalist Henri de Kérillis, commandant Ihler, the brothers Georges Estienne and René Estienne, three Renault mechanics and three legionnaires. Overall the expedition travelled 3,600 km of rugged terrain to reach Savé in Dahomey on 3 December 1924. One can only imagine the stories of the adventures these intrepid explorers had to tell. Any one of them would have certainly made an entertaining dinner guest!
On 28 May 1956 France issued a stamp commemorating the 100th anniversary of the birth of Marshal Franchet d'Espèrey. The stamp was designed and engraved by Albert Decaris. In this design Decaris manages to capture the fierce pride and determination of a great French leader with the heart of an adventurer. It is also worth noting that Decaris has discreetly incorporated one of France's defining landmarks, the Cathedral of Notre Dame. Can you find it?


If you went to Mars, would you take a selfie? In his photo series "Greetings from Mars," photographer Julien Mauve imagines life as a tourist on the Red Planet -- selfie-stick and all. The irreverent photos were awarded the 2016 Sony World Photography Award for professional conceptual photography.
CNN Style spoke to Mauve to find out why he turned his lens to life on mars.
What inspired "Greeting from Mars"?
I've been fascinated with Mars since childhood. These days we hear a lot about NASA, Elon Musk and SpaceX. Space exploration and colonization are the greatest adventure of the century, and the fact that we may witness it in our lifetime makes it even more exciting.
On top of that, smartphones and social networks have emerged, allowing us to share our lives with everyone else in real time -- a way to prove our existence in the eye of the world. These are all ideas I've tried to mix into this project.
Are your photos intended to celebrate or mock the current selfie obsession?
Neither. I like to observe people, I like to see how they act, how they use pictures to convey their feelings. The first time I saw someone taking a picture with an iPad, I was really amused. Same thing with the selfie stick. I wanted to include this in the project because it's part of our species and who we are today.
How did you create these Red Planet landscapes?
When it comes to finding Mars lookalike landscapes on Earth, there is not a lot of choice.
Basically, what you need are rocks, sand, canyons and no signs of biological life. All of that with a red tint on it. Australia and the Wadi Rum in Jordan have those kind of landscapes, but I choose the Wild West because it offered a much larger variety in easily reachable distance.
I used a post-production tool to remove some plants or trees, but most of the post-production phase has been color calibration. To create a photographic universe as closely as possible resembling Mars, I used footage from NASA's Jet Propulsion Laboratory Curiosity rover.
Are your photos meant to communicate a message about the world as it is, or the world as it might be?
Both I suppose. It's a humorous way of showing how we are today while making us think of what the world could become in the future.
"Greeting from Mars" borders fiction and documentary. How is this relationship important to you?
I want the world that I create to stay as close to reality as possible. That way the audience feels that my photographic world is something they could have experienced themselves.
What feelings do you hope this collection evokes in its audience?
One guy told me that he saw the "Mars" project as an expression of unconditional love. That was not my first intention, but in fact I was the one wearing one of the suits and my wife was the other. At some point I even thought about calling the project "Honeymoon on Mars." So I was really glad this guy was able to catch this unconscious aspect of my work.


2WD "Carbon Series" Trophy Truck hits 150mph!!
While testing yesterday out in Plaster City, the #93 Racer Engineering Trophy Truck hit a new speed. The GPS showed 150mph with Dale Dondel's foot on the peddle and hands behind the wheel. The Best In The Desert 50th Anniversary "MINT 400" is rolling around the corner March 10-11th where you will see Victor Gruber and Dale Dondel co-drive to the finish.
We custom build the best toys for the dirt.
Racer Engineering, ALL RIGHTS RESERVED.


text:
White, NBC near end of busy Premier League stretch on Sunday
by: JOE REEDY, Associated Press
Chelsea's Christian Pulisic controls the ball during the English Premier League soccer match between Liverpool and Chelsea at Anfield Stadium in Liverpool, England, Wednesday, July 22, 2020. (Phil Noble/Pool via AP)
Arlo White didn't know what to expect when the Premier League season resumed with Project Restart. The only thing he knew was that it beat the alternatives.
"Watching exciting top level Premier League football without fans for a stretch is way better than no football at all," he said. "I salute the league and the players for putting on such a great show, which the fans (and the commentator!) really needed right now."
White and the rest of NBC's Premier League crew wrap up the season with Championship Sunday, when all 10 matches take place at the same time. It also wraps up a 40-day stretch in which White will have called 16 matches, a broadcasting task normally reserved for World Cups or the European championship.
Pierre Moossa, the coordinating producer for the network's Premier League coverage, describes the past five-plus weeks as an incredible whirlwind. With Sunday's conclusion, games will have aired on NBC and NBCSN all but five days since play resumed on June 17.
"With how crazy and different the world is now, it has been strange and challenging," he said. "The way we are doing shows now is different whether it is wearing masks or social distancing. The entire team is proud of getting through this restart.
"The entire production and on-air teams have been remarkable. Everyone rose to the occasion and delivered quality broadcasts. They were tasked with difficult circumstances and different workflows but there was no drop off."
White said calling matches from empty stadiums hasn't been as jarring as he originally thought. The first match he called didn't have the taped crowd noise coming through the headset, which White said made the emptiness feel odd and echoey. Once he was able to hear crowd noise through his headset, it felt normal.
White did note that the Southampton-Manchester City game did prove to be a strange experience.
"Southampton were feverishly defending a 1-0 lead. I had the fake crowd noise cranked up in my headphones and the game was so intense that for a while there I was completely lost in the experience," White said. "Southampton defended with such commitment and tenacity that I simply forgot that there were no fans in the stadium. After the final whistle, (commentator) Lee Dixon and I took our headphones off and were stunned by the silence."
While the addition of crowd noise has had split reactions, Moossa said it enhanced the experience and that those who didn't want it could watch a feed online without crowd noise.
The other thing that stands out during the restart for White is seeing Christian Pulisic elevated himself up to the higher echelons of Premier League players. The American standout has four goals and two assists since the restart.
"He's gone from a player with 'potential' to Chelsea fans losing their minds if he doesn't start, so watching his journey is going to be fascinating," White said.
NBC was averaging 373,000 viewers since the season restarted, which is down 17% from before the shutdown. They were averaging 450,000 the first part of the season, which was their highest viewership in four seasons.
The ratings news though is not all bad. The afternoon matches on NBCSN have averaged 312,000 viewers, which is up 31% compared to those matches prior to the shutdown. Four of the six most-watched weekday matches have occurred over the past six weeks, including Wednesday's Chelsea-Liverpool matchup (550,000) in which Liverpool raised the trophy for their first English top division title since 1990.
Even though Liverpool has had the title wrapped up for over a month, there are still going to be plenty of storylines on Sunday. Two of the four spots for Champions League play remain up for grabs, while three teams are trying to avoid the final two relegation places.
White will have the Leicester City-Manchester United match on NBC, which would propel the winner into the top four and the Champions League. NBCSN, USA Network, Golf Channel and CNBC will also have matches with the remaining five available on the Peacock streaming network.
Sunday will also be about looking ahead to next season, which will start in mid-September. Leeds United has won promotion to the Premier League and will be featured. Even though NBC won't have much downtime and won't be able to travel to England before the start of the season, the pandemic has made it easier to get team and coach interviews.
"We're not able to travel, but we have more direct contact with teams than ever before," Moossa said. "The Zoom interviews have allowed us to bridge the gap and directly communicate with them."
COVID-19 creates complications for Spartan basketball
by Wells Foster / Jan 18, 2021
EAST LANSING, Mich. (WLNS) - Michigan State's basketball coach Tom Izzo has always been a candid person and he couldn't be more honest when it comes to his team's issues with COVID-19.
The virus has been pervasive throughout the Spartans' basketball program this year, with three new cases arising yesterday. It left Izzo with no other choice but to postpone Saturday's game with Illinois.


CLOWNS? Mars Anomalies c 2018: Mars Rover Footage of MARTIANS ALIVE? A Mars Circus? & Farms?
NASA Administrator Jim Bridenstine says the U.S. is within 10 years of having a continuous manned presence on the moon, which will lay the groundwork for expanding space exploration to Mars.


text:
1:59 PM News No comments
Earlier this week I wrote a news bit on Zach Galifianakis and some film opportunities that were coming his way. None of the films excited me at all and I hoped that the rising star would use his current status to choose something a little less commerical, but instead Variety reports, he and Todd Phillips have moved forward with "Due Date" and a sequel to successful summer comedy The Hangover. Read the details below...
"Due Date" is a comedy written by Alan R. Cohen and Alan Freedland and then later revised by Adam Sztykiel. The film follows, an expectant dad and his unlikely travel companion (Galifianakis) as they race cross-country in hopes of making it home for the birth of his first child. "Due Date" is being directed by Todd Phillips and is planning for a October shooting start in order to be released early in June 2010.
Todd Phillips has hired Scot Armstrong to co-write the sequel to The Hangover with hopes to have it in theaters by Memorial Day 2011. The Hangover is Warner Brother's highest grossing R-rated comedy and it seemed like a no brainer that the studio would move froward in developing a sequel. No word on if Bradley Cooper, Ed Helms or Justin Bartha would return, but it would be a huge surprise if they didn't.
I can't say I am excited about either of these projects in the slighest. "Due Date" sounds terrible and a sequel to The Hangover just doesn't sit right with me. The Hangover was a perfect single film, similar to Wedding Crashers, it doesn't need a sequel. Furthermore, a sequel may just end up ruining all the originality the first one had. In related news, one of the other films Galifianakis was being courted for "Man-Witch" Variety reports Phillips has stepped down from director duties leaving the project empty for a director and lead.
What say you? Do either of these upcoming Phillips films excite you? Strikeback....


February, Part Two: Stepping Stones. – My thoughts on a page.
You can compare our writing journey to that of our three friend's, successful authors Carmel Harrington, Catherine Ryan Howard and Hazel Gaynor who have updated their progress report on Inspiration diaries, Feb part one, which you can read here.


Building upon the instructions given here and here I thought I'd write up one of the many useful things Pablo Goloboff kindly taught us at the TNT scripting workshop after the Hennig XXXI meeting.
It's actually not the easiest thing to setup if you're using Ubuntu… Pablo had to help me do it – I would never have got it up and running on my own.
(replace 'rossnetbook' with your computer hostname – if you're not sure what this is then nano /etc/hostname will tell you) save and close this file.
Finally, make sure you've copied the 64-bit TNT binary to both /usr/bin/ & to your user home directory and make sure that they're executable.
the video shows me performing a simple search on the zilla dataset of Chase et al. (1993) using traditional heuristic settings (60 reps) performed first in serial, then in parallel (starting after 2:00) 20 reps x 3 slaves.
Neither of these searches found the shortest length trees btw!
basically just insert what you want your slaves to do in between the '=' and the return; commands.


text:
Review - The Weir - Wayward Theatre Company - Lost In Translation (Just a Bit) - 4.5 stars
The last two stories told in Conor McPherson's The Weir will knock you on your ass. In that closing stretch, the current production from Wayward Theatre is amazing. The script, the performances, the direction, the design. Mesmerizing stuff. Absolutely worth going out to see. But it took me a while to get there.
"There's not one morning I don't wake up with her name in the room."
I follow a bit of British television, I watch a fair number of foreign films. I like to think I can keep up with speedy vocal delivery coupled with unfamiliar accents in a piece of entertainment. But the Irish accents in The Weir are so thick that I have to admit I was lost for the first chunk of the play. I strained to understand, I really did. But I hadn't a clue what they were saying half the time.
"If she's out there, she still needs me."
Now, on the one hand, that's a credit to the actors, none of whom are actually imported from Ireland. Those accents, courtesy of help from dialect coach Foster Johns, I'm assuming are impressively realistic. The actors wrap the sound of that accent around McPherson's words and it's like they're actually talking, not just saying lines. They are completely comfortable in the sound and idiom of this storytelling play. But I was baffled as an audience member. I could make out the relationships between people fairly well from the way they behaved with each other. But at first I was also frequently lost as to what they were saying and why.
"I regret the stories now. Let's not have any more of them."
This could be just a "Shakespeare brain adjustment" kind of thing. Most folks, sitting down to a Shakespeare play, even ones who've seen a few, it takes their brain a little while to adjust to that Elizabethan poetic English way of speaking. Then about five or ten minutes in, the switch flips, the brain catches on, and you're fine the rest of the way. I experienced something similar in The Weir. It just took a lot longer for some reason. I honestly don't think it's the actors' fault. I'm just feeling a bit slow and bewildered in the aftermath of it all. Because the bulk of the play that I did understand clearly, really knocked my socks off.
"And she wouldn't come out of the living room. Because she said there was a woman on the stairs."
I've got Conor McPherson plays on the bookshelf at home, so I can double back and take my time picking over the words on the page, really appreciate those first couple of stories and the banter between the regulars at this Irish bar in detail. But I don't want the review to wait that long. So…
"And he stood beside me, under the tree, looking at the grave."
In an out of the way pub in an out of the way small town in Sligo County, Ireland in 1997, five people gather around the bar and regale each other with progressively spookier and more haunting tales. The stories range from the supernatural to the all too human. Brendan (Tim McVean) runs the bar. Jack (Arthur Moss), a regular at the pub, runs an auto repair shop, assisted by Jim (Lucas Gerstner). Self-proclaimed dealmaker-about-town Finbar (Edwin Strout) brings a young woman, Valerie (Sarah Nargang) to the bar to introduce her to some of the local color. Valerie's new to town, for reasons she'll share later that I won't spoil (it's one of those great final stories - alongside the one from Jack, with Jim's tale taking a spooky third place nod - Nargang, Moss and Gerstner are all great in their big moments). The men tell tales to entertain Valerie, and one-up each other, not realizing how easily a competition like that might get out of control, leading to things they never imagined being said. The Weir is a great piece of storytelling, and everyone in the cast under the guidance of director Michael Kelley takes full advantage of the opportunity to hold us in rapt attention, with humor, chills, and genuine pathos.
"She was a chambermaid, you see. She knew the couples who were being all illicit because she'd go in to do the room in the morning and the bed would be already made."
The setting is delightfully meta - Wayward Theatre company has charged set designer Justin Hooper the task of building a bar inside a bar. The production is being staged at the Urban Growler brewery in their newly renovated Barrel Room at the back of the establishment. You pass through the real bar to enter a theater, and watch actors in an imaginary bar. Hooper really put their credited carpenter Conor O'Brien through his paces because this pub is all dark wood and realistic doors, counters and shelves. Terri Ristow has populated the space with what feel like all the right props (and a working tap). We even get a peanut warning at the door.
"Having all your worst fears confirmed for you. Ghosts and angels and all this?"
There's not a lot of variety possible given the simple lighting options in the space but designer Ian Knodel still makes the most of it, focusing the light down when a character is deep within their story, only releasing us to regular lighting again when the storytelling releases us. The actors all reinforce this focus, giving their fellow cast members each their full attention when it's their turn to step to the center of the story. They're a unit that works well together.
"There's no dark like a winter's night."
The Weir is a perfect play for Halloween season (which may explain why Matchbox Theatre is also doing a production in a different part of the Twin Cities right now). There are no monsters or serial killers, but all the shocks and hauntings that a normal life has to offer on are full display. Sometimes the worst things that can happen to us are things so common that none of us can really escape them. Sometimes they are things that are done to us. Sometimes they are things we do to ourselves. Wayward Theatre's production of The Weir is the best kind of spooky, and it sticks with you. You should check it out. (running through November 4, 2017 - Matchbox's other production of The Weir closes October 28, 2017)
4.5 stars - Very Highly Recommended
(l to r: Arthur Moss as Jack, Tim McVean as Brendan, and Sarah Nargang as Valerie in The Weir; photo by Lauren B. Photography)
Posted by Matthew at 10/24/2017 10:40:00 AM
Labels: 4-1/2 Stars Damn Near Perfect, Theater reviews
Review - Hamlet - Park Square Theatre - A New Spin...
Review - The Weir - Wayward Theatre Company - Lost...
Review - Church and State - Minnesota Jewish Theat...
Review - Sam's Son - Bucket Brigade - Former Churc...
Review - The Minotaur - Theatre Pro Rata - Lost (a...
Review - In The Treetops - Sandbox Theatre - Meand...
Review - Sing To Me Now - Little Lifeboats - Best ...
Review - mONSTER - Swandive Theatre - Unanswered Q...
Review - Mean - Youth Performance Company - The Ki...
Review - Revolt. She Said. Revolt Again. - Frank T...


We maintain excellent relationships with Civil Aviation Authorities, enabling us to obtain over flight and landing permits within very short notice.
Keeping our clients' bottom line in mind we have come up with our value charging policy. Once a permit is issued and validity is given, should you delay or change schedule within that validity we will not charge for re-validation charges. We will also tell you straight and plain when permits are not required.
Torch Aviation Services provides its customers with a 24 hour flight planning department manned by a team of committed dispatchers who can secure any services for our customers' flights on a very short notice.


text:
Home News Get in the Halloween spirit with festive events at the Vestavia Hills Public Library
Get in the Halloween spirit with festive events at the Vestavia Hills Public Library
by ERIC TAUNTON
Photo courtesy of Vestavia Hills Public Library.
Families attend an event at Vestavia Hills Public Library.
The Vestavia Hills Public Library once again has activities to entertain people of all ages this month.
In the children's department, the month kicks off with Courtney's Library Stop on Oct. 1 at 10 a.m. in the community room.
Every first and third Saturday of each month, children get to hear stories, sing songs and dance with Ms. Courtney.
On Oct. 5, Ms. Lisa will host Story Friends in the children's program room at 10:30 a.m. to read stories, sing songs and dance.
On Oct. 28, the children's department will end the spooky season with its Spooktacular event in the community room from 6:30 to 8 p.m.
Families can join Barry Mitchell and Sam the Turtle to help them solve a Halloween candy mystery.
October kicks off in the teen department with the writing group on Oct. 5 in the community room.
Teens will be able to build their writing skills and provide each other with feedback at 4 p.m.
The month continues with a chess club in the historical room at 4:30 p.m., which allows teens to learn chess or to continue improving their skills on Oct. 6.
In the amphitheater, teens will be able to celebrate the spirit of Halloween with pumpkin painting on Oct. 18 at 4 p.m.
On Oct. 28, teens can keep it going by watching anime horror movies and shows in the historical room at 4 p.m.
In the adults department, adults can also paint pumpkins in the spirit of Halloween at Handmade with Holly in the community room on Oct. 5 at 11 a.m.
Vestavia Hills Public Library Courtney's Library Stop events


100 Pokemon Cards Plus Bonus Cards!
Pokemon Reverse Foil Cards! Plus 15 Free Pokemon Basic Energies!
Includes 3 Custom Golden Groundhog Token Counters!
The Perfect Collection for any Pokemon Fan - All cards in great condition!
100 Assorted Pokemon Card Lot with Foils and 15 Energy! Includes 3 Custom Golden Groundhog Token Counters!
This is a lot produced by Golden Groundhog, containing three unique Golden Groundhog authorized tokens, featuring the smiling groundhog. The Golden Groundhog tokens included in this lot are manufactured by Golden Groundhog and are not actual Pokemon cards.Golden Groundhog (c) 2016. All rights reserved.


Created in 1850, the year of California statehood, Napa County is one of the state's original 27 counties. By the 1860 census, the county had four townships, or units of local government: Napa (Napa City); Yount (Yountville, Monticello, and Berryessa, Chiles, Conn, and Gordon Valleys); Hot Springs (Calistoga and St. Helena); and Clear Lake (including Knoxville and Wardner's). Clear Lake? How did that happen?
California's county maps between 1850 and 1855 show a gradual, legislated expansion of Napa County, its northern boundary extending far into what is now Lake County to encompass Clear Lake and areas well to the north, east, and west. On May 20, 1861, the state legislature combined portions of Napa, Mendocino, and Colusa counties to form Lake County. After a few more small adjustments with Lake and Sonoma Counties, including the 1869 return of Knoxville and Wardner's (comprising Knox Township as of 1873), Napa County shrank back to its current boundaries.
So, what does this have to do with Uncle Sam Mountain? Going back to the 1860 Federal Census, we find that Napa County's Clear Lake Township (created in 1857) had 272 households, enumerated at five post office areas: Lower Lake, Big Valley, Upper Lake, Coyote, and Uncle Sam (established 1858), where 72 of the households resided. It is thought that the Uncle Sam community existed as early as the 1840s, its residents applying the same name to the nearby Mt. Konocti (or Knocti), so designated by early Pomo residents of the area. The volcanic soil on and surrounding the mountain would have been as attractive to those settlers, mostly farmers, as it is to today's vintners.


I visited La Garriga twice before I finally decided to give it a try with my new friend Anjalina of the Barcelona food blog – Rainbow Spoon. Mostly because this neighborhood has a tendency for well designed shops with mediocre but expensive food. Garriga has some promising visual cues; they use and sell bread from Baluard, stock tea from Mariage Frères and sauces from Wilkins & Sons. Meanwhile their chiller cabinet is groaning and perspiring with all manner of delicious things.
My original plan had been to order some buffalo mozzarella with organic rocket but then I thought it better to test the kitchen and ordered the quinoa salad (€11.30) and the arroz ala cubana (€11.50). Anjalina ordered the lentils with foie gras (€11.40). Portion sizes were on the small side and prices on the other end of the end of the scale but it was all delicious, unexpectedly so. The lentils were boiled so that they were tender and not a moment to long. The quinoa was light and fluffy with the surprising addition of candied lemon peel. All dressed well. The lone fried egg atop my rice a la cubana could have used a friend, my stomach certainly thought so. But overall good and a nice change from all the Tapas and such.
I was thinking I would enjoy a slice of the lemon tart (5.80), which I was assured by the waiter was made that day in their kitchen. That the lemon tart came with the outlandish English description of "Such a (Lemon) tart" was disconcerting but then the description that accompanied the chocolate tart -recipe of "my dark chocolate sweet Mother's" gave me the notion that this was a case of Google translate gone wrong. Disappointingly, the lemon tart was more like a lemon cheesecake with a soggy bottom.
Overall, I like this place, I think the quality is certainly there but I find the prices are on the high side. I suppose,there is a surcharge for this postcode and if I am feeling pinched for cash, I can go out a bit further to Gracia to Les Tres a la Cuina for what remains the best priced menu of seasonal fresh food in town.


Published 04/25/2019 02:54:13 am at 04/25/2019 02:54:13 am in Sink Protector For Farmhouse Sink.
sink protector for farmhouse sink kitchen sink protector kitchen sink liner medium size of kitchen kitchen sink mats clear ceramic sink kitchen sink protector sink protector rack for farmhouse sink.
sink protector rack for farmhouse sink,sink protector for farmhouse sink,sink protector for ikea farmhouse sink,kitchen bottom grid sink protectors native trails sink bottom grids, kohler sink mats sink mats farmhouse sink sink mats farmhouse sink kohler sink mats sink mats farmhouse sink sink mats farmhouse sink mat farmhouse sink mat rubber, kohler farmhouse sink accessories farmhouse sink grid farmhouse sink kohler farmhouse sink accessories sink protector farmhouse sink protector the apron throughout farmhouse sink decor farmhouse , kitchen sink liners kitchen sink mats black best kitchen ideas kitchen sink liners extra large sink protector extra large kitchen sink and medium size of kitchen kitchen sink , lilyfield life loving my ikea domsj sink , sink protector stainless steel sink racks stainless steel sink sink protector sink protector mat sinks home design inspiration intended for farmhouse sink protector ceramic sink , amazoncom frasto sink protector mats packs of best kitchen frasto sink protector mats packs of best kitchen sink liner farmhouse sink mat, kitchen sink mats with drain hole large sink protector farmhouse large size of kitchen sink mats with drain hole large sink protector farmhouse sink mat .


Joshua Hess is a native of New Orleans. He received a Bachelor of Arts degree in 2000 from New York University in New York City. He obtained his law degree from Loyola University New Orleans College of Law in 2011, where he was an active member of the St. Thomas More Inn of Court. He joined the Louisiana Bar that same year.
Mr. Hess joined Christovich & Kearney in 2013, and currently practices in the area of workers' compensation defense. He received recognition from SuperLawyers as a Rising Star for 2014.
Mr. Hess serves on the executive committee of the St. Thomas More Inn of Court and the board of the Louisiana Landmarks Society. He is a former board member for Jewish Family Services. He serves on various committees, acting as a leader for those organizations.
Mr. Hess has a Commercial Pilot's License and is a Certified Flight Instructor with Instrument and Multi Engine Ratings.


Lee Perry first came to prominence working with Coxsone Dodd's fabled Studio One. This is where Scratch earned the nickname with the wildly popular Jamaican hit record and dance craze Chicken Scratch. After a fall out with Dodd, Perry moved on to a stint with Joe Gibb's Amalgamated. Again in a dispute over compensation Perry moved on to form his own label, Upsetter and established his house band, the Upsetters. By 1973 Perry had also established Black Ark, a recording studio of his own that functioned as an effective fertilizer throughout what was Jamaica's most innovative period for sounds and recording techniques. In that year, as Perry and Black Ark entered a period of heavy dub output, Scratch recorded Cloak And Dagger. This early dub outing is a testament to Perry's lo-fi mastery ashe utilized his TEAC four-track, Soundcraft board, tape delays, phasers, reverb and any other ambient sounds he could get this handson as an instrument rather than just to record instruments. Get On Down celebrates a piece of reggae history and one of Lee Perry's crowning achievements with this reissue of Cloak And Dagger, presented here as originally issued in Jamaica in 1973.


text:
Aurora Jolie, também conhecida como Nicara ou Nikara (Nápoles, 25 de janeiro de 1988) é uma atriz pornográfica americana. Tem como característica praticar somente cenas de sexo anal.

Biografia
Nascida em Nápoles, Itália, foi criada no estado da Virgínia, nos Estados Unidos. Ela tem um irmão, e mudou-se para a Califórnia com seus pais onde terminou os últimos anos de estudo no colégio John Burroughs High School em Burbank. Seus pais são ambos membros do exército americano. Ela começou sua carreira na indústria pornográfica dois meses após conseguir o diploma.

Em entrevistas em 2007 ela declarou ser virgem pelo fato de apenas ter feito sexo anal, seja em frente às câmeras ou na vida privada. Em outra entrevista em março de 2009 para a revista Ozone, ela revelou que havia perdido a virgindade vaginal em privado.

Aurora apareceu em vários videoclipes de canções de hip hop, como em "Wouldn't Get Far" de Game com participação de Kanye West, e "Brand New" de Trey Songz.

Prêmios e indicações
premiações
 2008: Urban X Award – Best Anal Sex Scene (com Brian Pumper)

indicações
 2008: AVN Award – Best Anal Sex Scene, Video – Cum in My Booty (com Brian Pumper)
 2008: F.A.M.E. Award – Favorite Anal Starlet
 2007: NightMoves Awards – Best New Starlet

Ligações externas

 Club Aurora Jolie
 Aurora Jolie no Babepedia

Atrizes pornográficas dos Estados Unidos
Atrizes pornográficas afro-americanas
Naturais de Nápoles

redpajama_set_name: RedPajamaWikipedia


text:
import { NgModule } from "@angular/core";
import { DragBoxDirective } from "./drag-box.directive";
import { KeyEnterDirective } from "./key-enter.directive";

@NgModule({
    declarations: [
        DragBoxDirective,
        KeyEnterDirective
    ],
    exports: [
        DragBoxDirective,
        KeyEnterDirective
    ]
})
export class DirectivesModule {}


Stop at The Pinewood Residence to discover the wonders of Pattaya. The hotel offers guests a range of services and amenities designed to provide comfort and convenience. To be found at the hotel are 24-hour security, convenience store, daily housekeeping, portable wi-fi rental, wheelchair accessible. Designed for comfort, selected guestrooms offer air conditioning, wake-up service, desk, balcony/terrace, telephone to ensure a restful night. Entertain the hotel's recreational facilities, including sauna, outdoor pool, massage. No matter what your reasons are for visiting Pattaya, The Pinewood Residence will make you feel instantly at home.
A guest that previously stayed at The Pinewood Residence has informed Freejoiner about their joiner policy. Information below is based on the information provided by the Freejoiner user.
You can bring bar-girls, freelancers or ladyboys with you into your hotel room at The Pinewood Residence.
Click on the "Joiner-Policy" tab to find out the joiner policy of The Pinewood Residence.