Search results

Top (transact-sql) - sql server | microsoft learn

DESCRIPTION

displays the top processes on the
system and periodically updates this information. If standard output is an
intelligent terminal (see below) then as many processes as will fit on the
terminal screen are displayed by default. Otherwise, a good number of them
are shown (around 20). Raw CPU percentage is used to rank the processes. If
number is given, then the top
number processes will be displayed instead of the
default.

makes a distinction
between terminals that support advanced capabilities and those that do not.
This distinction affects the choice of defaults for certain options. In the
remainder of this document, an

terminal is one that supports cursor addressing, clear screen, and clear to
end of line. Conversely, a

terminal is one that does not support such features. If the output of
is redirected to a file, it acts as if it were
being run on a dumb terminal.

The options are as follows:

Display combined CPU statistics for all processors on a single line
instead of one line per CPU. If there are more than 8 CPUs detected in the
system, this option is automatically enabled.
Use batch mode. In this mode, all input from the
terminal is ignored. Interrupt characters (such as
‘’ and
‘’) still have an effect. This is
the default on a dumb terminal, or when the output is not a terminal.
Show command line arguments as well as the process itself.

count

Show only count displays, then exit. A display is
considered to be one update of the screen. This option allows the user to
select the number of displays to be shown before
automatically exits. For intelligent
terminals, no upper limit is set. The default is 1 for dumb
terminals.

string

Display only processes that contain string in their
command name. If displaying of arguments is enabled, the arguments are
searched too.
Show process threads in the display. Normally, only the main process is
shown. This option makes all threads visible.
Do not display idle processes. By default,
displays both active and idle processes.
Use interactive mode. In this mode, any input is
immediately read for processing. See the section on
for an
explanation of which keys perform what functions. After the command is
processed, the screen will immediately be updated, even if the command was
not understood. This mode is the default when standard output is an
intelligent terminal.
Use

mode. This is identical to batch mode.

field

Sort the process display area using the specified
field as the primary key. The field name is the name
of the column as seen in the output, but in lower case. The
‘-’ prefix reverses the order. The
OpenBSD version of
supports cpu, size,
res, time,
pri, pid, and
command.

pid

Show only the process pid.
Renice to -20 so that it will run faster. This
can be used when the system is being very sluggish to improve the
possibility of discovering the problem. This option can only be used by
root.
Show system processes in the display. Normally, system processes such as
the pager and the swapper are not shown. This option makes them
visible.

time

Set the delay between screen updates to time
seconds. The value may be fractional, to permit delays of less than 1
second. The default delay between updates is 5 seconds.

rtable

Display only processes associated with the specified routing table
rtable. ‘T+’ shows processes
associated with all routing tables. The ‘-’ prefix hides
processes associated with a single routing table.
Display routing tables. By default, routing tables are not shown.

user

Show only those processes owned by username or UID
user. The prefix ‘-’ hides processes
owned by that user.
Do not take the time to map UID numbers to usernames. Normally,
will read as much of the password database as
is necessary to map all the user ID numbers it encounters into login
names. This option disables all that, while possibly decreasing execution
time. The UID numbers are displayed instead of the names.

Both count and number
fields can be specified as , indicating that
they can stretch as far as possible. This is accomplished by using any
proper prefix of the keywords ,
, or . The default
for count on an intelligent terminal is, in fact,
.

The environment variable is examined
for options before the command line is scanned. This enables users to set
their own defaults. The number of processes to display can also be specified
in the environment variable .

Пример использования

<!DOCTYPE html>
<html>
<head>
<title>Свойство top.</title>
<style> 
body {
background-color:khaki; /* задаём задний фон цвета хаки */
}
.relative { 
position:relative; /* элемент с относительным позиционированием */
top : 25px; * задаём смещение элемента вниз относительно его текущей позиции */
width 200px; /* задаём ширину блока */
height: 250px; /* задаём высоту блока */
border 5px solid; /* задаём стиль для границ сплошной и ширину 5px */
background-color:orange; /* задаём задний фон оранжевого цвета */
}
.absolute {
position:absolute; /* элемент с абсолютным позиционированием */
top : 40px; * задаём смещение элемента вниз относительно верхнего края его предка */
width 150px; /* задаём ширину блока */
height: 100px; /* задаём высоту блока */
border 5px solid green; /* задаём стиль для границ сплошной, ширину 5px и цвет зелёный */
}
.fixed {
position:fixed; /* элемент с фиксированным позиционированием */
top : 200px; * задаём смещение элемента вниз относительно верхнего края окна браузера */
width 150px; /* задаём ширину блока */
height: 100px; /* задаём высоту блока */
border 5px solid red; /* задаём стиль для границ сплошной, ширину 5px и цвет красный */
}
</style>
</head>
	<body>
		<div class = "relative">div position:relative;</div>
		<div class = "absolute">div position:absolute;</div>
		<div class = "fixed">div position:fixed;</div>
	</body>
