text:
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<Title>
		<v8:item>
			<v8:lang>ru</v8:lang>
			<v8:content>Сегменты номенклатуры</v8:content>
		</v8:item>
	</Title>
	<AutoTitle>false</AutoTitle>
	<VerticalScroll>useIfNecessary</VerticalScroll>
	<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
		<Autofill>false</Autofill>
	</AutoCommandBar>
	<Events>
		<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
	</Events>
	<ChildItems>
		<Pages name="СтраницыТипыСегментов" id="20">
			<Title>
				<v8:item>
					<v8:lang>ru</v8:lang>
					<v8:content>Страницы типы сегментов</v8:content>
				</v8:item>
			</Title>
			<ToolTip>
				<v8:item>
					<v8:lang>ru</v8:lang>
					<v8:content>Страницы типы сегментов</v8:content>
				</v8:item>
			</ToolTip>
			<ExtendedTooltip name="СтраницыТипыСегментовExtendedTooltip" id="44"/>
			<Events>
				<Event name="OnCurrentPageChange">СтраницыТипыСегментовПриСменеСтраницы</Event>
			</Events>
			<ChildItems>
				<Page name="СтраницаСформированныеВручную" id="21">
					<Title>
						<v8:item>
							<v8:lang>ru</v8:lang>
							<v8:content>Формируемые вручную</v8:content>
						</v8:item>
					</Title>
					<ToolTip>
						<v8:item>
							<v8:lang>ru</v8:lang>
							<v8:content>Страница сформированные вручную</v8:content>
						</v8:item>
					</ToolTip>
					<ExtendedTooltip name="СтраницаСформированныеВручнуюExtendedTooltip" id="45"/>
					<ChildItems>

							<Representation>List</Representation>
							<AutoInsertNewRow>true</AutoInsertNewRow>
							<EnableStartDrag>true</EnableStartDrag>
							<EnableDrag>true</EnableDrag>
							<DataPath>Сегменты</DataPath>
							<CommandSet>
								<ExcludedCommand>Copy</ExcludedCommand>
								<ExcludedCommand>MoveUp</ExcludedCommand>
								<ExcludedCommand>Delete</ExcludedCommand>
								<ExcludedCommand>EndEdit</ExcludedCommand>
								<ExcludedCommand>Add</ExcludedCommand>
								<ExcludedCommand>Change</ExcludedCommand>
								<ExcludedCommand>MoveDown</ExcludedCommand>
							</CommandSet>
							<SearchStringLocation>None</SearchStringLocation>
							<ViewStatusLocation>None</ViewStatusLocation>
							<SearchControlLocation>None</SearchControlLocation>
							<RowFilter xsi:nil="true"/>
							<ContextMenu name="СегментыКонтекстноеМеню" id="2">
								<ChildItems>
									<Button name="СегментыКонтекстноеМенюВключитьВСегмент" id="38">
										<Type>CommandBarButton</Type>
										<CommandName>Form.Command.ВключитьВСегмент</CommandName>
										<Parameter xsi:nil="true"/>
										<ExtendedTooltip name="СегментыКонтекстноеМенюВключитьВСегментExtendedTooltip" id="46"/>
									</Button>
									<Button name="СегментыКонтекстноеМенюУдалитьИзСегмента" id="39">
										<Type>CommandBarButton</Type>
										<CommandName>Form.Command.УдалитьИзСегмента</CommandName>
										<Parameter xsi:nil="true"/>
										<ExtendedTooltip name="СегментыКонтекстноеМенюУдалитьИзСегментаExtendedTooltip" id="47"/>
									</Button>
								</ChildItems>
							</ContextMenu>
							<AutoCommandBar name="СегментыКоманднаяПанель" id="3">
								<Autofill>false</Autofill>
								<ChildItems>
									<Button name="ВключитьВСегмент" id="14">
										<Type>CommandBarButton</Type>
										<Representation>PictureAndText</Representation>
										<CommandName>Form.Command.ВключитьВСегмент</CommandName>
										<Parameter xsi:nil="true"/>
										<ExtendedTooltip name="ВключитьВСегментExtendedTooltip" id="48"/>
									</Button>
									<Button name="УдалитьИзСегмента" id="15">
										<Type>CommandBarButton</Type>
										<CommandName>Form.Command.УдалитьИзСегмента</CommandName>
										<Parameter xsi:nil="true"/>
										<ExtendedTooltip name="УдалитьИзСегментаExtendedTooltip" id="49"/>
									</Button>
									<Button name="СегментыОбновить" id="40">
										<Type>CommandBarButton</Type>
										<CommandName>Form.Command.Обновить</CommandName>
										<Parameter xsi:nil="true"/>
										<ExtendedTooltip name="СегментыОбновитьExtendedTooltip" id="50"/>
									</Button>
									<ButtonGroup name="СегментыГруппаКомандыСписка" id="16">
										<Title>
											<v8:item>
												<v8:lang>ru</v8:lang>
												<v8:content>Сегменты группа команды списка</v8:content>
											</v8:item>
										</Title>
										<ToolTip>
											<v8:item>
												<v8:lang>ru</v8:lang>
												<v8:content>Сегменты группа команды списка</v8:content>
											</v8:item>
										</ToolTip>
										<CommandSource>Item.Сегменты</CommandSource>
										<ExtendedTooltip name="СегментыГруппаКомандыСпискаExtendedTooltip" id="51"/>
									</ButtonGroup>
									<Button name="СегментыСправка" id="41">
										<Type>CommandBarButton</Type>
										<CommandName>Form.StandardCommand.Help</CommandName>
										<Parameter xsi:nil="true"/>
										<ExtendedTooltip name="СегментыСправкаExtendedTooltip" id="52"/>
									</Button>
								</ChildItems>
							</AutoCommandBar>
							<ExtendedTooltip name="СегментыExtendedTooltip" id="53"/>
							<SearchStringAddition name="СегментыSearchString" id="54">
								<Source>
									<lf:elementId>1</lf:elementId>
									<lf:additionId>0</lf:additionId>
								</Source>
								<ContextMenu name="СегментыSearchStringContextMenu" id="55"/>
								<ExtendedTooltip name="СегментыSearchStringExtendedTooltip" id="56"/>
							</SearchStringAddition>
							<ViewStatusAddition name="СегментыViewStatus" id="57">
								<Source>
									<lf:elementId>1</lf:elementId>
									<lf:additionId>1</lf:additionId>
								</Source>
								<ContextMenu name="СегментыViewStatusContextMenu" id="58"/>
								<ExtendedTooltip name="СегментыViewStatusExtendedTooltip" id="59"/>
							</ViewStatusAddition>
							<SearchControlAddition name="СегментыSearchControl" id="60">
								<Source>
									<lf:elementId>1</lf:elementId>
									<lf:additionId>2</lf:additionId>
								</Source>
								<ContextMenu name="СегментыSearchControlContextMenu" id="61"/>
								<ExtendedTooltip name="СегментыSearchControlExtendedTooltip" id="62"/>
							</SearchControlAddition>
							<Events>
								<Event name="Selection">СегментыВыбор</Event>
							</Events>
							<ChildItems>
								<ColumnGroup name="СегментыСегментПризнакВхождения" id="17">
									<Title>
										<v8:item>
											<v8:lang>ru</v8:lang>
											<v8:content>Сегменты сегмент признак вхождения</v8:content>
										</v8:item>
									</Title>
									<ToolTip>
										<v8:item>
											<v8:lang>ru</v8:lang>
											<v8:content>Сегменты сегмент признак вхождения</v8:content>
										</v8:item>
									</ToolTip>
									<Group>Horizontal</Group>
									<ExtendedTooltip name="СегментыСегментПризнакВхожденияExtendedTooltip" id="63"/>
									<ChildItems>
										<CheckBoxField name="СегментыВходитВСегмент" id="6">
											<DataPath>Сегменты.ВходитВСегмент</DataPath>
											<ReadOnly>true</ReadOnly>
											<TitleLocation>None</TitleLocation>
											<ToolTip>
												<v8:item>
													<v8:lang>ru</v8:lang>
													<v8:content>Признак вхождения в сегмент</v8:content>
												</v8:item>
											</ToolTip>
											<EditMode>EnterOnInput</EditMode>
											<CheckBoxType>Auto</CheckBoxType>
											<ContextMenu name="СегментыВходитВСегментКонтекстноеМеню" id="7"/>
											<ExtendedTooltip name="СегментыВходитВСегментExtendedTooltip" id="64"/>
										</CheckBoxField>
										<InputField name="СегментыСегмент" id="4">
											<DataPath>Сегменты.Сегмент</DataPath>
											<ReadOnly>true</ReadOnly>
											<EditMode>EnterOnInput</EditMode>
											<ChoiceButton>false</ChoiceButton>
											<OpenButton>true</OpenButton>
											<TextEdit>false</TextEdit>
											<ContextMenu name="СегментыСегментКонтекстноеМеню" id="5"/>
											<ExtendedTooltip name="СегментыСегментExtendedTooltip" id="65"/>
										</InputField>
									</ChildItems>
								</ColumnGroup>
								<InputField name="СегментыКоличествоХарактеристик" id="10">
									<DataPath>Сегменты.КоличествоХарактеристик</DataPath>
									<ReadOnly>true</ReadOnly>
									<Title>
										<v8:item>
											<v8:lang>ru</v8:lang>
											<v8:content>Характеристик в сегменте</v8:content>
										</v8:item>
									</Title>
									<HorizontalAlign>Left</HorizontalAlign>
									<EditMode>EnterOnInput</EditMode>
									<ChoiceButton>false</ChoiceButton>
									<ClearButton>false</ClearButton>
									<SpinButton>false</SpinButton>
									<OpenButton>false</OpenButton>
									<TextEdit>false</TextEdit>
									<ChoiceListButton>false</ChoiceListButton>
									<ContextMenu name="СегментыКоличествоХарактеристикКонтекстноеМеню" id="11"/>
									<ExtendedTooltip name="СегментыКоличествоХарактеристикExtendedTooltip" id="66"/>
								</InputField>
								<InputField name="СегментыОтветственный" id="18">
									<DataPath>Сегменты.Ответственный</DataPath>
									<ReadOnly>true</ReadOnly>
									<EditMode>EnterOnInput</EditMode>
									<TextEdit>false</TextEdit>
									<ContextMenu name="СегментыОтветственныйКонтекстноеМеню" id="19"/>
									<ExtendedTooltip name="СегментыОтветственныйExtendedTooltip" id="67"/>
								</InputField>
							</ChildItems>

					</ChildItems>
				</Page>
				<Page name="СтраницаОбновляемыеИДинамические" id="22">
					<Title>
						<v8:item>
							<v8:lang>ru</v8:lang>
							<v8:content>Формируемые автоматически</v8:content>
						</v8:item>
					</Title>
					<ToolTip>
						<v8:item>
							<v8:lang>ru</v8:lang>
							<v8:content>Страница обновляемые и динамические</v8:content>
						</v8:item>
					</ToolTip>
					<ExtendedTooltip name="СтраницаОбновляемыеИДинамическиеExtendedTooltip" id="68"/>
					<ChildItems>

							<Representation>List</Representation>
							<AutoInsertNewRow>true</AutoInsertNewRow>
							<EnableStartDrag>true</EnableStartDrag>
							<EnableDrag>true</EnableDrag>
							<DataPath>ОбновляемыеИДинамические</DataPath>
							<CommandSet>
								<ExcludedCommand>Copy</ExcludedCommand>
								<ExcludedCommand>MoveUp</ExcludedCommand>
								<ExcludedCommand>Delete</ExcludedCommand>
								<ExcludedCommand>EndEdit</ExcludedCommand>
								<ExcludedCommand>Add</ExcludedCommand>
								<ExcludedCommand>Change</ExcludedCommand>
								<ExcludedCommand>MoveDown</ExcludedCommand>
							</CommandSet>
							<SearchStringLocation>None</SearchStringLocation>
							<ViewStatusLocation>None</ViewStatusLocation>
							<SearchControlLocation>None</SearchControlLocation>
							<RowFilter xsi:nil="true"/>
							<ContextMenu name="ОбновляемыеИДинамическиеКонтекстноеМеню" id="24"/>
							<AutoCommandBar name="ОбновляемыеИДинамическиеКоманднаяПанель" id="25">
								<Autofill>false</Autofill>
								<ChildItems>
									<Button name="ОбновляемыеИДинамическиеОбновить" id="43">
										<Type>CommandBarButton</Type>
										<CommandName>Form.Command.Обновить</CommandName>
										<Parameter xsi:nil="true"/>
										<ExtendedTooltip name="ОбновляемыеИДинамическиеОбновитьExtendedTooltip" id="69"/>
									</Button>
									<ButtonGroup name="ОбновляемыеИДинамическиеГруппаКнопокСтандартные" id="36">
										<Title>
											<v8:item>
												<v8:lang>ru</v8:lang>
												<v8:content>Обновляемые и динамические группа кнопок стандартные</v8:content>
											</v8:item>
										</Title>
										<ToolTip>
											<v8:item>
												<v8:lang>ru</v8:lang>
												<v8:content>Обновляемые и динамические группа кнопок стандартные</v8:content>
											</v8:item>
										</ToolTip>
										<CommandSource>Item.ОбновляемыеИДинамические</CommandSource>
										<ExtendedTooltip name="ОбновляемыеИДинамическиеГруппаКнопокСтандартныеExtendedTooltip" id="70"/>
									</ButtonGroup>
									<Button name="ОбновляемыеИДинамическиеСправка" id="42">
										<Type>CommandBarButton</Type>
										<CommandName>Form.StandardCommand.Help</CommandName>
										<Parameter xsi:nil="true"/>
										<ExtendedTooltip name="ОбновляемыеИДинамическиеСправкаExtendedTooltip" id="71"/>
									</Button>
								</ChildItems>
							</AutoCommandBar>
							<ExtendedTooltip name="ОбновляемыеИДинамическиеExtendedTooltip" id="72"/>
							<SearchStringAddition name="ОбновляемыеИДинамическиеSearchString" id="73">
								<Source>
									<lf:elementId>23</lf:elementId>
									<lf:additionId>0</lf:additionId>
								</Source>
								<ContextMenu name="ОбновляемыеИДинамическиеSearchStringContextMenu" id="74"/>
								<ExtendedTooltip name="ОбновляемыеИДинамическиеSearchStringExtendedTooltip" id="75"/>
							</SearchStringAddition>
							<ViewStatusAddition name="ОбновляемыеИДинамическиеViewStatus" id="76">
								<Source>
									<lf:elementId>23</lf:elementId>
									<lf:additionId>1</lf:additionId>
								</Source>
								<ContextMenu name="ОбновляемыеИДинамическиеViewStatusContextMenu" id="77"/>
								<ExtendedTooltip name="ОбновляемыеИДинамическиеViewStatusExtendedTooltip" id="78"/>
							</ViewStatusAddition>
							<SearchControlAddition name="ОбновляемыеИДинамическиеSearchControl" id="79">
								<Source>
									<lf:elementId>23</lf:elementId>
									<lf:additionId>2</lf:additionId>
								</Source>
								<ContextMenu name="ОбновляемыеИДинамическиеSearchControlContextMenu" id="80"/>
								<ExtendedTooltip name="ОбновляемыеИДинамическиеSearchControlExtendedTooltip" id="81"/>
							</SearchControlAddition>
							<Events>
								<Event name="Selection">СегментыВыбор</Event>
							</Events>
							<ChildItems>
								<ColumnGroup name="ОбновляемыеИДинамическиеСегментПризнакВхождения" id="37">
									<Title>
										<v8:item>
											<v8:lang>ru</v8:lang>
											<v8:content>Обновляемые и динамические сегмент признак вхождения</v8:content>
										</v8:item>
									</Title>
									<ToolTip>
										<v8:item>
											<v8:lang>ru</v8:lang>
											<v8:content>Обновляемые и динамические сегмент признак вхождения</v8:content>
										</v8:item>
									</ToolTip>
									<Group>Horizontal</Group>
									<ExtendedTooltip name="ОбновляемыеИДинамическиеСегментПризнакВхожденияExtendedTooltip" id="82"/>
									<ChildItems>
										<CheckBoxField name="ОбновляемыеИДинамическиеВходитВСегмент" id="28">
											<DataPath>ОбновляемыеИДинамические.ВходитВСегмент</DataPath>
											<ReadOnly>true</ReadOnly>
											<TitleLocation>None</TitleLocation>
											<ToolTip>
												<v8:item>
													<v8:lang>ru</v8:lang>
													<v8:content>Признак вхождения в сегмент</v8:content>
												</v8:item>
											</ToolTip>
											<EditMode>EnterOnInput</EditMode>
											<CheckBoxType>Auto</CheckBoxType>
											<ContextMenu name="ОбновляемыеИДинамическиеВходитВСегментКонтекстноеМеню" id="29"/>
											<ExtendedTooltip name="ОбновляемыеИДинамическиеВходитВСегментExtendedTooltip" id="83"/>
										</CheckBoxField>
										<InputField name="ОбновляемыеИДинамическиеСегмент" id="26">
											<DataPath>ОбновляемыеИДинамические.Сегмент</DataPath>
											<ReadOnly>true</ReadOnly>
											<EditMode>EnterOnInput</EditMode>
											<ContextMenu name="ОбновляемыеИДинамическиеСегментКонтекстноеМеню" id="27"/>
											<ExtendedTooltip name="ОбновляемыеИДинамическиеСегментExtendedTooltip" id="84"/>
										</InputField>
									</ChildItems>
								</ColumnGroup>
								<InputField name="ОбновляемыеИДинамическиеКоличествоХарактеристик" id="30">
									<DataPath>ОбновляемыеИДинамические.КоличествоХарактеристик</DataPath>
									<ReadOnly>true</ReadOnly>
									<Title>
										<v8:item>
											<v8:lang>ru</v8:lang>
											<v8:content>Характеристик в сегменте</v8:content>
										</v8:item>
									</Title>
									<HorizontalAlign>Left</HorizontalAlign>
									<EditMode>EnterOnInput</EditMode>
									<ContextMenu name="ОбновляемыеИДинамическиеКоличествоХарактеристикКонтекстноеМеню" id="31"/>
									<ExtendedTooltip name="ОбновляемыеИДинамическиеКоличествоХарактеристикExtendedTooltip" id="85"/>
								</InputField>
								<InputField name="ОбновляемыеИДинамическиеСпособФормирования" id="32">
									<DataPath>ОбновляемыеИДинамические.СпособФормирования</DataPath>
									<ReadOnly>true</ReadOnly>
									<EditMode>EnterOnInput</EditMode>
									<ContextMenu name="ОбновляемыеИДинамическиеСпособФормированияКонтекстноеМеню" id="33"/>
									<ExtendedTooltip name="ОбновляемыеИДинамическиеСпособФормированияExtendedTooltip" id="86"/>
								</InputField>
								<InputField name="ОбновляемыеИДинамическиеОтветственный" id="34">
									<DataPath>ОбновляемыеИДинамические.Ответственный</DataPath>
									<ReadOnly>true</ReadOnly>
									<EditMode>EnterOnInput</EditMode>
									<ContextMenu name="ОбновляемыеИДинамическиеОтветственныйКонтекстноеМеню" id="35"/>
									<ExtendedTooltip name="ОбновляемыеИДинамическиеОтветственныйExtendedTooltip" id="87"/>
								</InputField>
							</ChildItems>

					</ChildItems>
				</Page>
			</ChildItems>
		</Pages>
	</ChildItems>
	<Attributes>
		<Attribute name="ИспользуютсяХарактеристики" id="2">
			<Title>
				<v8:item>
					<v8:lang>ru</v8:lang>
					<v8:content>Используются характеристики</v8:content>
				</v8:item>
			</Title>
			<Type>
				<v8:Type>xs:boolean</v8:Type>
			</Type>
		</Attribute>
		<Attribute name="Номенклатура" id="3">
			<Title>
				<v8:item>
					<v8:lang>ru</v8:lang>
					<v8:content>Номенклатура</v8:content>
				</v8:item>
			</Title>
			<Type>
				<v8:Type>cfg:CatalogRef.Номенклатура</v8:Type>
			</Type>
		</Attribute>
		<Attribute name="Сегменты" id="1">
			<Title>
				<v8:item>
					<v8:lang>ru</v8:lang>
					<v8:content>Сегменты</v8:content>
				</v8:item>
			</Title>
			<Type>
				<v8:Type>v8:ValueTable</v8:Type>
			</Type>
			<Columns>
				<Column name="Сегмент" id="1">
					<Title>
						<v8:item>
							<v8:lang>ru</v8:lang>
							<v8:content>Сегмент</v8:content>
						</v8:item>
					</Title>
					<Type>
						<v8:Type>cfg:CatalogRef.СегментыНоменклатуры</v8:Type>
					</Type>
				</Column>
				<Column name="ВходитВСегмент" id="2">
					<Title>
						<v8:item>
							<v8:lang>ru</v8:lang>
							<v8:content>Входит в сегмент</v8:content>
						</v8:item>
					</Title>
					<Type>
						<v8:Type>xs:boolean</v8:Type>
					</Type>
				</Column>
				<Column name="Характеристики" id="3">
					<Title>
						<v8:item>
							<v8:lang>ru</v8:lang>
							<v8:content>Характеристики</v8:content>
						</v8:item>
					</Title>
					<Type>
						<v8:Type>v8:ValueTable</v8:Type>
					</Type>
				</Column>
				<Column name="КоличествоХарактеристик" id="4">
					<Title>
						<v8:item>
							<v8:lang>ru</v8:lang>
							<v8:content>Количество характеристик</v8:content>
						</v8:item>
					</Title>
					<Type>
						<v8:Type>xs:decimal</v8:Type>
						<v8:NumberQualifiers>
							<v8:Digits>3</v8:Digits>
							<v8:FractionDigits>0</v8:FractionDigits>
							<v8:AllowedSign>Any</v8:AllowedSign>
						</v8:NumberQualifiers>
					</Type>
				</Column>
				<Column name="СпособФормирования" id="5">
					<Title>
						<v8:item>
							<v8:lang>ru</v8:lang>
							<v8:content>Способ формирования</v8:content>
						</v8:item>
					</Title>
					<Type>
						<v8:Type>cfg:EnumRef.СпособыФормированияСегментов</v8:Type>
					</Type>
				</Column>
				<Column name="Ответственный" id="6">
					<Title>
						<v8:item>
							<v8:lang>ru</v8:lang>
							<v8:content>Ответственный</v8:content>
						</v8:item>
					</Title>
					<Type>
						<v8:Type>cfg:CatalogRef.Пользователи</v8:Type>
					</Type>
				</Column>
				<AdditionalColumns table="Сегменты.Характеристики">
					<Column name="ВходитВСегмент" id="1">
						<Title>
							<v8:item>
								<v8:lang>ru</v8:lang>
								<v8:content>Входит в сегмент</v8:content>
							</v8:item>
						</Title>
						<Type>
							<v8:Type>xs:boolean</v8:Type>
						</Type>
					</Column>
					<Column name="Характеристика" id="2">
						<Title>
							<v8:item>
								<v8:lang>ru</v8:lang>
								<v8:content>Характеристика</v8:content>
							</v8:item>
						</Title>
						<Type>
							<v8:Type>cfg:CatalogRef.ХарактеристикиНоменклатуры</v8:Type>
						</Type>
					</Column>
				</AdditionalColumns>
			</Columns>
		</Attribute>
		<Attribute name="ОбновляемыеИДинамические" id="4">
			<Title>
				<v8:item>
					<v8:lang>ru</v8:lang>
					<v8:content>Обновляемые и динамические</v8:content>
				</v8:item>
			</Title>
			<Type>
				<v8:Type>v8:ValueTable</v8:Type>
			</Type>
			<Columns>
				<Column name="Сегмент" id="1">
					<Title>
						<v8:item>
							<v8:lang>ru</v8:lang>
							<v8:content>Сегмент</v8:content>
						</v8:item>
					</Title>
					<Type>
						<v8:Type>cfg:CatalogRef.СегментыНоменклатуры</v8:Type>
					</Type>
				</Column>
				<Column name="ВходитВСегмент" id="2">
					<Title>
						<v8:item>
							<v8:lang>ru</v8:lang>
							<v8:content>Входит в сегмент</v8:content>
						</v8:item>
					</Title>
					<Type>
						<v8:Type>xs:boolean</v8:Type>
					</Type>
				</Column>
				<Column name="Характеристики" id="3">
					<Title>
						<v8:item>
							<v8:lang>ru</v8:lang>
							<v8:content>Характеристики</v8:content>
						</v8:item>
					</Title>
					<Type>
						<v8:Type>v8:ValueTable</v8:Type>
					</Type>
				</Column>
				<Column name="КоличествоХарактеристик" id="4">
					<Title>
						<v8:item>
							<v8:lang>ru</v8:lang>
							<v8:content>Количество характеристик</v8:content>
						</v8:item>
					</Title>
					<Type>
						<v8:Type>xs:decimal</v8:Type>
						<v8:NumberQualifiers>
							<v8:Digits>3</v8:Digits>
							<v8:FractionDigits>0</v8:FractionDigits>
							<v8:AllowedSign>Any</v8:AllowedSign>
						</v8:NumberQualifiers>
					</Type>
				</Column>
				<Column name="СпособФормирования" id="5">
					<Title>
						<v8:item>
							<v8:lang>ru</v8:lang>
							<v8:content>Способ формирования</v8:content>
						</v8:item>
					</Title>
					<Type>
						<v8:Type>cfg:EnumRef.СпособыФормированияСегментов</v8:Type>
					</Type>
				</Column>
				<Column name="Ответственный" id="6">
					<Title>
						<v8:item>
							<v8:lang>ru</v8:lang>
							<v8:content>Ответственный</v8:content>
						</v8:item>
					</Title>
					<Type>
						<v8:Type>cfg:CatalogRef.Пользователи</v8:Type>
					</Type>
				</Column>
				<AdditionalColumns table="ОбновляемыеИДинамические.Характеристики">
					<Column name="ВходитВСегмент" id="1">
						<Title>
							<v8:item>
								<v8:lang>ru</v8:lang>
								<v8:content>Входит в сегмент</v8:content>
							</v8:item>
						</Title>
						<Type>
							<v8:Type>xs:boolean</v8:Type>
						</Type>
					</Column>
					<Column name="Характеристика" id="2">
						<Title>
							<v8:item>
								<v8:lang>ru</v8:lang>
								<v8:content>Характеристика</v8:content>
							</v8:item>
						</Title>
						<Type>
							<v8:Type>cfg:CatalogRef.ХарактеристикиНоменклатуры</v8:Type>
						</Type>
					</Column>
				</AdditionalColumns>
			</Columns>
		</Attribute>
		<Attribute name="СписокДинамическихИОбновляемыхСегментовСформирован" id="5">
			<Title>
				<v8:item>
					<v8:lang>ru</v8:lang>
					<v8:content>Список динамических и обновляемых сегментов сформирован</v8:content>
				</v8:item>
			</Title>
			<Type>
				<v8:Type>xs:boolean</v8:Type>
			</Type>
		</Attribute>
		<Attribute name="ХарактеристикиДляИзменения" id="6">
			<Title>
				<v8:item>
					<v8:lang>ru</v8:lang>
					<v8:content>Характеристики для изменения</v8:content>
				</v8:item>
			</Title>
			<Type>
				<v8:Type>v8:ValueTable</v8:Type>
			</Type>
			<Columns>
				<Column name="ВходитВСегмент" id="2">
					<Title>
						<v8:item>
							<v8:lang>ru</v8:lang>
							<v8:content>Входит в сегмент</v8:content>
						</v8:item>
					</Title>
					<Type>
						<v8:Type>xs:boolean</v8:Type>
					</Type>
				</Column>
				<Column name="Характеристика" id="3">
					<Title>
						<v8:item>
							<v8:lang>ru</v8:lang>
							<v8:content>Характеристика</v8:content>
						</v8:item>
					</Title>
					<Type>
						<v8:Type>cfg:CatalogRef.ХарактеристикиНоменклатуры</v8:Type>
					</Type>
				</Column>
			</Columns>
		</Attribute>
		<ConditionalAppearance>
			<dcsset:item>
				<dcsset:selection>
					<dcsset:item>
						<dcsset:field>СегментыКоличествоХарактеристик</dcsset:field>
					</dcsset:item>
				</dcsset:selection>
				<dcsset:filter>
					<dcsset:item xsi:type="dcsset:FilterItemComparison">
						<dcsset:left xsi:type="dcscor:Field">Сегменты.КоличествоХарактеристик</dcsset:left>
						<dcsset:comparisonType>Equal</dcsset:comparisonType>
						<dcsset:right xsi:type="xs:decimal">0</dcsset:right>
					</dcsset:item>
				</dcsset:filter>
				<dcsset:appearance>
					<dcscor:item xsi:type="dcsset:SettingsParameterValue">
						<dcscor:parameter>TextColor</dcscor:parameter>
						<dcscor:value xsi:type="v8ui:Color">style:ТекстЗапрещеннойЯчейкиЦвет</dcscor:value>
					</dcscor:item>
					<dcscor:item xsi:type="dcsset:SettingsParameterValue">
						<dcscor:parameter>Text</dcscor:parameter>
						<dcscor:value xsi:type="xs:string"><Отсутствуют></dcscor:value>
					</dcscor:item>
				</dcsset:appearance>
			</dcsset:item>
		</ConditionalAppearance>
	</Attributes>
	<Commands>
		<Command name="ВключитьВСегмент" id="1">
			<Title>
				<v8:item>
					<v8:lang>ru</v8:lang>
					<v8:content>Включить в сегмент</v8:content>
				</v8:item>
			</Title>
			<ToolTip>
				<v8:item>
					<v8:lang>ru</v8:lang>
					<v8:content>Включить в сегмент</v8:content>
				</v8:item>
			</ToolTip>
			<Picture>
				<xr:Ref>StdPicture.CreateListItem</xr:Ref>
				<xr:LoadTransparent>true</xr:LoadTransparent>
			</Picture>
			<Action>ВключитьВСегмент</Action>
		</Command>
		<Command name="УдалитьИзСегмента" id="2">
			<Title>
				<v8:item>
					<v8:lang>ru</v8:lang>
					<v8:content>Исключить из сегмента</v8:content>
				</v8:item>
			</Title>
			<ToolTip>
				<v8:item>
					<v8:lang>ru</v8:lang>
					<v8:content>Удалить из сегмента</v8:content>
				</v8:item>
			</ToolTip>
			<Picture>
				<xr:Ref>StdPicture.Delete</xr:Ref>
				<xr:LoadTransparent>true</xr:LoadTransparent>
			</Picture>
			<Action>УдалитьИзСегмента</Action>
			<Representation>TextPicture</Representation>
		</Command>
		<Command name="Обновить" id="3">
			<Title>
				<v8:item>
					<v8:lang>ru</v8:lang>
					<v8:content>Обновить</v8:content>
				</v8:item>
			</Title>
			<ToolTip>
				<v8:item>
					<v8:lang>ru</v8:lang>
					<v8:content>Обновить</v8:content>
				</v8:item>
			</ToolTip>
			<Shortcut>F5</Shortcut>
			<Picture>
				<xr:Ref>StdPicture.Refresh</xr:Ref>
				<xr:LoadTransparent>true</xr:LoadTransparent>
			</Picture>
			<Action>Обновить</Action>
		</Command>
	</Commands>
