Updated Branches: refs/heads/trunk 94fd897f6 -> 873b3502b
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/873b3502/contrib/ambari-scom/msi/src/Result/Properties/Resources.resx ---------------------------------------------------------------------- diff --git a/contrib/ambari-scom/msi/src/Result/Properties/Resources.resx b/contrib/ambari-scom/msi/src/Result/Properties/Resources.resx new file mode 100644 index 0000000..97b0bb7 --- /dev/null +++ b/contrib/ambari-scom/msi/src/Result/Properties/Resources.resx @@ -0,0 +1,130 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. --> + +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/873b3502/contrib/ambari-scom/msi/src/Result/Properties/Settings.Designer.cs ---------------------------------------------------------------------- diff --git a/contrib/ambari-scom/msi/src/Result/Properties/Settings.Designer.cs b/contrib/ambari-scom/msi/src/Result/Properties/Settings.Designer.cs new file mode 100644 index 0000000..d68c2d4 --- /dev/null +++ b/contrib/ambari-scom/msi/src/Result/Properties/Settings.Designer.cs @@ -0,0 +1,45 @@ +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//------------------------------------------------------------------------------ +// <auto-generated> +// This code was generated by a tool. +// Runtime Version:4.0.30319.18052 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// </auto-generated> +//------------------------------------------------------------------------------ + +namespace Ambari_Result.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/873b3502/contrib/ambari-scom/msi/src/Result/Properties/Settings.settings ---------------------------------------------------------------------- diff --git a/contrib/ambari-scom/msi/src/Result/Properties/Settings.settings b/contrib/ambari-scom/msi/src/Result/Properties/Settings.settings new file mode 100644 index 0000000..5f90ec3 --- /dev/null +++ b/contrib/ambari-scom/msi/src/Result/Properties/Settings.settings @@ -0,0 +1,20 @@ +<?xml version='1.0' encoding='utf-8'?> +<!-- Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. --> + +<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"> + <Profiles> + <Profile Name="(Default)" /> + </Profiles> + <Settings /> +</SettingsFile> http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/873b3502/contrib/ambari-scom/msi/src/ambari-scom.wxs ---------------------------------------------------------------------- diff --git a/contrib/ambari-scom/msi/src/ambari-scom.wxs b/contrib/ambari-scom/msi/src/ambari-scom.wxs new file mode 100644 index 0000000..179d575 --- /dev/null +++ b/contrib/ambari-scom/msi/src/ambari-scom.wxs @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. --> + +<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> + <Product Id="{C627953F-1C50-4520-AB91-A938F7E01B58}" Codepage="1252" Language="1033" Manufacturer="Apache" Name="Ambari-SCOM" UpgradeCode="{CD3CAC20-F0A9-4EF7-9C75-CF660D0697AA}" Version="1.3.0.0"> + <Package Comments="This installer database contains the logic and data required to install Apache Ambari-SCOM." Compressed="yes" Description="Ambari-SCOM" InstallerVersion="100" Languages="1033" Manufacturer="Apache" Platform="x86" /> + <Binary Id="GUI" SourceFile="SourceDir\bin\GUI_Ambari.exe" /> + <Binary Id="WixCA" SourceFile="SourceDir\bin\wixca" /> + <Binary Id="Result" SourceFile="SourceDir\bin\Ambari_Result.exe" /> + <Condition Message="You need to be an administrator to install this product.">Privileged</Condition> + <CustomAction Id="INSTINTERRUPT" Error="Installation interrupted by user" /> + <CustomAction Id="INSTSUCCESS" Error="Installation completed succesfully" /> + <CustomAction Id="INSTFAILED" Error="Installation failed. Please see installation log for details: [TARGETDIR]AmbariInstallFiles\AmbariSetupTools\ambari.winpkg.install.log" /> + <CustomAction Id="SET_AMB_LAYOUT" Property="AMB_LAYOUT" Value="[%APPDATA]\amb_install\ambariproperties.txt" /> + <CustomAction Id="GUI" BinaryKey="GUI" ExeCommand="" /> + <CustomAction Id="InstallCommand" Property="InstallDeferred" Value=""cmd.exe" /c "set START_SERVICES=[START_SERVICES] && set HDP_LAYOUT=[HDP_LAYOUT] && set AMB_LAYOUT=[AMB_LAYOUT] && [AMBARI_SETUP_TOOLS]bootstrap_install.cmd [AMBARI_SETUP_TOOLS]"" /> + <CustomAction Id="InstallDeferred" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" /> + <CustomAction Id="UninstallCommand" Property="UninstallDeferred" Value=""cmd.exe" /c "[AMBARI_SETUP_TOOLS]bootstrap_uninstall.cmd [AMBARI_SETUP_TOOLS]"" /> + <CustomAction Id="UninstallDeferred" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" /> + <CustomAction Id="Result" BinaryKey="Result" ExeCommand="" Execute="deferred" /> + <Directory Id="TARGETDIR" Name="SourceDir"> + <Directory Id="FromDir" Name="AmbariInstallFiles" ShortName="d6tzoyaf"> + <Directory Id="PACKAGE_HOME" Name="AmbariPackages" ShortName="98sctbni"> + <Component Id="AmbariWinpkg" Guid="{EE5641F2-EA9E-421C-8A9C-8EA92678E940}"> + <File Id="AmbariWinpkg" Name="ambari-winpkg.zip" KeyPath="yes" ShortName="0nfmvp3j.zip" DiskId="1" Source="SourceDir\AmbariPackages\Ambari-Winpkg.zip" /> + </Component> + </Directory> + <Directory Id="AMBARI_SETUP_TOOLS" Name="AmbariSetupTools" ShortName="nr2cdh24"> + <Component Id="WinpkgTool" Guid="{56CE1985-7C34-4759-801D-04BDB7676ADC}"> + <File Id="winpkg.utils.psm1" Name="winpkg.utils.psm1" KeyPath="yes" ShortName="gw4d2dvs.psm" DiskId="1" Source="SourceDir\AmbariSetupTools\winpkg.utils.psm1" /> + <File Id="winpkg.ps1" Name="winpkg.ps1" DiskId="1" Source="SourceDir\AmbariSetupTools\winpkg.ps1" /> + <File Id="winpkg.cmd" Name="winpkg.cmd" DiskId="1" Source="SourceDir\AmbariSetupTools\winpkg.cmd" /> + <File Id="bootstrap_uninstall.cmd" Name="bootstrap_uninstall.cmd" ShortName="qxdboha4.cmd" DiskId="1" Source="SourceDir\AmbariSetupTools\bootstrap_uninstall.cmd" /> + <File Id="bootstrap_install.cmd" Name="bootstrap_install.cmd" ShortName="vxuo5ffy.cmd" DiskId="1" Source="SourceDir\AmbariSetupTools\bootstrap_install.cmd" /> + </Component> + </Directory> + </Directory> + </Directory> + <Feature Id="Complete" Level="1"> + <ComponentRef Id="WinpkgTool" /> + <ComponentRef Id="AmbariWinpkg" /> + </Feature> + <Media Id="1" Cabinet="Sample.cab" EmbedCab="yes" /> + <Property Id="ALLUSERS" Value="2" /> + <Property Id="NETFRAMEWORK40CLIENT" Secure="yes" /> + <Property Id="NETFRAMEWORK40FULL" Secure="yes" /> + <Property Id="MSIUSEREALADMINDETECTION" Value="1" /> + <InstallExecuteSequence> + <Custom Action="UninstallCommand" Sequence="1501">Installed</Custom> + <Custom Action="UninstallDeferred" Sequence="1502">Installed</Custom> + <Custom Action="InstallCommand" Sequence="4003">NOT Installed</Custom> + <Custom Action="InstallDeferred" Sequence="4004">NOT Installed</Custom> + <Custom Action="Result" Sequence="6500">REMOVE</Custom> + <LaunchConditions Sequence="100" /> + <ValidateProductID Sequence="700" /> + <CostInitialize Sequence="800" /> + <FileCost Sequence="900" /> + <CostFinalize Sequence="1000" /> + <InstallValidate Sequence="1400" /> + <InstallInitialize Sequence="1500" /> + <ProcessComponents Sequence="1600" /> + <UnpublishFeatures Sequence="1800" /> + <RemoveEnvironmentStrings Sequence="3300" /> + <RemoveFiles Sequence="3500" /> + <RemoveFolders Sequence="3600" /> + <CreateFolders Sequence="3700" /> + <InstallFiles Sequence="4000" /> + <WriteEnvironmentStrings Sequence="5200" /> + <RegisterUser Sequence="6000" /> + <RegisterProduct Sequence="6100" /> + <PublishFeatures Sequence="6300" /> + <PublishProduct Sequence="6400" /> + <InstallFinalize Sequence="6600" /> + </InstallExecuteSequence> + <InstallUISequence> + <Custom Action="INSTFAILED" OnExit="error" /> + <Custom Action="INSTINTERRUPT" OnExit="cancel" /> + <Custom Action="INSTSUCCESS" OnExit="success" /> + <Custom Action="SET_AMB_LAYOUT" Sequence="400">NOT Installed</Custom> + <Custom Action="GUI" Sequence="500">NOT Installed</Custom> + </InstallUISequence> + </Product> +</Wix> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/873b3502/contrib/ambari-scom/package.bat ---------------------------------------------------------------------- diff --git a/contrib/ambari-scom/package.bat b/contrib/ambari-scom/package.bat new file mode 100644 index 0000000..e5b0460 --- /dev/null +++ b/contrib/ambari-scom/package.bat @@ -0,0 +1,61 @@ +@echo off +@rem Licensed to the Apache Software Foundation (ASF) under one or more +@rem contributor license agreements. See the NOTICE file distributed with +@rem this work for additional information regarding copyright ownership. +@rem The ASF licenses this file to You under the Apache License, Version 2.0 +@rem (the "License"); you may not use this file except in compliance with +@rem the License. You may obtain a copy of the License at +@rem +@rem http://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License.set ARTIFACT_DIR=artifacts +@echo on + +IF dummy==dummy%1 ( +SET SCOM_VERSION="0.9.0-99" +) ELSE ( +SET SCOM_VERSION=%1 +) + +echo SCOM_VERSION = %SCOM_VERSION% + +set ARTIFACT_DIR=artifacts +set TEMP_DIR=%ARTIFACT_DIR%\temp +set FINAL_ZIPS=%ARTIFACT_DIR%\zips +set SCOM_DIR=%TEMP_DIR%\server +set SINK_DIR=%TEMP_DIR%\metrics-sink +set MP_DIR=%TEMP_DIR%\mp + +rmdir /s /q %ARTIFACT_DIR% + +mkdir %FINAL_ZIPS% || exit /b 1 +mkdir %SCOM_DIR% || exit /b 1 +mkdir %MP_DIR% || exit /b 1 +mkdir %SINK_DIR% || exit /b 1 + +copy ambari-scom-server\target\ambari-scom*.zip %SCOM_DIR% || exit /b 1 +copy ambari-scom-server\target\ambari-scom*.jar %SCOM_DIR% || exit /b 1 + +copy metrics-sink\target\*.jar %SINK_DIR% || exit /b 1 +copy metrics-sink\db\*.ddl %SINK_DIR% || exit /b 1 + +copy management-pack\Hadoop_MP\ManagementMp\bin\Debug\*.mpb %MP_DIR% || exit /b 1 +copy management-pack\Hadoop_MP\HadoopMp\bin\Debug\*.mpb %MP_DIR% || exit /b 1 +copy management-pack\Hadoop_MP\PresentationMp\bin\Debug\*.mpb %MP_DIR% || exit /b 1 + +copy msi\*.msi %FINAL_ZIPS% || exit /b 1 +copy LICENSE %FINAL_ZIPS% || exit /b 1 +copy MSPL-LICENSE %FINAL_ZIPS% || exit /b 1 +copy NOTICE %FINAL_ZIPS% || exit /b 1 +copy README.md %FINAL_ZIPS% || exit /b 1 + + +powershell.exe -NoProfile -InputFormat none -ExecutionPolicy unrestricted -command "%cd%\msi\build\zip.ps1" "%SCOM_DIR%" "%FINAL_ZIPS%\server.zip" || exit /b 1 +powershell.exe -NoProfile -InputFormat none -ExecutionPolicy unrestricted -command "%cd%\msi\build\zip.ps1" "%SINK_DIR%" "%FINAL_ZIPS%\metrics-sink.zip" || exit /b 1 +powershell.exe -NoProfile -InputFormat none -ExecutionPolicy unrestricted -command "%cd%\msi\build\zip.ps1" "%MP_DIR%" "%FINAL_ZIPS%\mp.zip" || exit /b 1 + +powershell.exe -NoProfile -InputFormat none -ExecutionPolicy unrestricted -command "%cd%\msi\build\zip.ps1" "%FINAL_ZIPS%" "%ARTIFACT_DIR%\ambari-scom-%SCOM_VERSION%.zip" || exit /b 1 http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/873b3502/contrib/ambari-scom/pom.xml ---------------------------------------------------------------------- diff --git a/contrib/ambari-scom/pom.xml b/contrib/ambari-scom/pom.xml new file mode 100644 index 0000000..66e3d67 --- /dev/null +++ b/contrib/ambari-scom/pom.xml @@ -0,0 +1,69 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.ambari</groupId> + <artifactId>ambari-scom-project</artifactId> + <packaging>pom</packaging> + <version>0.9.0</version> + <name>Ambari SCOM Project</name> + <modules> + <module>ambari-scom-server</module> + <module>metrics-sink</module> + </modules> + <build> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.apache.rat</groupId> + <artifactId>apache-rat-plugin</artifactId> + <version>0.8</version> + </plugin> + </plugins> + </pluginManagement> + <plugins> + <plugin> + <groupId>org.apache.rat</groupId> + <artifactId>apache-rat-plugin</artifactId> + <configuration> + <excludes> + <!--GIT files--> + <exclude>.git/</exclude> + <exclude>**/.gitignore</exclude> + <exclude>**/.gitattributes</exclude> + <!--gitignore content--> + <exclude>.idea/</exclude> + <exclude>pass.txt</exclude> + <exclude>.DS_Store</exclude> + <exclude>.iml/</exclude> + <exclude>.classpath</exclude> + <exclude>.project</exclude> + <exclude>.settings</exclude> + <!--license files--> + <exclude>MSPL-LICENSE</exclude> + <!--VS generated files--> + <exclude>**/*.resources</exclude> + <exclude>**/*.rtf</exclude> + <exclude>**/*.snk</exclude> + <exclude>**/*.cs</exclude> + </excludes> + </configuration> + </plugin> + </plugins> + </build> +</project>