</html>


Пример смещения позиционированного элемента.CSS свойства

Рекомендации

В инструкции SELECT всегда указывайте ORDER BY вместе с предложением TOP. Дело в том, что это единственный предсказуемый способ отбора строк предложением TOP.

Для реализации решения разбиения на страницы пользуйтесь предложениями OFFSET и FETCH в предложении ORDER BY, а не предложением TOP. Решение разбиения на страницы (т.е. постраничной выдачи данных клиенту) проще реализовать с помощью предложений OFFSET и FETCH. Дополнительные сведения см. в разделе Предложение ORDER BY (Transact-SQL).

Для ограничения числа возвращаемых строк пользуйтесь TOP (или OFFSET и FETCH), а не SET ROWCOUNT. Эти методы предпочтительнее, чем SET ROWCOUNT, по следующим причинам:

Являясь частью инструкции SELECT, оптимизатор запросов может принимать значение expression в предложениях TOP или FETCH во время оптимизации запроса. Так как SET ROWCOUNT используется вне инструкции, выполняющей запрос, значение не может быть учтено в плане запроса.

Пример использования ключевого слова TOP PERCENT

Рассмотрим пример SQL Server, в котором мы используем ключевое слово TOP PERCENT в операторе SELECT.
Например:

Transact-SQL

SELECT TOP(10) PERCENT
employee_id, last_name, first_name
FROM employees
WHERE last_name = ‘Samson’
ORDER BY employee_id;

1
2
3
4
5

SELECTTOP(10)PERCENT

employee_id,last_name,first_name

FROMemployees

WHERElast_name=’Samson’

ORDERBYemployee_id;

Этот пример SQL Server SELECT TOP выберет первые 10% записей из полного набора результатов. Поэтому в этом примере оператора SELECT вернет 10% записей из таблицы employees, где last_name — ‘Samson’. Остальные 90% набора результатов не будут возвращены оператором SELECT.
Вы можете изменить этот пример, включив предложение WITH TIES следующим образом:

Transact-SQL

SELECT TOP(10) PERCENT WITH TIES
employee_id, last_name, first_name
FROM employees
WHERE last_name = ‘Samson’
ORDER BY employee_id;

1
2
3
4
5

SELECTTOP(10)PERCENTWITHTIES

employee_id,last_name,first_name

FROMemployees

WHERElast_name=’Samson’

ORDERBYemployee_id;

Предложение WITH TIES будет включать строки, которые могут быть связаны со строкой которая на последнем месте в ограниченном наборе результатов. Поэтому, если есть такие строки в наборе записей SELECT TOP (10) PERCENT, то эти связанные записи будут возвращены оператором SELECT TOP. Это приведет к возврату более 10% от полного набора записей.

SQL Справочник

SQL Ключевые слова
ADD
ADD CONSTRAINT
ALTER
ALTER COLUMN
ALTER TABLE
ALL
AND
ANY
AS
ASC
BACKUP DATABASE
BETWEEN
CASE
CHECK
COLUMN
CONSTRAINT
CREATE
CREATE DATABASE
CREATE INDEX
CREATE OR REPLACE VIEW
CREATE TABLE
CREATE PROCEDURE
CREATE UNIQUE INDEX
CREATE VIEW
DATABASE
DEFAULT
DELETE
DESC
DISTINCT
DROP
DROP COLUMN
DROP CONSTRAINT
DROP DATABASE
DROP DEFAULT
DROP INDEX
DROP TABLE
DROP VIEW
EXEC
EXISTS
FOREIGN KEY
FROM
FULL OUTER JOIN
GROUP BY
HAVING
IN
INDEX
INNER JOIN
INSERT INTO
INSERT INTO SELECT
IS NULL
IS NOT NULL
JOIN
LEFT JOIN
LIKE
LIMIT
NOT
NOT NULL
OR
ORDER BY
OUTER JOIN
PRIMARY KEY
PROCEDURE
RIGHT JOIN
ROWNUM
SELECT
SELECT DISTINCT
SELECT INTO
SELECT TOP
SET
TABLE
TOP
TRUNCATE TABLE
UNION
UNION ALL
UNIQUE
UPDATE
VALUES
VIEW
WHERE