</Form>


text:
package com.qvcsos.server;

import com.qumasoft.qvcslib.QVCSException;
import com.qumasoft.qvcslib.ServerResponseFactoryInterface;
import java.util.Date;

/**
 * Transaction participant interface.
 * @author Jim Voris
 */
public interface TransactionParticipantInterface {

    /** A high priority participant. */
    int HIGH_PRIORITY = 1;
    /** A don't care priority participant. */
    int DONT_CARE_PRIORITY = 2;
    /** A low priority participant. */
    int LOW_PRIORITY = 3;

    /**
     * Call back to commit any pending changes.
     * @param response link to the client.
     * @param date the datestamp of the transaction so all participants can use the same date.
     * @throws QVCSException if something goes wrong.
     */
    void commitPendingChanges(ServerResponseFactoryInterface response, Date date) throws QVCSException;

    /**
     * Get the priority of the participant. Higher priority participants are processed before lower priority participants.
     * @return the participants priority.
     */
    int getPriority();
}

redpajama_set_name: RedPajamaGithub


text:
using namespace std;
// GL Includes
#include <GL/glew.h>
#include <SOIL.h>

#include "Texture2D.h"
#include "Shader.h"

namespace genesis {

	// A static singleton ResourceManager class that hosts several
	// functions to load Textures and Shaders. Each loaded texture
	// and/or shader is also stored for future reference by string
	// handles. All functions and resources are static and no
	// public constructor is defined.
	class ResourceManager
	{
	public:
		ResourceManager();
		~ResourceManager();

		GLuint getCubemap();
		void loadCubemap(vector<const GLchar*>);
		GLuint getTexture();
		void loadTexture(GLchar*);

		// Resource storage
		static std::map<std::string, Shader> _shaders;
		static std::map<std::string, Texture2D> _textures;
		// Loads (and generates) a shader program from file loading vertex, fragment and perhaps shader source code.
		static Shader loadShader(const GLchar *vShaderPath, const GLchar *fShaderPath, std::string name);
		static Shader loadShader(const GLchar *vShaderPath, const GLchar *fShaderPath, const GLchar *gShaderPath, std::string name);
		static Shader loadShader(const GLchar *vShaderPath, const GLchar *fShaderPath, const GLchar *tcShaderPath, const GLchar *teShaderPath, std::string name);
		static Shader loadShader(const GLchar *cShaderPath, std::string name);
		// Retrieves a stored shader
		static Shader getShader(std::string name);
		// Loads (and generates) a texture from file
		static Texture2D loadTexture(const GLchar *file, GLboolean alpha, std::string name);
		// Retrieves a stored texture
		static Texture2D getTexture(std::string name);
	private:
		GLuint _cubemapID;
		GLuint _textureID;
		// Loads and generates a shader from file
		static Shader loadShaderFromFile(const GLchar *vShaderFile, const GLchar *fShaderFile);
		static Shader loadShaderFromFile(const GLchar *vShaderFile, const GLchar *fShaderFile, const GLchar *gShaderFile);
		static Shader loadShaderFromFile(const GLchar *vShaderFile, const GLchar *fShaderFile, const GLchar *tcShaderFile, const GLchar *teShaderFile);
		static Shader loadShaderFromFile(const GLchar *cShaderFile);
		// Loads a single texture from file
		static Texture2D loadTextureFromFile(const GLchar *file, GLboolean alpha);
	};

}


text:
<?php

namespace spec\Nsq;

use PhpSpec\ObjectBehavior;
use Prophecy\Argument;
use Nsq\NsqPool;
use Nsq\Socket\SocketInterface;
use Nsq\Message\MessageInterface;
use Nsq\Response;

class NsqPoolSpec extends ObjectBehavior
{
    function let(
        SocketInterface $conn1,
        SocketInterface $conn2,
        MessageInterface $message,
        Response $failed,
        Response $success
    ) {
        $conn1->__toString()->willReturn('conn1');
        $conn2->__toString()->willReturn('conn2');
        $this->beConstructedWith($conn1, $conn2);

        $failed->isOk()->willReturn(false);
        $failed->code()->willReturn('E_FAILED');

        $success->isOk()->willReturn(true);
        $success->code()->willReturn('OK');
    }

    function it_is_initializable()
    {
        $this->shouldHaveType('Nsq\NsqPool');
    }

    function it_should_publish_message_to_all_connections($conn1, $conn2, $message, $success)
    {
        $topic = 'topic';
        $conn1->publish($topic, $message)->shouldBeCalled()->willReturn($success);
        $conn2->publish($topic, $message)->shouldBeCalled()->willReturn($success);

        $this->publish($topic, $message, NsqPool::NSQ_ALL);
    }

    function it_should_fail_if_not_all_messages_are_published($conn1, $conn2, $message, $success, $failed)
    {
        $topic = 'topic';
        $conn1->publish($topic, $message)->shouldBeCalled()->willReturn($success);
        $conn2->publish($topic, $message)->shouldBeCalled()->willReturn($failed);

        $this->shouldThrow('Nsq\Exception\PubException')->duringPublish($topic, $message, NsqPool::NSQ_ALL);
    }

    function it_should_allow_one_node_to_fail_by_default($conn1, $conn2, $message, $success, $failed)
    {
        $topic = 'topic';
        $conn1->publish($topic, $message)->shouldBeCalled()->willReturn($success);
        $conn2->publish($topic, $message)->shouldBeCalled()->willReturn($failed);

        $this->publish($topic, $message);
    }