MySQL Функции
Функции строк
ASCII
CHAR_LENGTH
CHARACTER_LENGTH
CONCAT
CONCAT_WS
FIELD
FIND_IN_SET
FORMAT
INSERT
INSTR
LCASE
LEFT
LENGTH
LOCATE
LOWER
LPAD
LTRIM
MID
POSITION
REPEAT
REPLACE
REVERSE
RIGHT
RPAD
RTRIM
SPACE
STRCMP
SUBSTR
SUBSTRING
SUBSTRING_INDEX
TRIM
UCASE
UPPER
Функции чисел
ABS
ACOS
ASIN
ATAN
ATAN2
AVG
CEIL
CEILING
COS
COT
COUNT
DEGREES
DIV
EXP
FLOOR
GREATEST
LEAST
LN
LOG
LOG10
LOG2
MAX
MIN
MOD
PI
POW
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SUM
TAN
TRUNCATE
Функции дат
ADDDATE
ADDTIME
CURDATE
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURTIME
DATE
DATEDIFF
DATE_ADD
DATE_FORMAT
DATE_SUB
DAY
DAYNAME
DAYOFMONTH
DAYOFWEEK
DAYOFYEAR
EXTRACT
FROM_DAYS
HOUR
LAST_DAY
LOCALTIME
LOCALTIMESTAMP
MAKEDATE
MAKETIME
MICROSECOND
MINUTE
MONTH
MONTHNAME
NOW
PERIOD_ADD
PERIOD_DIFF
QUARTER
SECOND
SEC_TO_TIME
STR_TO_DATE
SUBDATE
SUBTIME
SYSDATE
TIME
TIME_FORMAT
TIME_TO_SEC
TIMEDIFF
TIMESTAMP
TO_DAYS
WEEK
WEEKDAY
WEEKOFYEAR
YEAR
YEARWEEK
Функции расширений
BIN
BINARY
CASE
CAST
COALESCE
CONNECTION_ID
CONV
CONVERT
CURRENT_USER
DATABASE
IF
IFNULL
ISNULL
LAST_INSERT_ID
NULLIF
SESSION_USER
SYSTEM_USER
USER
VERSION

SQL Server функции
Функции строк
ASCII
CHAR
CHARINDEX
CONCAT
Concat with +
CONCAT_WS
DATALENGTH
DIFFERENCE
FORMAT
LEFT
LEN
LOWER
LTRIM
NCHAR
PATINDEX
QUOTENAME
REPLACE
REPLICATE
REVERSE
RIGHT
RTRIM
SOUNDEX
SPACE
STR
STUFF
SUBSTRING
TRANSLATE
TRIM
UNICODE
UPPER
Функции чисел
ABS
ACOS
ASIN
ATAN
ATN2
AVG
CEILING
COUNT
COS
COT
DEGREES
EXP
FLOOR
LOG
LOG10
MAX
MIN
PI
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SQUARE
SUM
TAN
Функции дат
CURRENT_TIMESTAMP
DATEADD
DATEDIFF
DATEFROMPARTS
DATENAME
DATEPART
DAY
GETDATE
GETUTCDATE
ISDATE
MONTH
SYSDATETIME
YEAR
Функции расширений
CAST
COALESCE
CONVERT
CURRENT_USER
IIF
ISNULL
ISNUMERIC
NULLIF
SESSION_USER
SESSIONPROPERTY
SYSTEM_USER
USER_NAME