    function it_should_not_allow_both_nodes_to_fail_by_default($conn1, $conn2, $message, $failed)
    {
        $topic = 'topic';
        $conn1->publish($topic, $message)->shouldBeCalled()->willReturn($failed);
        $conn2->publish($topic, $message)->shouldBeCalled()->willReturn($failed);

        $this->shouldThrow('Nsq\Exception\PubException')->duringPublish($topic, $message);
    }

    function it_should_publish_to_only_one_node($conn1, $conn2, $message, $success)
    {
        $topic = 'topic';
        $conn1->publish($topic, $message)->shouldBeCalled()->willReturn($success);
        $conn2->publish($topic, $message)->shouldNotBeCalled();

        $this->publish($topic, $message, NsqPool::NSQ_ONLY_ONE);
    }

    function it_should_fail_if_none_of_nodes_were_successful($conn1, $conn2, $message, $failed)
    {
        $topic = 'topic';
        $conn1->publish($topic, $message)->shouldBeCalled()->willReturn($failed);
        $conn2->publish($topic, $message)->shouldBeCalled()->willReturn($failed);

        $this->shouldThrow('Nsq\Exception\PubException')->duringPublish($topic, $message, NsqPool::NSQ_ONLY_ONE);
    }
}


text:
package otk

// A representation of the key/value pairs in an OpenToken.
type OpenToken map[string][]string

// Add the key/value pair to the token.  It appends to any existing values
// already associated with key.
func (token OpenToken) Add(key, value string) {
	token[key] = append(token[key], value)
}

// Delete the values associated with key.
func (token OpenToken) Del(key string) {
	delete(token, key)
}

// Get the first value associated with the given key.  If there are no values
// associated with the key, Get returns "".  To access multiple values of a
// key, access the map directly.
func (token OpenToken) Get(key string) string {
	if values := token[key]; len(values) > 0 {
		return values[0]
	}
	return ""
}

// Set the entries associated with key to the single element value.  It
// replaces any existing values associated with key.
func (token OpenToken) Set(key, value string) {
	token[key] = []string{value}
}