MS Access функции
Функции строк
Asc
Chr
Concat with &
CurDir
Format
InStr
InstrRev
LCase
Left
Len
LTrim
Mid
Replace
Right
RTrim
Space
Split
Str
StrComp
StrConv
StrReverse
Trim
UCase
Функции чисел
Abs
Atn
Avg
Cos
Count
Exp
Fix
Format
Int
Max
Min
Randomize
Rnd
Round
Sgn
Sqr
Sum
Val
Функции дат
Date
DateAdd
DateDiff
DatePart
DateSerial
DateValue
Day
Format
Hour
Minute
Month
MonthName
Now
Second
Time
TimeSerial
TimeValue
Weekday
WeekdayName
Year
Другие функции
CurrentUser
Environ
IsDate
IsNull
IsNumeric

SQL Краткий справочник

INTERACTIVE MODE

When is running in
interactive mode, it reads commands from the terminal and
acts upon them accordingly. In this mode, the terminal is put in
, so that a character will be processed as
soon as it is typed. Almost always, a key will be pressed when
is between displays; that is, while it is
waiting for time seconds to elapse. If this is the
case, the command will be processed and the display will be updated
immediately thereafter (reflecting any changes that the command may have
specified). This happens even if the command was incorrect. If a key is
pressed while is in the middle of updating the
display, it will finish the update and then process the command. Some
commands require additional information, and the user will be prompted
accordingly. While typing this information in, the user’s erase and kill
keys (as set up by the command
stty(1)) are
recognized, and a newline terminates the input.

These commands are currently recognized (^L refers to
control-L):

h | ?
Display a summary of the commands (help screen).
^L
Redraw the screen.
<space>
Update the screen.
q
Quit .

Reading the Screen

p>>

The screen contains a variety of information regarding your server, beginning with the server’s uptime, load average, and tasks status, located in the header.

  1. The first line contains the time, uptime, and load average values for the server. The load average is displayed over 1, 5, and 15 minutes to provide a better overall look at the load your server has undertaken. If there is a spike at one minute, but the load at the five- and fifteen-minute marks is maintained at a lower level, then consider a different response compared to when the load is consistently high through all time intervals.

    In order to properly read the load average section, be aware of how many CPU cores the Linode has. If there is one CPU core, then a load average of 1.00 means the server is at its capacity. This number increases to 2.00 on a Linode with 2 CPU cores, 4.00 with 4, etc.

    A load of .70 for a Linode with 1 core is generally considered the threshold. Any higher than this, then reconfigure your resources or look into upgrading your plan.

  2. A list of tasks and their various states.

  3. The CPU percentage, including the user CPU time (), system CPU time (), time spent on low-priority processes (nice time, or ), idle time (), time spent in wait for I/O processes (), time handling hardware interruptions (), time handling software interruptions (), and time stolen from the virtual machine (steal time, or ).

  4. The sever’s memory usage in kilobytes.

  5. The system’s swap usage in kilobytes.

Following the heading section is a list of processes and related data:

  • PID: The process ID.

  • USER: The username of the task’s owner.

  • PR: The task’s priority, ranging from -20 to 19, with -20 being the most important.

  • NI: The nice value, which augments the priority of a task. Negative values increase a task’s priority, while positive values decrease it.

  • VIRT: Virtual memory used, virtual memory being the combination of both RAM and swap memory.

  • RES: The resident size of non-swapped, physical memory in kilobytes (unless otherwise noted).

  • SHR: The shared memory size, or memory that could be allocated to other processes.

  • S: The processes status. Can be: Running (), sleeping and unable to be interrupted (), sleeping and able to be interrupted (), traced/stopped (), or zombie (). This ties in with the task list in the header.

  • %CPU: CPU percentage since last update.

  • %MEM: Memory (RAM) percentage since last update.

  • TIME+: Cumulative CPU time that the process and children processes have used.

  • COMMAND: Name of process.

Commands

The command offers a set of additional commands that can be used to enhance its use through sorting and locating information.

There are two types of commands that can be used in conjunction with : Command-line options, and interactive commands that can be used while in the program.

Command-Line Options

Command-line options can help organize and filter from the start of the program.

Important commands to know include:

  • : Sets the delay time that uses to refresh the results.
  • : Toggles whether or not idle processes are shown.
  • : Allows the user to filter so only the defined processes are shown.
  • : Filters by user.
  • : Sets to run for a set amount of intervals before exiting.
  • : Runs in batch mode, ideal for log files and for use in conjunction with other programs.

Used alongside one-another, these commands can prove especially useful. For example, if you want to log a set number of processes over a period of time, you can combine batch mode, the process ID filter, the delay setting, and the iteration setting to output the results you are looking for:

For this example, the process ID is 2774, the delay is set to 10 seconds, and the interval is 2 cycles:

Which outputs these results:

Interactive Commands

When run on its own, not in batch mode, is interactive. You can use commands to filter through or toggle various options, alter settings, and even manipulate tasks.

Although there are a vast number of commands, some of the more common ones to know include:

  • or : Instantly update screen.
  • or : Alter the delay time.
  • : Show individual threads for all processes.
  • : Toggles whether idle processes will be displayed.
  • or : Filter processes by the owner’s username.
  • : Toggles between CPUs/CPU cores. When it reads all CPUs are being considered. followed by a number denotes a single CPU core.
  • : Locate string.
  • , : Select sort field (from column names).
  • : Kill a process. You will be prompted to enter the PID.
  • : Write a configuration file. It will output the location of the file.
  • : Open help file.
  • : Quit.

THE DISPLAY

The top few lines of the display show general information about
the state of the system, including the three load average numbers, the
hostname, the current time, the number of existing processes, the number of
processes in each state (starting, running, idle, stopped, zombie, dead, and
on processor), and a percentage of time spent in each of the processor
states (user, nice, system, spinning, interrupt, and idle). It also includes
information about physical and virtual memory allocation. The load average
numbers give the number of jobs in the run queue averaged over 1, 5, and 15
minutes.

The remainder of the screen displays information about individual
processes. This display is similar in spirit to
ps(1) but it is
not exactly the same. The following fields are displayed:

Definition and Usage

The property affects the vertical position of a positioned element.
This property has no effect on non-positioned elements.

  • If position: absolute; or position: fixed; — the property sets the top edge of an element to a unit above/below the
    top edge of its nearest positioned ancestor.
  • If position: relative; — the property makes the element’s
    top
    edge to move above/below its normal position.
  • If position: sticky; — the property behaves like its position is
    relative when the element is inside the viewport, and like its position is
    fixed when it is outside.
  • If position: static; — the property has no effect.
Default value: auto
Inherited: no
Animatable: yes. Read about animatable
Try it
Version: CSS2
JavaScript syntax: object.style.top=»100px»
Try it

Топ в молодежном сленге

Топ (top) – это высший уровень качества, что-то наиболее удачное или успешное в своей сфере. Этот термин широко используется в молодежной среде для описания вещей, которые пользуются популярностью и считаются самыми лучшими.

К примеру, если ты скажешь «этот ресторан топ», это означает, что этот ресторан является самым лучшим среди всех ресторанов, которые ты посетил.

Также слово «топ» может использоваться как существительное. Например, если твой друг говорит «я купил новый топ», он означает, что купил нарядную, стильную и модную вещь верхней одежды.

Топ может иметь различную направленность: музыкальный топ, модный топ, топ игр для компьютера и т.д. Также существует фраза «топчик» — это отличное качество музыки, которую слушает молодежь.

Примеры употребления топ слов в разговорах

Топ — часто используемое слово, обозначает что-то лучшее, самое популярное или модное. Например: «Этот фильм — топ!» или «Эта песня — топ, я ее слушаю каждый день».

Крутой — также подразумевает что-то хорошее, но обычно относится к человеку, который выделяется своей уникальностью или талантом. Например: «Он крутой парень, у него есть свой стиль и многие его восхищаются», или «Она крутая танцовщица, ее выступления просто впечатляют».

Лютый — слово, обозначающее что-то очень сильное или экстремальное. Обычно используется в контексте каких-то неприятностей или сложных ситуаций. Например: «Сегодня у меня лютый день, все идет не так, как я планировал» или «Я попал в лютую аварию, сейчас чувствую себя не очень хорошо».

Фича — это нововведение или изменения в чем-то, что делает это лучше, удобнее или интереснее. Например: «В новом обновлении социальной сети есть много полезных фич», или «Я купил новый телефон, там много крутых фич, которые я еще не видел раньше».