text:
; (function ()
{
    $.strict = true;

    // Allow stand-alone usage
    // (so we don't need to load the main library if we only need unit testing)
    if (typeof this.Lifter !== 'function')
        this.Lifter = function () { };

    var _funcNameRegex = /function (.{1,})\(/;

    /** @private Gets type name for the specified obj. */
    function _getTypeName(obj)
    {
        var results = (_funcNameRegex).exec(obj.constructor.toString());
        return (results && results.length > 1) ? results[1] : "";
    };

    /** @private Formats a string. */
    function _formatString()
    {
        var args = Array.prototype.slice.call(arguments);
        var formatted = args.shift().toString();

        for (arg in args)
            formatted = formatted.replace("{" + arg + "}", args[arg]);

        return formatted;
    };

    /**
     * @private
     * Deep compares two objects.
     * Source: http://stackoverflow.com/questions/1068834/object-comparison-in-javascript
     */
    function _deepCompare()
    {
        var leftChain, rightChain;

        function compare2Objects(x, y)
        {
            var p;

            // remember that NaN === NaN returns false
            // and isNaN(undefined) returns true
            if (isNaN(x) && isNaN(y) && typeof x === 'number' && typeof y === 'number')
                return true;

            // Compare primitives and functions.
            // Check if both arguments link to the same object.
            // Especially useful on step when comparing prototypes
            if (x === y)
                return true;

            // Works in case when functions are created in constructor.
            // Comparing dates is a common scenario. Another built-ins?
            // We can even handle functions passed across iframes
            if ((typeof x === 'function' && typeof y === 'function') ||
               (x instanceof Date && y instanceof Date) ||
               (x instanceof RegExp && y instanceof RegExp) ||
               (x instanceof String && y instanceof String) ||
               (x instanceof Number && y instanceof Number))
            {
                return x.toString() === y.toString();
            }

            // At last checking prototypes as good a we can
            if (!(x instanceof Object && y instanceof Object))
                return false;

            if (x.isPrototypeOf(y) || y.isPrototypeOf(x))
                return false;

            if (x.constructor !== y.constructor)
                return false;

            if (x.prototype !== y.prototype)
                return false;

            // check for infinitive linking loops
            if (leftChain.indexOf(x) > -1 || rightChain.indexOf(y) > -1)
            {
                return false;
            }

            // Quick checking of one object beeing a subset of another.
            // todo: cache the structure of arguments[0] for performance
            for (p in y)
            {
                if (y.hasOwnProperty(p) !== x.hasOwnProperty(p))
                {
                    return false;
                }
                else if (typeof y[p] !== typeof x[p])
                {
                    return false;
                }
            }

            for (p in x)
            {
                if (y.hasOwnProperty(p) !== x.hasOwnProperty(p))
                {
                    return false;
                }
                else if (typeof y[p] !== typeof x[p])
                {
                    return false;
                }

                switch (typeof (x[p]))
                {
                    case 'object':
                    case 'function':

                        leftChain.push(x);
                        rightChain.push(y);

                        if (!compare2Objects(x[p], y[p]))
                            return false;

                        leftChain.pop();
                        rightChain.pop();
                        break;

                    default:
                        if (x[p] !== y[p])
                            return false;
                        break;
                }
            }

            return true;
        }

        if (arguments.length < 1)
        {
            return true; //Die silently? Don't know how to handle such case, please help...
            // throw "Need two or more arguments to compare";
        }

        for (var i = 1, l = arguments.length; i < l; i++)
        {
            leftChain = []; //todo: this can be cached
            rightChain = [];

            if (!compare2Objects(arguments[0], arguments[i]))
                return false;
        }

        return true;
    };

    /**
     * @private
     * Gets object own enumerable properties.
     * Sources: QUnit source and
     * http://stackoverflow.com/questions/7306669/how-to-get-all-properties-values-of-a-javascript-object-without-knowing-the-key
     */
    function _objectValues(obj)
    {
        var key, val, result = obj instanceof Array ? [] : {};

        for (key in obj)
        {
            if (obj.hasOwnProperty(key))
            {
                val = obj[key];
                result[key] = (val === Object(val)) ? _objectValues(val) : val;
            }
        }

        return result;
    };

    /** @private Assert functions. */
    var _assert = function ()
    {
        var context = this;

        return {
            /**
             * A boolean check, passes if the first argument is truthy.
             *
             * @param   {Expression|Function} state Expression or function being tested.
             * @param   {String} message A short description of the assertion.
             */
            ok: function (state, message)
            {
                context.run++;

                if (typeof state === 'function')
                    try { state = state.call(null); } catch (e) { state = false; }

                if (typeof message !== 'string' || !message.length)
                    throw new Error('Invalid assert message.');

                if (state)
                {
                    if (Lifter.test.verbose)
                        Lifter.test.print('PASS. ' + message);
                    context.passed++;
                }
                else
                {
                    Lifter.test.print('FAIL. ' + message);
                    context.failed++;
                }
            },

            /**
             * A boolean check, passes if the first argument is falsy.
             *
             * @param   {Expression|Function} state Expression or function being tested.
             * @param   {String} message A short description of the assertion.
             */
            fail: function (state, message)
            {
                if (typeof state === 'function')
                    try { state = state.call(null); } catch (e) { state = false; }

                this.ok(!state, message);
            },

            /**
             * A non-strict comparison, checking for equality.
             *
             * @param   {any} actual Object being tested.
             * @param   {any} expected Known comparison value.
             * @param   {String} message A short description of the assertion.
             */
            equal: function (actual, expected, message)
            {
                this.ok(actual == expected, message);
            },

            /**
             * A non-strict comparison, checking for inequality.
             *
             * @param   {any} actual Object being tested.
             * @param   {any} expected Known comparison value.
             * @param   {String} message A short description of the assertion.
             */
            notEqual: function (actual, expected, message)
            {
                this.ok(actual != expected, message);
            },

            /**
             * A strict comparison, checking for inequality.
             *
             * @param   {any} actual Object being tested.
             * @param   {any} expected Known comparison value.
             * @param   {String} message A short description of the assertion.
             */
            strictEqual: function (actual, expected, message)
            {
                this.ok(actual === expected, message);
            },

            /**
             * A strict comparison, checking for inequality.
             *
             * @param   {any} actual Object being tested.
             * @param   {any} expected Known comparison value.
             * @param   {String} message A short description of the assertion.
             */
            notStrictEqual: function (actual, expected, message)
            {
                this.ok(actual !== expected, message);
            },

            /**
             * Tests that the passed object is of the specified type.
             *
             * @param   {any} actual Object being tested.
             * @param   {any} expected Known comparison value.
             * @param   {String} message A short description of the assertion.
             */
            type: function (actual, expected, message)
            {
                message = message || 'Object is of type ' + expected;

                if (!actual)
                    this.ok(false, message);

                var objType = _getTypeName(actual);
                expected = (typeof expected === 'string') ? expected : _getTypeName(expected);
                this.ok(objType.toLowerCase() === expected.toLowerCase(), message);
            },

            /**
             * Test if a callback throws an exception, and optionally compare the thrown error.
             *
             * @param   {Function} state Function to execute.
             * @param   {String|RegExp|Function} [expected] Expected error.
             * @param   {String} [message] A short description of the assertion.
             */
            error: function (state)
            {
                // Parse args
                if (typeof state !== 'function')
                    throw new Error('Invalid assert function.');

                var expected,
                    message,
                    actual;

                if (arguments.length === 2)
                {
                    message = arguments[1];
                }
                else if (arguments.length === 3)
                {
                    expected = arguments[1];
                    message = arguments[2];
                }
                else
                {
                    expected = null;
                    message = 'throws an error';
                }

                // Assert
                try
                {
                    state.call(null);
                    this.ok(false, message);
                }
                catch (e)
                {
                    actual = e;
                }

                // Evaluate error
                if (actual)
                {
                    if (!expected || actual instanceof expected)
                    {
                        this.ok(true, message);
                    }
                    else if (expected instanceof Error)
                    {
                        this.ok(function ()
                        {
                            return actual instanceof Error &&
                                   actual.name === expected.name &&
                                   actual.message === expected.message;
                        }, message);
                    }
                    else if (_getTypeName(expected) === 'regexp')
                    {
                        this.ok(expected.test(actual.toString()), message);
                    }
                    else if (typeof expected === 'function')
                    {
                        this.ok(expected.call({}, actual), message)
                    }
                    else
                    {
                        this.ok(false, message);
                    }
                }
                else
                {
                    this.ok(false, message);
                }
            },

            /**
             * A strict deep comparison, checking for equality.
             *
             * @param   {any} actual Object being tested.
             * @param   {any} expected Known comparison value.
             * @param   {String} message A short description of the assertion.
             */
            deepEqual: function (actual, expected, message)
            {
                this.ok(_deepCompare(actual, expected), message);
            },

            /**
             * A strict deep comparison, checking for inequality.
             *
             * @param   {any} actual Object being tested.
             * @param   {any} expected Known comparison value.
             * @param   {String} message A short description of the assertion.
             */
            notDeepEqual: function (actual, expected, message)
            {
                this.ok(!_deepCompare(actual, expected), message);
            },

            /**
             * A strict comparison of an object's own properties, checking for equality.
             *
             * @param   {any} actual Object being tested.
             * @param   {any} expected Known comparison value.
             * @param   {String} message A short description of the assertion.
             */
            propEqual: function (actual, expected, message)
            {
                this.ok(function ()
                {
                    actual = _objectValues(actual);
                    expected = _objectValues(expected);
                    return _deepCompare(actual, expected);
                }, message);
            },

            /**
             * A strict comparison of an object's own properties, checking for inequality.
             *
             * @param   {any} actual Object being tested.
             * @param   {any} expected Known comparison value.
             * @param   {String} message A short description of the assertion.
             */
            notPropEqual: function (actual, expected, message)
            {
                this.ok(function ()
                {
                    actual = _objectValues(actual);
                    expected = _objectValues(expected);
                    return !_deepCompare(actual, expected);
                }, message);
            },
        }
    };

    /**
     * Runs an unit test.
     *
     * @param   {String} name Unit test name.
     * @param   {Function} test Unit test block.
     */
    Lifter.test = function (name, test)
    {
        if (typeof name !== 'string' || name.length === 0)
            throw new Error('Invalid test name.');

        if (typeof test !== 'function')
            throw new Error('Invalid test function.');

        var t = new Timer(),
            context = {
                run: 0,
                passed: 0,
                failed: 0,
            };

        // Run unit test
        try
        {
            t.start();
            test.call(null, _assert.call(context));
        }
        catch (e)
        {
            Lifter.test.print('Exception thrown during test: "{0}".', e.message);
        }
        finally
        {
            t.stop();
            Lifter.test.print(name + ' ({3}s, {0} passed, {1} failed, {2} total)', context.passed, context.failed, context.run, t.elapsedTime);
        }
    };

    /**
     * Whether verbose mode is on. Normally only fail messages will
     * be print to log. With this set to true everything will be printed.
     *
     * @property Lifter.test.verbose
     * @type Boolean
     * @default false
     */
    Lifter.test.verbose = false;

    /**
     * Prints the passed message to the console.
     *
     * @param   {String} message Message to print.
     * @param   {Any} args Substitution parameters.
     */
    Lifter.test.print = function ()
    {
        $.writeln(_formatString.apply(null, Array.prototype.slice.call(arguments)));
    };

    /**
     * A very precise timer, useful for profiling.
     *
     * @class Timer
     */
    var Timer = Lifter.Timer = function Timer()
    {
        $.hiresTimer;
        this.startTime = -1;
        this.endTime = -1;
        this.elapsedTime = -1;
    };

    /**
     * Starts the timer.
     */
    Timer.prototype.start = function ()
    {
        this.startTime = $.hiresTimer;
        return this;
    };

    /**
     * Stops the timer, optionally printing a log message.
     *
     * @param   {String} [message] Log message.
     */
    Timer.prototype.stop = function (message)
    {
        this.endTime = $.hiresTimer;
        this.elapsedTime = Math.max((this.endTime - this.startTime) / 1000000.0, 0.0);
        return this.print(message);
    };

    /**
     * Prints a log message along with elapsed time to the console.
     *
     * @param   {String} message Log message.
     */
    Timer.prototype.print = function (message)
    {
        if (typeof message === 'string' && message.length)
            $.writeln([message, this.elapsedTime].join(' '));
        return this;
    };

    /**
     * Profiles a function by executing it the specified number of times.
     *
     * @param   {Function} fn Function to profile.
     * @param   {Number} times Number of executions.
     * @param   {Object} [context] Function context.
     */
    Timer.prototype.repeat = function (fn, times /*, context */)
    {
        if (typeof fn !== 'function')
            throw new TypeError('"fn" must be a function.');

        if (typeof times !== 'number')
            throw new TypeError('"times" must be a number.');

        times = Math.abs(Math.ceil(times));
        var i = 0,
            context = arguments.length >= 3 ? arguments[2] : void 0;;

        try
        {
            this.start();
            for (; i < times; i++)
                fn.call(context);
        }
        catch (e)
        {
            throw e;
        }
        finally
        {
            this.stop();
            this.elapsedTime /= times;
        }

        return this;
    };

}).call($.global);


text:
from pgsqlutils.orm import BaseModel
from pgsqlutils.types import Password

from sqlalchemy import Column, ForeignKey, Integer, String
from sqlalchemy.orm import relationship

class User(BaseModel):
    __tablename__ = 'users'
    username = Column(String(64))
    password = Column(Password)
    email = Column(String(64))

class Artist(BaseModel):
    __tablename__ = 'artist'
    name = Column(String(256))
    description = Column(String(256))
    albums = relationship('Album', backref='artist')
    genre_id = Column(Integer, ForeignKey('genre.id'))

class Album(BaseModel):
    __tablename__ = 'album'
    name = Column(String(256))
    description = Column(String(256))
    artist_id = Column(Integer, ForeignKey('artist.id'))

class Genre(BaseModel):
    __tablename__ = 'genre'
    name = Column(String(256))
    description = Column(String(256))


text:
#include "QueryTextSerialize.h"
#include <apiai/query/request/QueryText.h>

#include <iostream>

using namespace std;
using namespace ai::query::request;

QueryTextSerialize::QueryTextSerialize(){}

cJSON *QueryTextSerialize::getQuery_element() const
{
    return query_element;
}

void QueryTextSerialize::visit(const QueryOne& ref)
{
    auto cstring = ref.query.c_str();

    query_element = cJSON_CreateString(cstring);
}

void QueryTextSerialize::visit(const QueryMultipleStrings& ref)
{
    auto elements = ref.query;

    auto array = cJSON_CreateArray();

    for (auto& element: elements) {
        auto json_element = cJSON_CreateString(element.c_str());
        cJSON_AddItemToArray(array, json_element);
    }

    query_element = array;

    cout << "!!!!!!" << endl;
}

void QueryTextSerialize::visit(const QueryMultipleVariants& ref)
{
    auto elements = ref.query;

    auto array = cJSON_CreateArray();

    for (auto& element: elements) {
        auto text_json_element = cJSON_CreateString(element.getText().c_str());
        auto confidence_json_element = cJSON_CreateNumber(element.getConfidence());

        auto json_element = cJSON_CreateObject();
        cJSON_AddItemToObject(json_element, "text", text_json_element);
        cJSON_AddItemToObject(json_element, "confidence", confidence_json_element);

        cJSON_AddItemToArray(array, json_element);
    }

    query_element = array;

    cout << "!!!!!!" << endl;
}


text:
//  (C) Copyright Edward Diener 2015
//  Use, modification and distribution are subject to the Boost Software License,
//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
//  http://www.boost.org/LICENSE_1_0.txt).

#if !defined(BOOST_VMD_SEQ_TO_TUPLE_HPP)
#define BOOST_VMD_SEQ_TO_TUPLE_HPP

#include <boost/vmd/detail/setup.hpp>

#if BOOST_PP_VARIADICS

#include <boost/preprocessor/control/iif.hpp>
#include <boost/preprocessor/seq/to_tuple.hpp>
#include <boost/vmd/empty.hpp>
#include <boost/vmd/is_empty.hpp>

/*

  The succeeding comments in this file are in doxygen format.

*/

/** \file
*/

/** \def BOOST_VMD_SEQ_TO_TUPLE(seq)

    \brief converts a seq to a tuple.

    seq = seq to be converted.

    If the seq is an empty seq it is converted to an empty tuple.
    Otherwise the seq is converted to a tuple with the same number of elements as the seq.
*/

#define BOOST_VMD_SEQ_TO_TUPLE(seq) \
    BOOST_PP_IIF \
        ( \
        BOOST_VMD_IS_EMPTY(seq), \
        BOOST_VMD_EMPTY, \
        BOOST_PP_SEQ_TO_TUPLE \
        ) \
    (seq) \
/**/

#endif /* BOOST_PP_VARIADICS */
#endif /* BOOST_VMD_SEQ_TO_TUPLE_HPP */


text:
<?php

use yii\helpers\Html;
use yii\grid\GridView;
use \yii\widgets\ActiveForm;
/**
 * @var yii\web\View $this
 */

$this->title = Yii::t('modules/module', 'Search Modules');
$this->params['breadcrumbs'][] = $this->title;
?>

<?php echo Html::encode($this->title) ?>

    <?php $form = ActiveForm::begin(['action' => ['install']]); ?>
    <?php echo GridView::widget([
            'dataProvider' => $dataProvider,
            'filterModel' => $searchModel,
            'columns' => [
                'name',
                [
                    'attribute' => 'description',
                    'filter'    => false,
                ],
                [
                    'attribute' => 'downloads',
                    'filter'    => false,
                ],
                [
                    'class' => \yii\grid\CheckboxColumn::className(),
                    'name'  => 'install',
                    'header' => Yii::t('modules/module', 'Install'),
                    'checkboxOptions'   => function ($model, $key, $index, $column) {
                        $options = ["value" => $model["name"]];
                        return $model->isInstalled
                            ? array_merge($options, ['disabled' => true, 'checked' => 'checked'])
                            : $options;
                    }
                ],
            ],
        ]); ?>
    <?= Html::submitButton(Yii::t('modules/module', "Save"), ['class' => 'btn btn-primary']); ?>

    <?php ActiveForm::end(); ?>


text:
using System;
using System.Collections.Generic;

namespace Zirpl.FluentReflection.Queries
{
    internal sealed class CacheService
    {
        private static IDictionary<String, Object> _cache;

        private static IDictionary<String, Object> Cache
        {
            get
            {
                if (_cache == null)
                {
                    System.Threading.Interlocked.CompareExchange(ref _cache, new Dictionary<String, Object>(), null);
                }
                return _cache;
            }
        }

        internal static void ClearCache()
        {
            Cache.Clear();
        }

        internal void Set(String key, Object obj)
        {
            Cache[key] = obj;
        }
        internal Object Get(String key)
        {
            Object value = null;
            Cache.TryGetValue(key, out value);
            return value;
        }
    }
}


text:
package org.ebookdroid.common.settings.base;

import org.ebookdroid.EBookDroidApp;

import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

public class BooleanPreferenceDefinition extends BasePreferenceDefinition {

    private final Boolean defValue;

    public BooleanPreferenceDefinition(final int keyRes, final int defValRef) {
        super(keyRes);
        defValue = Boolean.parseBoolean(EBookDroidApp.context.getString(defValRef));
    }

    public boolean getPreferenceValue(final SharedPreferences prefs) {
        return getPreferenceValue(prefs, defValue);
    }

    public boolean getPreferenceValue(final SharedPreferences prefs, boolean defValue) {
        if (!prefs.contains(key)) {
            prefs.edit().putBoolean(key, defValue).commit();
        }
        return prefs.getBoolean(key, defValue);
    }

    public void setPreferenceValue(final Editor edit, final boolean value) {
        edit.putBoolean(key, value);
    }

}


text:
package de.javagl.nd.distance.tuples.i;

import static org.junit.Assert.assertEquals;

import org.junit.Test;

import de.javagl.nd.distance.DistanceFunction;
import de.javagl.nd.distance.tuples.i.IntTupleDistanceFunctions;
import de.javagl.nd.tuples.i.IntTuple;
import de.javagl.nd.tuples.i.IntTuples;

@SuppressWarnings("javadoc")
public class TestIntTupleDistanceFunctions
{
    private static final double EPSILON = 1e-8;

    @Test
    public void testChebyshev()
    {
        DistanceFunction<IntTuple> distanceFunction =
            IntTupleDistanceFunctions.chebyshev();

        double actual = distanceFunction.distance(
            IntTuples.of(1,2,3), IntTuples.of(2,4,6));
        double expected = 3.0;
        assertEquals(expected, actual, EPSILON);
    }

    @Test
    public void testEuclidean()
    {
        DistanceFunction<IntTuple> distanceFunction =
            IntTupleDistanceFunctions.euclidean();

        double actual = distanceFunction.distance(
            IntTuples.of(1,2,3), IntTuples.of(2,4,6));
        double expected = Math.sqrt(14.0);
        assertEquals(expected, actual, EPSILON);
    }

    @Test
    public void testEuclideanSquared()
    {
        DistanceFunction<IntTuple> distanceFunction =
            IntTupleDistanceFunctions.euclideanSquared();

        double actual = distanceFunction.distance(
            IntTuples.of(1,2,3), IntTuples.of(2,4,6));
        double expected = 14.0;
        assertEquals(expected, actual, EPSILON);
    }

    @Test
    public void testManhattan()
    {
        DistanceFunction<IntTuple> distanceFunction =
            IntTupleDistanceFunctions.manhattan();

        double actual = distanceFunction.distance(
            IntTuples.of(1,2,3), IntTuples.of(2,4,6));
        double expected = 6.0;
        assertEquals(expected, actual, EPSILON);
    }

    @Test
    public void testWrappedChebyshev()
    {
        DistanceFunction<IntTuple> distanceFunction =
            IntTupleDistanceFunctions.wrappedChebyshev(
                IntTuples.of(2,2,2));

        double actual = distanceFunction.distance(
            IntTuples.of(1,2,3), IntTuples.of(2,4,6));
        double expected = 1.0;
        assertEquals(expected, actual, EPSILON);
    }

    @Test
    public void testWrappedEuclidean()
    {
        DistanceFunction<IntTuple> distanceFunction =
            IntTupleDistanceFunctions.wrappedEuclidean(
                IntTuples.of(2,2,2));

        double actual = distanceFunction.distance(
            IntTuples.of(1,2,3), IntTuples.of(2,4,6));
        double expected = Math.sqrt(2.0);
        assertEquals(expected, actual, EPSILON);
    }

    @Test
    public void testWrappedEuclideanSquared()
    {
        DistanceFunction<IntTuple> distanceFunction =
            IntTupleDistanceFunctions.wrappedEuclideanSquared(
                IntTuples.of(2,2,2));

        double actual = distanceFunction.distance(
            IntTuples.of(1,2,3), IntTuples.of(2,4,6));
        double expected = 2.0;
        assertEquals(expected, actual, EPSILON);
    }

    @Test
    public void testWrappedManhattan()
    {
        DistanceFunction<IntTuple> distanceFunction =
            IntTupleDistanceFunctions.wrappedManhattan(
                IntTuples.of(2,2,2));

        double actual = distanceFunction.distance(
            IntTuples.of(1,2,3), IntTuples.of(2,4,6));
        double expected = 2.0;
        assertEquals(expected, actual, EPSILON);
    }

}


text:
define(["require", "exports"], function (require, exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    var _emptyObject = {};
    var _dictionary = {};
    function _normalizeArg(val) {
        if (!val) {
            return _emptyObject;
        }
        else if (typeof val === 'object') {
            return val;
        }
        else if (!_dictionary[val]) {
            _dictionary[val] = {};
        }
        return _dictionary[val];
    }
    function memoize(cb) {
        var cache;
        // tslint:disable-next-line:no-function-expression
        return function memoizedFunction() {
            var args = [];
            for (var _i = 0; _i < arguments.length; _i++) {
                args[_i] = arguments[_i];
            }
            var retVal;
            if (args.length === 0) {
                if (cache === undefined) {
                    cache = cb.apply(void 0, args);
                }
                retVal = cache;
            }
            else {
                if (!cache) {
                    cache = new WeakMap();
                }
                var currentCache = cache;
                for (var i = 0; i < args.length - 1; i++) {
                    var arg = _normalizeArg(args[i]);
                    if (!arg) {
                        arg = _emptyObject;
                    }
                    if (cache.has(arg)) {
                        currentCache = cache.get(arg);
                    }
                    else {
                        currentCache = new WeakMap();
                        cache.set(arg, currentCache);
                    }
                }
                var lastArg = _normalizeArg(args[args.length - 1]);
                if (currentCache.has(lastArg)) {
                    retVal = currentCache.get(lastArg);
                }
                else {
                    var value = cb.apply(void 0, args);
                    currentCache.set(lastArg, value);
                    retVal = value;
                }
            }
            return retVal;
        };
    }
    exports.memoize = memoize;
});

//# sourceMappingURL=memoize.js.map


text:
{{>head}}

    {{#navLinks}}

{{name}}

    {{/navLinks}}

    {{>sidebar_for_library}}

    {{#clazz}}
    {{>documentation}}
    {{/clazz}}

    {{#clazz.hasModifiers}}

        {{#clazz.hasAnnotations}}

Annotations

            {{#clazz.annotations}}

{{{.}}}

            {{/clazz.annotations}}

        {{/clazz.hasAnnotations}}

        {{#clazz.hasSupertype}}

Extends

{{{linkedObjectType}}}

            {{#clazz.superChainReversed}}

{{{linkedName}}}

            {{/clazz.superChainReversed}}

{{{name}}}

        {{/clazz.hasSupertype}}

        {{#clazz.hasInterfaces}}

Implements

                    {{#clazz.interfaces}}

{{{linkedName}}}

                    {{/clazz.interfaces}}

        {{/clazz.hasInterfaces}}

        {{#clazz.hasMixins}}

Mixes-in

            {{#clazz.mixins}}

{{{linkedName}}}

            {{/clazz.mixins}}

        {{/clazz.hasMixins}}

        {{#clazz.hasImplementors}}

Implemented by

            {{#clazz.implementors}}

{{{linkedName}}}

            {{/clazz.implementors}}

        {{/clazz.hasImplementors}}

    {{/clazz.hasModifiers}}

    {{#clazz.hasConstants}}

Constants

            {{#clazz.constants}}
            {{>constant}}
            {{/clazz.constants}}

    {{/clazz.hasConstants}}

    {{#clazz.hasStaticProperties}}

Static Properties

            {{#clazz.staticProperties}}
            {{>property}}
            {{/clazz.staticProperties}}

    {{/clazz.hasStaticProperties}}

    {{#clazz.hasStaticMethods}}

Static Methods

            {{#clazz.staticMethods}}
            {{>callable}}
            {{/clazz.staticMethods}}

    {{/clazz.hasStaticMethods}}

    {{#clazz.hasProperties}}

Properties

            {{#clazz.allInstanceProperties}}
            {{>property}}
            {{/clazz.allInstanceProperties}}

    {{/clazz.hasProperties}}

    {{#clazz.hasConstructors}}

Constructors

            {{#clazz.constructors}}

                {{{linkedName}}}({{{ linkedParams }}})

                {{#isConst}}

                    const

                {{/isConst}}
                {{{ oneLineDoc }}}

            {{/clazz.constructors}}

      {{/clazz.hasConstructors}}

      {{#clazz.hasOperators}}

Operators

              {{#clazz.allOperators}}
              {{>callable}}
              {{/clazz.allOperators}}

      {{/clazz.hasOperators}}

      {{#clazz.hasMethods}}

Methods

              {{#clazz.allInstanceMethods}}
              {{>callable}}
              {{/clazz.allInstanceMethods}}

      {{/clazz.hasMethods}}

{{self.name}}

    {{>sidebar_for_class}}

{{>footer}}


text:
package com.sjc.cc.entity;

import java.io.Serializable;

public class MenuPO implements Comparable<MenuPO>, Serializable {
    /**
	 *
	 */
    private static final long serialVersionUID = -8831599618624072136L;
    private Long privilegeId;// 权限名称
    private String privilegeName;// 权限url
    private String privilegeUrl;
    private Long pid;
    private Long porder;

    public Long getPorder() {
        return porder;
    }

    public void setPorder(Long porder) {
        this.porder = porder;
    }

    public Long getPrivilegeId() {
        return privilegeId;
    }

    public void setPrivilegeId(Long privilegeId) {
        this.privilegeId = privilegeId;
    }

    public String getPrivilegeName() {
        return privilegeName;
    }

    public void setPrivilegeName(String privilegeName) {
        this.privilegeName = privilegeName;
    }

    public String getPrivilegeUrl() {
        return privilegeUrl;
    }

    public void setPrivilegeUrl(String privilegeUrl) {
        this.privilegeUrl = privilegeUrl;
    }

    public Long getPid() {
        return pid;
    }

    public void setPid(Long pid) {
        this.pid = pid;
    }

    @Override
    public int compareTo(MenuPO menuPO) {

        if (this.porder.longValue() > menuPO.porder.longValue()) {
            return 1;
        }
        else {
            return -1;
        }
    }

}


text:
module LearnTest
  module Dependencies
    class Protractor < LearnTest::Dependency
      def missing?
        `which protractor`.empty?
      end

      def install
        print_installing('protractor')
        run_install('npm install -g protractor')
        puts 'Updating webdriver-manager...'.green
        run_install('webdriver-manager update')
      end
    end
  end
end


text:
#ifndef TextEncoding_h
#define TextEncoding_h

#include "TextCodec.h"
#include <wtf/Forward.h>

namespace WebCore {

    class TextEncoding {
    public:
        TextEncoding() : m_name(0) { }
        TextEncoding(const char* name);
        WEBCORE_EXPORT TextEncoding(const String& name);

        bool isValid() const { return m_name; }
        const char* name() const { return m_name; }
        const char* domName() const; // name exposed via DOM
        bool usesVisualOrdering() const;
        bool isJapanese() const;

        PassRefPtr<StringImpl> displayString(PassRefPtr<StringImpl> str) const
        {
            if (m_backslashAsCurrencySymbol == '\\' || !str)
                return str;
            return str->replace('\\', m_backslashAsCurrencySymbol);
        }
        template <typename CharacterType>
        void displayBuffer(CharacterType* characters, unsigned len) const
        {
            if (m_backslashAsCurrencySymbol == '\\')
                return;
            for (unsigned i = 0; i < len; ++i) {
                if (characters[i] == '\\')
                    characters[i] = m_backslashAsCurrencySymbol;
            }
        }

        const TextEncoding& closestByteBasedEquivalent() const;
        const TextEncoding& encodingForFormSubmission() const;

        String decode(const char* str, size_t length) const
        {
            bool ignored;
            return decode(str, length, false, ignored);
        }
        WEBCORE_EXPORT String decode(const char*, size_t length, bool stopOnError, bool& sawError) const;
        CString encode(StringView, UnencodableHandling) const;

        UChar backslashAsCurrencySymbol() const;
        bool isByteBasedEncoding() const { return !isNonByteBasedEncoding(); }

    private:
        bool isNonByteBasedEncoding() const;
        bool isUTF7Encoding() const;

        const char* m_name;
        UChar m_backslashAsCurrencySymbol;
    };

    inline bool operator==(const TextEncoding& a, const TextEncoding& b) { return a.name() == b.name(); }
    inline bool operator!=(const TextEncoding& a, const TextEncoding& b) { return a.name() != b.name(); }

    const TextEncoding& ASCIIEncoding();
    const TextEncoding& Latin1Encoding();
    const TextEncoding& UTF16BigEndianEncoding();
    const TextEncoding& UTF16LittleEndianEncoding();
    const TextEncoding& UTF32BigEndianEncoding();
    const TextEncoding& UTF32LittleEndianEncoding();
    WEBCORE_EXPORT const TextEncoding& UTF8Encoding();
    WEBCORE_EXPORT const TextEncoding& WindowsLatin1Encoding();

} // namespace WebCore

#endif // TextEncoding_h


text:
package com.mmnaseri.cs.clrs.ch21.s2;

import java.util.UUID;

/**
 * @author Mohammad Milad Naseri (mmnaseri@programmer.net)
 * @since 1.0 (8/2/15, 3:18 AM)
 */
public class LinkedElementContainer<E extends LinkedElement<E, I, ?>, I> {

  private UUID uuid;
  private E head;
  private E tail;

  public UUID getUuid() {
    return uuid;
  }

  public void setUuid(UUID uuid) {
    this.uuid = uuid;
  }

  public E getHead() {
    return head;
  }

  public void setHead(E head) {
    this.head = head;
  }

  public E getTail() {
    return tail;
  }

  public void setTail(E tail) {
    this.tail = tail;
  }

  public void unlink() {
    uuid = null;
    head = null;
    tail = null;
  }
}


text:
try:
    from Queue import Queue
    range = xrange
except ImportError:   # Python 3
    from queue import Queue

from graphtheory.structures.edges import Edge

class HalinNodeColoring:
    """Halin graphs node coloring."""

    def __init__(self, graph, outer):
        """The algorithm initialization.

        Parameters
        ----------
        graph : undirected graph
        outer : a set of outer nodes
        color : dict with nodes (values are colors)
        """
        if graph.is_directed():
            raise ValueError("the graph is directed")
        self.graph = graph
        self.outer = outer   # nodes from the outer face
        self.color = dict((node, None) for node in self.graph.iternodes())
        self.outer_next = dict()   # lista cykliczna
        self.outer_prev = dict()   # lista cykliczna
        self.parent = dict()   # inner tree

    def run(self):
        """Executable pseudocode."""
        self._find_parent()   # tree coloring
        self._find_cycle()
        self._cycle_coloring()

    def _find_parent(self):   # O(V) time
        """Find the inner tree (dict) using modified BFS."""
        # Robimy BFS z wierzcholka wewnetrznego.
        for source in self.graph.iternodes():
            if source not in self.outer:
                self._visit(source)
                break

    def _visit(self, node):
        """Explore the connected component."""
        Q = Queue()
        self.parent[node] = None   # before Q.put
        self.color[node] = 0   # before Q.put
        Q.put(node)
        while not Q.empty():
            source = Q.get()
            for target in self.graph.iteradjacent(source):
                #if target not in self.parent:
                if self.color[target] is None:
                    self.parent[target] = source   # before Q.put
                    self.color[target] = (self.color[source] + 1) % 2  # before Q.put
                    if target not in self.outer: # nie wychodzimy poza outer
                        Q.put(target)

    def _find_cycle(self):
        """Order nodes from the outer cycle."""
        # Tutaj nie korzystam z drzewa parent!
        # Ustalam dwa pierwsze wierzcholki z cyklu zewnetrzego.
        node1 = self.outer.pop()   # pobieramy dowolny
        self.outer.add(node1)   # przywracamy
        for node2 in self.graph.iteradjacent(node1):
            if node2 in self.outer:
                break   # mamy drugi na brzegu
        # Poczatek budowy listy cyklicznej podwojnie powiazanej.
        self.outer_next[node1] = node2
        self.outer_prev[node1] = node2
        self.outer_next[node2] = node1
        self.outer_prev[node2] = node1
        # Dodawanie kolejnych wierzcholkow do listy cyklicznej.
        for step in range(len(self.outer)-2):
            for node3 in self.graph.iteradjacent(node2):
                if node3 in self.outer:
                    if node3 == self.outer_prev[node2]:
                        continue   # stad przyszlismy
                    else:
                        node4 = node3   # nastepny do dodania
            self.outer_next[node4] = node1
            self.outer_prev[node4] = node2
            self.outer_prev[node1] = node4
            self.outer_next[node2] = node4
            node2 = node4

    def _cycle_coloring(self):
        """Node coloring of the outer cycle."""
        # Drzewo juz jest pokolorowane.
        node1 = self.outer.pop()   # pobieramy dowolny
        self.outer.add(node1)   # przywracamy
        # Jakie kolory sa na cyklu zewnetrznym?
        outer_color_set = set(self.color[node] for node in self.outer)
        # CASE 1. Even cycle.
        if len(self.outer) % 2 == 0:
            current = node1
            for i in range(len(self.outer)):
                if i % 2 == 1:
                    self.color[current] = 2
                current = self.outer_next[current]
        # CASE 2. Wheel graph with odd cycle.
        # Caly cykl ma kolor 1, hub ma kolor 0.
        elif self.graph.v() == len(self.outer) + 1:
            assert len(self.outer) % 2 == 1
            # Testing colors.
            for node in self.graph.iternodes():
                if node in self.outer:
                    assert self.color[node] == 1
                else:
                    assert self.color[node] == 0
            current = node1
            self.color[current] = 3
            current = self.outer_next[current]
            for i in range(1, len(self.outer)):
                if i % 2 == 1:
                    self.color[current] = 2
                current = self.outer_next[current]
        # CASE 3. Odd cycle with two colors.
        elif len(outer_color_set) == 2:
            # Szukam w cyklu sasiadow z kolorami 0 i 1.
            assert len(self.outer) % 2 == 1
            current = node1
            while True:
                if self.color[current] != self.color[self.outer_prev[current]]:
                    current = self.outer_next[current]
                    break
                current = self.outer_next[current]
            for i in range(len(self.outer)-2):
                if i % 2 == 0:
                    self.color[current] = 2
                current = self.outer_next[current]
        # CASE 4. Odd cycle with one color.
        else:
            assert len(self.outer) % 2 == 1
            c1 = outer_color_set.pop()   # cycle color (0 or 1)
            c2 = (c1 + 1) % 2
            c3 = 2
            # Szukam nieparzystego wachlarza lub pseudowachlarza.
            # Szukam poczatku (pseudo)wachlarza.
            current = node1
            while True:
                start = self.outer_next[current]
                while self.parent[start] == self.parent[current]:
                    start = self.outer_next[start]
                # Szukam konca (pseudo)wachlarza.
                finish = start   # moze byc tylko jedna galazka, nie wachlarz
                counter = 1   # obliczam szerokosc wachlarza (liczba wierzcholkow na brzegu)
                while self.parent[self.outer_next[finish]] == self.parent[start]:
                    finish = self.outer_next[finish]
                    counter += 1
                current = finish   # ustawienie dla nastepnej petli while True
                # Sprawdzam czy nieparzysty (pseudo)wachlarz.
                if counter % 2 == 0:
                    #print "even (pseudo)fan"
                    continue
                else:
                    #print "odd (pseudo)fan"
                    break
            # Upewniam sie, ze to wachlarz.
            #if self.graph.degree(self.parent[start]) != (counter + 1):
            #    print "pseudofan detected"
            #else:
            #    print "fan detected"
            # Przekolorowanie wachlarza [c2, c1, ..., c1, c2].
            self.color[self.parent[start]] = c3
            for i in range(counter):
                if i % 2 == 0:
                    self.color[start] = c2
                else:
                    self.color[start] = c1
                start = self.outer_next[start]
            # Przekolorowanie poza wachlarzem [c1, (c3|c2)].
            assert (len(self.outer)-counter) % 2 == 0
            for i in range(len(self.outer)-counter):
                if i % 2 == 1: # co drugi przekolorujemy
                    if self.color[self.parent[start]] == c2:
                        self.color[start] = c3
                    else:
                        self.color[start] = c2
                start = self.outer_next[start]

# EOF


text:
//Licensed under the MIT License.
//Include the license text thingy if you're gonna use this.
//Copyright (c) 2016 Chansol Yang

package com.cosmicsubspace.nerdyaudio.audio;

import android.content.Context;

import com.ringdroid.soundfile.SoundFile;
import com.cosmicsubspace.nerdyaudio.helper.ErrorLogger;
import com.cosmicsubspace.nerdyaudio.helper.Log2;
import com.cosmicsubspace.nerdyaudio.interfaces.BufferFeedListener;
import com.cosmicsubspace.nerdyaudio.interfaces.SampleProgressListener;
import com.cosmicsubspace.nerdyaudio.interfaces.WaveformReturnListener;

import java.io.File;
import java.util.ArrayList;

public class WaveformCalculator extends Thread implements BufferFeedListener {
    public static final String LOG_TAG = "CS_AFN";

    File file;
    String filename;
    Context c;
    float[] data;
    ArrayList<Long> sumData = new ArrayList<Long>();
    float maxAmp = 0.0f;
    double divisionEvery;
    SampleProgressListener spl;
    WaveformReturnListener wrl;

    int sampleRate;
    int channels;
    double currentTimeInSeconds = 0;
    double timePerSample;
    int currentSample = 0;
    int currentBar = 0;

    public WaveformCalculator(String filename, double divisionEvery, Context ctxt) {
        super();
        this.filename = filename;
        this.file = new File(filename);
        this.divisionEvery = divisionEvery;
        this.c = ctxt;
    }

    public void setSampleProgressListener(SampleProgressListener spl) {
        this.spl = spl;
    }

    public void setWaveformReturnListener(WaveformReturnListener wrl) {
        this.wrl = wrl;
    }

    @Override
    public void run() {

        SoundFile sf = new SoundFile();
        try {
            sf.ReadFileMetaData(file);

            sampleRate = sf.getSampleRate();
            timePerSample = 1.0 / (double) sampleRate;
            channels = sf.getChannels();

            Log2.log(1, this, "Sample rate:" + sampleRate);
            Log2.log(1, this, "Channels:" + channels);

            sf.ReadFileWithCallback(file, this);
        } catch (Exception e) {
            Log2.log(e);
        }

        sf = null;

        data = new float[sumData.size()];
        int samplesPerBar = (int) (sampleRate * divisionEvery);
        for (int i = 0; i < sumData.size(); i++) {
            //data[i]=(float)Math.sqrt((double)sumData.get(i)/(double)samplesPerBar);
            data[i] = (float) ((double) sumData.get(i) / (double) samplesPerBar);
        }

        Waveform res = new Waveform(filename, divisionEvery);
        res.analyze(data, maxAmp, currentSample / channels, sampleRate, channels);
        res.saveToFile(c);
        if (wrl != null) wrl.onReturn(res);
    }

    @Override
    public void feed(short[] buff) {
        //TODO performance improvement needed here. This loop runs millions of times when analyzing a music file.
        //Log2.log(0,this,"WaveformVisuals: Fed shorts. length="+buff.length);
        for (int i = 0; i < buff.length; i++) {
            if (i % 4 == 0) {//TODO HASTY SPEED IMPROVEMENT
                currentTimeInSeconds = currentSample * timePerSample / (double) channels; //TODO This is a hasty fix for stereo support.
                currentBar = (int) (currentTimeInSeconds / divisionEvery);
                if (sumData.size() <= currentBar) {
                    sumData.add(0L);
                    Log2.log(1, this, "Adding bar. (number " + sumData.size() + ", " + currentTimeInSeconds + " seconds)");
                }
                sumData.set(currentBar, sumData.get(currentBar) + Math.abs(buff[i]));
                if (maxAmp < buff[i]) maxAmp = buff[i];
            }
            currentSample++;
        }
        if (spl != null) spl.report(currentSample);
    }
    /*
    @Override
    public void run(){
        SoundFile sf= null;
        try {
            sf = SoundFile.create(filename, new SoundFile.ProgressListener() {
                @Override
                public boolean reportProgress(double fractionComplete) {
                    Log2.log(0,this,"WaveformVisuals>Decoding..."+fractionComplete);
                    return true;
                }
            });
        } catch (Exception e) {
            Log2.log(e);
        }

        ShortBuffer sb=sf.getSamples();
        int size=sf.getNumSamples();
        int divisions=data.length;
        int currentDivision=0;
        float samplesPerDivision=size/(float)divisions;
        long[] sums = new long[divisions];
        int[] numOfSamples=new int[divisions];

        for (int i=0;i<divisions;i++){
            sums[i]=0;
            numOfSamples[i]=0;
        }

        for (int i=0;i<size;i++){
            if (i>samplesPerDivision*(currentDivision+1)) {
                currentDivision++;
                Log2.log(0,this, "On division" + currentDivision);
            }
            if (currentDivision>size){
                Log2.log(3,this, "Rounding error?");
                currentDivision=divisions-1;
            }
            sums[currentDivision]+=sb.get(i)*sb.get(i);
            numOfSamples[currentDivision]++;
            if (Math.abs(sb.get(i))>maxAmp) maxAmp=Math.abs(sb.get(i));
        }

        for (int i=0;i<divisions;i++){
            data[i]=(float)(Math.sqrt((double)sums[i]/(double)numOfSamples[i]));
        }

        sf=null;
        sb=null;

        if (this.owrl!=null) owrl.onReturn(data, maxAmp);
    }*/
}


text:
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [[EventLogger sharedInstance] addCountEventWithTag:@"viewDidLoad"];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
- (IBAction)cleanAll:(id)sender {
    [[EventLogger sharedInstance] cleanAll];
}
- (IBAction)printAll:(id)sender {
    NSLog(@"timeEventList: %@", [EventLogger sharedInstance].timeEventList);
    NSLog(@"countEventList: %@", [EventLogger sharedInstance].countEventList);
    NSLog(@"timeEventArray: %@", [[EventLogger sharedInstance] getEventArray]);
}
- (IBAction)addCount1:(id)sender {
    [[EventLogger sharedInstance] addCountEventWithTag:@"EventCount1"];
}
- (IBAction)addCount2:(id)sender {
    [[EventLogger sharedInstance] addCountEventWithTag:@"EventCount2"];
}

- (IBAction)e1:(id)sender {
    [[EventLogger sharedInstance] startTimeEventWithTag:@"TimeEven1" andInfo:@{@"file1":@"111"}];
}
- (IBAction)e12:(id)sender {
    [[EventLogger sharedInstance] addTimeEventPoint:@"e12" withTag:@"TimeEven1" andInfo:@{@"file2":@"22222"} timeFromPoint:nil];
}
- (IBAction)e13:(id)sender {
    [[EventLogger sharedInstance] addTimeEventPoint:@"e13" withTag:@"TimeEven1" andInfo:nil timeFromPoint:@"e12"];
}

- (IBAction)e2:(id)sender {
    [[EventLogger sharedInstance] startTimeEventWithTag:@"TimeEven2" andInfo:nil];
}
- (IBAction)e21:(id)sender {
    [[EventLogger sharedInstance] addTimeEventPoint:@"op1" withTag:@"TimeEven2" andInfo:@{@"file2":@"22222"} timeFromPoint:nil];
}
- (IBAction)e22:(id)sender {
    [[EventLogger sharedInstance] addTimeEventPoint:@"sacn" withTag:@"TimeEven2" andInfo:@{@"info":@"22222"} timeFromPoint:nil];
}
- (IBAction)e23:(id)sender {
    [[EventLogger sharedInstance] addTimeEventPoint:@"network" withTag:@"TimeEven2" andInfo:nil timeFromPoint:@"sacn"];
}

@end


text:
This feature is borrowed from Bootstrap-select. It give you ability to control the height of dropdown menu to display certain number of options. To use this feature, add an attribute `data-size` or `size`
on `nya-bs-select` element. the value of the attribute is the max number of options you want to display. If the number exceed the limit, an scrollbar will be shown on the dropdown menu.

The default value is `auto` which does not limit the size of dropdown menu.

<example>
<file name="index.html">

data-size="auto" or not set

      {{ option }}

data-size="5"

      {{ option }}

</file>
<file name="script.js">
$scope.options = ['Alpha', 'Bravo', 'Charlie', 'Delta',
  'Echo', 'Foxtrot', 'Golf', 'Hotel', 'India', 'Juliet', 'Kilo', 'Lima',
  'Mike', 'November', 'Oscar', 'Papa', 'Quebec', 'Romeo', 'Sierra',
  'Tango', 'Uniform', 'Victor', 'Whiskey', 'X-ray', 'Yankee', 'Zulu'
];
</file>
</example>


text:
#ifndef __CTRLR_EDITOR__
#define __CTRLR_EDITOR__

#include "CtrlrMacros.h"
#include "CtrlrWindowManagers/CtrlrChildWindowContainer.h"
#include "CtrlrSettings.h"
#include "CtrlrLookAndFeel.h"

class CtrlrManager;
class CtrlrProcessor;

class CtrlrEditor  : public AudioProcessorEditor,
					 public ApplicationCommandTarget,
					 public MenuBarModel,
					 public Slider::Listener
{
	public:
		CtrlrEditor (CtrlrProcessor *ownerFilter, CtrlrManager &_owner);
		~CtrlrEditor();
		enum TopMenuIDs
		{
			MenuFile,
			MenuEdit,
			MenuView,
			MenuPanel,
			MenuMidi,
			MenuPrograms,
			MenuTools,
			MenuHelp
		};

		enum CommandIDs
		{
			doSaveState					= 0x2000,
			doOpenPanel					= 0x2001,
			doNewPanel					= 0x2002,
			showGlobalSettingsDialog	= 0x2003,
			showMidiMonitor             = 0x2005,
			showLogViewer				= 0x2006,
			showMidiCalculator          = 0x2007,
			showAboutDialog             = 0x2008,
			showKeyboardMappingDialog	= 0x200a,
			showMidiToolbar				= 0x200b,

			/* Panel commands */

			doZoomIn					= 0x3001,
			doZoomOut					= 0x3002,
			doCopy						= 0x3003,
			doCut						= 0x3004,
			doPaste						= 0x3005,
			doUndo						= 0x3024,
			doRedo						= 0x3025,
			doSave						= 0x3006,
			doSaveAs					= 0x3007,
			doSaveVersioned				= 0x3008,
			doPanelMode					= 0x300a,
			doPanelLock					= 0x300b,
			doPanelDisableCombosOnEdit	= 0x3027,
			doSendSnapshot				= 0x300c,
			doSaveSaveToCurrentProgram	= 0x300d,
			doSaveSaveToNewProgram		= 0x300e,
			doNewBank					= 0x3010,
			doIdentityRequest			= 0x300f,
			doEditBufferRequest			= 0x3021,
			doCurrentBankRequest		= 0x3022,
			doCurrentProgramRequest		= 0x3023,
			doAllProgramsRequest		= 0x3026,
			showLuaEditor				= 0x3011,
			showMidiLibrary				= 0x3012,
			showModulatorList			= 0x3013,
			showBufferEditor			= 0x3028,
			doClose						= 0x3015,
			showLayers					= 0x3016,
			showLuaConsole				= 0x3017,
			showComparatorTables		= 0x3018,
			doRefreshPropertyLists		= 0x3019,
			doViewPropertyDisplayIDs	= 0x3020,
			doExportFileText			= 0x4001,
			doExportFileZText			= 0x4002,
			doExportFileBin				= 0x4003,
			doExportFileZBin			= 0x4004,
			doExportFileZBinRes			= 0x4005,
			doExportFileInstance		= 0x4006,
			doExportGenerateUID			= 0x4007,
			doExportFileInstanceRestricted		= 0x4008,
			doSnapshotStore						= 0x4009,
			optMidiSnapshotOnLoad				= 0x6003,
			optMidiSnapshotOnProgramChange		= 0x6004,
			doPrevProgram						= 0x6005,
			doNextProgram						= 0x6006,
			doPrevBank							= 0x6007,
			doNextBank							= 0x6008,
			optMidiInputFromHost		= MENU_OFFSET_MIDI + 2,
			optMidiInputFromHostCompare	= MENU_OFFSET_MIDI + 4,
			optMidiOutuptToHost			= MENU_OFFSET_MIDI + 8,
			optMidiThruH2H				= MENU_OFFSET_MIDI + 16,
			optMidiThruH2HChannelize	= MENU_OFFSET_MIDI + 32,
			optMidiThruH2D				= MENU_OFFSET_MIDI + 64,
			optMidiThruH2DChannelize	= MENU_OFFSET_MIDI + 128,
			optMidiThruD2D				= MENU_OFFSET_MIDI + 256,
			optMidiThruD2DChannelize	= MENU_OFFSET_MIDI + 512,
			optMidiThruD2H				= MENU_OFFSET_MIDI + 1024,
			optMidiThruD2HChannelize	= MENU_OFFSET_MIDI + 2048,

			doCrash						= 0x20,
			doDumpVstTables				= 0x21,
			doRegisterExtension			= 0x22,
			doKeyGenerator              = 0x23,
			doProgramWizard             = 0x24,
			doQuit						= 0x00fffffe
		};

		void activeCtrlrChanged();
		const WeakReference<CtrlrEditor>::SharedRef& getWeakReference();
		CtrlrManager &getOwner()											{ return (owner); }
		WeakReference<CtrlrEditor>::Master masterReference;
		void paint (Graphics& g);
		void resized();
		void getAllCommands (Array< CommandID > &commands);
		void getCommandInfo (CommandID commandID, ApplicationCommandInfo &result);
		bool perform (const InvocationInfo &info);

		ApplicationCommandTarget* getNextCommandTarget();
		StringArray getMenuBarNames();
		PopupMenu getMenuForIndex(int topLevelMenuIndex, const String &menuName);
		void menuItemSelected(int menuItemID, int topLevelMenuIndex);
		void sliderValueChanged (Slider* slider);
		MenuBarComponent *getMenuBar();
		CtrlrPanel *getActivePanel();
		CtrlrPanelEditor *getActivePanelEditor();
		bool isPanelActive(const bool checkRestrictedInstance=false);
		const PopupMenu getRecentOpenedFilesMenu();
		const PopupMenu getMidiDeviceMenu(const CtrlrMIDIDeviceType type=inputDevice);
		const PopupMenu getMidiChannelMenu(const CtrlrMIDIDeviceType type=inputDevice);
		uint32 getMidiDeviceMenuOffset(const CtrlrMIDIDeviceType type=inputDevice);
		const Identifier getMidiPropertyName(const CtrlrMIDIDeviceType type=inputDevice);
		const StringArray getRecentOpenedFilesList();
		const var getPanelProperty(const Identifier &propertyName);
		const String getMidiSummary(const CtrlrMIDIDeviceType type=inputDevice);

		bool isRestricted();
		void performShowKeyboardMappingDialog(const int menuItemID);
		void performMidiChannelChange(const int menuItemID);
		void performMidiDeviceChange(const int menuItemID);
		void performMidiOptionChange(const int menuItemID);
		void performProgramChange(const int menuItemID);
		void performMidiHostOptionChange(const int menuItemID);
		void performMidiThruChange(const int menuItemID);
		void performGetEditBuffer();
		void performRecentFileOpen(const int menuItemID);
		void performCustomRequest(const int menuItemID);
		void performKeyGenerator();
		void performProgramWizard();
		void initTest();
		StringArray getRenderingEngines() const;
		int getActiveRenderingEngine() const;
		void setRenderingEngine (int index);
		void setOpenGLRenderingEngine();
		void setUsingOpenGL(const bool isUsingOpenGL);
		CtrlrMenuBarLookAndFeel *getMenuBarLookAndFeel () { return (menuBarLookAndFeel); }
		JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CtrlrEditor)

	private:
		#if JUCE_OPENGL
			OpenGLContext openGLContext;
		#endif
		bool menuHandlerCalled;
		ScopedPointer <CtrlrMenuBarLookAndFeel> menuBarLookAndFeel;
		MenuBarComponent *menuBar;
		TooltipWindow tooltipWindow;
		CtrlrManager &owner;
		ResizableCornerComponent resizer;
		CtrlrProcessor *ownerFilter;
		ComponentBoundsConstrainer constrainer;
		Label l;
		CtrlrPanel *invalidCtrlrPtr;
		Result tempResult;
		int64 lastCommandInvocationMillis;
};

#endif


text:
<?php

namespace Temp\MediaConverter\Format;

/**
 * Image specification
 */
class Image implements Specification
{
    const RESIZE_METHOD_WIDTH = 'width';
    const RESIZE_METHOD_HEIGHT = 'height';
    const RESIZE_METHOD_FIT = 'fit';
    const RESIZE_METHOD_EXACT = 'extact';
    const RESIZE_METHOD_EXACT_FIT = 'extactFit';
    const RESIZE_METHOD_CROP = 'crop';

    /**
     * @var string
     */
    private $format;

    /**
     * @var int
     */
    private $quality;

    /**
     * @var string
     */
    private $colorspace;

    /**
     * @var string
     */
    private $scale;

    /**
     * @var string
     */
    private $resizeMode;

    /**
     * @var int
     */
    private $width;

    /**
     * @var int
     */
    private $height;

    /**
     * @var string
     */
    private $backgroundColor;

    /**
     * @var int
     */
    private $centerX;

    /**
     * @var int
     */
    private $centerY;

    /**
     * @return string
     */
    public function getFormat()
    {
        return $this->format;
    }

    /**
     * @param string $format
     *
     * @return $this
     */
    public function setFormat($format)
    {
        $this->format = $format;

        return $this;
    }

    /**
     * @return int
     */
    public function getQuality()
    {
        return $this->quality;
    }

    /**
     * @param int $quality
     *
     * @return $this
     */
    public function setQuality($quality)
    {
        $this->quality = $quality;

        return $this;
    }

    /**
     * @return string
     */
    public function getColorspace()
    {
        return $this->colorspace;
    }

    /**
     * @param string $colorspace
     *
     * @return $this
     */
    public function setColorspace($colorspace)
    {
        $this->colorspace = $colorspace;

        return $this;
    }

    /**
     * @return string
     */
    public function getScale()
    {
        return $this->scale;
    }

    /**
     * @param string $scale
     *
     * @return $this
     */
    public function setScale($scale)
    {
        $this->scale = $scale;

        return $this;
    }

    /**
     * @return string
     */
    public function getResizeMode()
    {
        return $this->resizeMode;
    }

    /**
     * @param string $resizeMode
     *
     * @return $this
     */
    public function setResizeMode($resizeMode)
    {
        $this->resizeMode = $resizeMode;

        return $this;
    }

    /**
     * @return int
     */
    public function getWidth()
    {
        return $this->width;
    }

    /**
     * @param int $width
     *
     * @return $this
     */
    public function setWidth($width)
    {
        $this->width = $width;

        return $this;
    }

    /**
     * @return int
     */
    public function getHeight()
    {
        return $this->height;
    }

    /**
     * @param int $height
     *
     * @return $this
     */
    public function setHeight($height)
    {
        $this->height = $height;

        return $this;
    }

    /**
     * @return string
     */
    public function getBackgroundColor()
    {
        return $this->backgroundColor;
    }

    /**
     * @param string $backgroundColor
     *
     * @return $this
     */
    public function setBackgroundColor($backgroundColor)
    {
        $this->backgroundColor = $backgroundColor;

        return $this;
    }

    /**
     * @return int
     */
    public function getCenterX()
    {
        return $this->centerX;
    }

    /**
     * @param int $centerX
     *
     * @return $this
     */
    public function setCenterX($centerX)
    {
        $this->centerX = $centerX;

        return $this;
    }

    /**
     * @return int
     */
    public function getCenterY()
    {
        return $this->centerY;
    }

    /**
     * @param int $centerY
     *
     * @return $this
     */
    public function setCenterY($centerY)
    {
        $this->centerY = $centerY;

        return $this;
    }
}