Прочекинуть — это проверка чего-то, например, проверка события или плана на предмет возможных проблем. Например: «Давай прочекиним все детали нашего путешествия, чтобы не было неприятных сюрпризов», или «Прочекинь, пожалуйста, текст статьи на опечатки».

Баттл — это соревнование или схватка между людьми, часто используется в контексте музыкальных баттлов или баттлов между командами. Например: «Смотрели вчера баттл отборных танцоров, это было просто круто!», или «Сегодня играем баттл нашей команды с соперниками, победим!».

  • Примеры употребления топ слов с разной интонацией
    • Топ: «А, этот топ фильм я уже видел.» — употребление с негативной интонацией, обозначает недопонимание популярности фильма; «Самый топовый ресторан в городе!» — употребляется с положительной оценкой
    • Крутой: «Этот парень крутой!» — употребление с нейтральной до положительной интонацией; «Он такой крутой, что даже не замечает всех остальных» — употребление с отрицательной интонацией, обозначает эгоизм человека
    • Лютый: «Вчера был лютый день, ничего не получалось» — употребление с негативной интонацией, обозначает подавленность человека;
    • Фича: «Эта фича в приложении — это то, что я искал!» — употребление с положительной интонацией; «Какие же у вас тут все замечательные фичи, только самих пользователей забыли защитить» — употребление с негативной интонацией, обозначает несоответствие ожиданиям пользователя
    • Прочекинуть: «Давай прочекиним то, что у нас в планах на выходные» — употребление с нейтральной до положительной интонацией, обозначает аккуратность и пунктуальность; «Тебе на работе некогда прочекинить детали своего проекта?» — употребление с негативной интонацией, обозначает ироничность в отношении человека
    • Баттл: «Какой у вас был крутой баттл на вечеринке в прошлый раз!» — употребление с положительной интонацией; «Танцы закончились баттлом между двумя ребятами, это было просто убого» — употребление с негативной интонацией, обозначает неудачу или провал события

Совместимость

Выражение TOP не влияет на другие выражения, которые могут быть запущены триггером. Таблицы inserted и deleted в триггерах всегда возвращают только те строки, которые реально затронуты инструкциями INSERT, UPDATE, MERGE или DELETE. Например, если INSERT TRIGGER срабатывает в результате выполнения инструкции INSERT с предложением TOP,

то SQL Server позволяет обновлять строки через представления. Так как предложение TOP можно включать в определение представления, некоторые строки могут исчезнуть из представления после обновления, если они больше не соответствуют требованиям выражения TOP.

При использовании в инструкции MERGE предложение TOP применяется после соединения всей исходной таблицы и всей целевой таблицы, а также удаления соединенных строк, которые не соответствуют требованиям к вставке, обновлению или удалению. Предложение TOP дополнительно сокращает количество соединенных строк до указанного значения, а затем к оставшимся соединенным строкам применяются операции вставки, обновления или удаления без определенного порядка. Это означает, что порядок распределения строк по действиям, определенным в предложениях WHEN отсутствует. Например если TOP (10) в запросе затрагивает 10 строк, в их число могут попасть 7 обновляемых и 3 добавляемые строки. Или же 1 строка будет удаляемая, 5 обновляемых и 4 добавляемые строки либо любой другой вариант. Инструкция MERGE выполняет полное сканирование исходной и целевой таблиц, поэтому предложение TOP для изменения большой таблицы путем создания нескольких пакетов может снизить производительность ввода-вывода. В этом случае необходимо сделать так, чтобы все последующие пакеты содержали только новые строки.

Соблюдайте осторожность при использовании предложения TOP в запросе, содержащем операторы UNION, UNION ALL, EXCEPT и INTERSECT. Есть вероятность того, что результаты запроса будут непредсказуемыми из-за неожиданной логики обработки предложений TOP и ORDER BY в операции выбора

Например, исходя из следующих таблиц и данных, предположим, что необходимо вернуть самый недорогой красный и синий автомобили. Иными словами, красный седан и синий фургон.

Чтобы получить такие результаты, можно написать следующий запрос.

Ниже приведен результирующий набор.

Использование TOP и ORDER BY во вложенной операции выбора гарантирует, что результаты предложения ORDER BY применяются к предложению TOP, а не к сортировке результата операции UNION.

Результирующий набор:

Понравилась статья? Поделиться с друзьями:
Setup Pro
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: