├── .gitignore ├── LICENSE.md ├── README.md ├── frontend ├── .DS_Store ├── .gitignore ├── package-lock.json ├── package.json ├── public │ ├── .DS_Store │ ├── icon.png │ ├── index.html │ └── manifest.json ├── src │ ├── App.js │ ├── Components │ │ ├── AccordionTemplate │ │ │ └── AccordionTemplate.js │ │ ├── Authentication │ │ │ ├── Authentication.js │ │ │ └── Login │ │ │ │ └── Login.js │ │ ├── CampaignTable │ │ │ └── CampaignTable.js │ │ ├── ChannelSelection │ │ │ └── ChannelSelection.js │ │ ├── CheckAndSend │ │ │ └── CheckAndSend.js │ │ ├── FileLoader │ │ │ └── FileLoader.js │ │ ├── LogManager │ │ │ ├── GraphPanel │ │ │ │ └── GraphPanel.js │ │ │ ├── LogPanel │ │ │ │ └── LogPanel.js │ │ │ ├── Logs.js │ │ │ ├── ProgressBar │ │ │ │ └── ProgressBar.js │ │ │ └── TabPanel │ │ │ │ └── TabPanel.js │ │ ├── MainAppBar │ │ │ └── MainAppBar.js │ │ ├── MainBuilder │ │ │ └── MainBuilder.js │ │ ├── MessageBuilder │ │ │ ├── ContentTemplateRenderer │ │ │ │ ├── ContentTemplateRenderer.js │ │ │ │ └── TemplateVariablesInput.js │ │ │ ├── MessageBuilder.js │ │ │ ├── MessageTypeSelection │ │ │ │ └── MessageTypeSelection.js │ │ │ └── TemplateOptions │ │ │ │ └── TemplateOptions.js │ │ ├── MessageOptions │ │ │ ├── LinkShortening │ │ │ │ └── LinkShortening.js │ │ │ ├── MessageOptions.js │ │ │ └── MessageScheduler │ │ │ │ └── MessageScheduler.js │ │ ├── NumberColumnSelection │ │ │ └── NumberColumnSelection.js │ │ ├── ProTip │ │ │ └── ProTip.js │ │ ├── ResultsExport │ │ │ └── ResultsExport.js │ │ ├── SenderBuilder │ │ │ ├── MessagingServiceSelection │ │ │ │ └── MessagingServiceSelection.js │ │ │ ├── SenderBuilder.js │ │ │ └── SenderTypeSelection │ │ │ │ └── SenderTypeSelection.js │ │ └── Settings │ │ │ └── Settings.js │ ├── Redux │ │ ├── localStorage.js │ │ ├── rootReducer.js │ │ ├── slices │ │ │ ├── actionSlice.js │ │ │ ├── authSlice.js │ │ │ ├── csvDataSlice.js │ │ │ ├── messagingSlice.js │ │ │ └── settingsSlice.js │ │ └── store.js │ ├── TODO.txt │ ├── Utils │ │ ├── functions.js │ │ └── variables.js │ ├── exponential-backoff.js │ ├── index.js │ └── theme.js └── yarn.lock ├── serverless ├── .env.example ├── .gitignore ├── functions │ ├── check-auth.private.js │ ├── check-numbers.js │ ├── check-user-authenticated.js │ ├── exponential-backoff.private.js │ ├── fetch-services.js │ ├── fetch-templates.js │ ├── get-message-status.js │ ├── jwt.js │ ├── remove-token.js │ ├── send-broadcast.js │ ├── send-prepare.private.js │ └── send.js ├── package-lock.json └── package.json ├── setup-local-diff-port.sh ├── setup-local-same-port.sh ├── setup-remote.sh └── test.csv /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/LICENSE.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/README.md -------------------------------------------------------------------------------- /frontend/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/.DS_Store -------------------------------------------------------------------------------- /frontend/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/.gitignore -------------------------------------------------------------------------------- /frontend/package-lock.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/package-lock.json -------------------------------------------------------------------------------- /frontend/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/package.json -------------------------------------------------------------------------------- /frontend/public/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/public/.DS_Store -------------------------------------------------------------------------------- /frontend/public/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/public/icon.png -------------------------------------------------------------------------------- /frontend/public/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/public/index.html -------------------------------------------------------------------------------- /frontend/public/manifest.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/public/manifest.json -------------------------------------------------------------------------------- /frontend/src/App.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/App.js -------------------------------------------------------------------------------- /frontend/src/Components/AccordionTemplate/AccordionTemplate.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/AccordionTemplate/AccordionTemplate.js -------------------------------------------------------------------------------- /frontend/src/Components/Authentication/Authentication.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/Authentication/Authentication.js -------------------------------------------------------------------------------- /frontend/src/Components/Authentication/Login/Login.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/Authentication/Login/Login.js -------------------------------------------------------------------------------- /frontend/src/Components/CampaignTable/CampaignTable.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/CampaignTable/CampaignTable.js -------------------------------------------------------------------------------- /frontend/src/Components/ChannelSelection/ChannelSelection.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/ChannelSelection/ChannelSelection.js -------------------------------------------------------------------------------- /frontend/src/Components/CheckAndSend/CheckAndSend.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/CheckAndSend/CheckAndSend.js -------------------------------------------------------------------------------- /frontend/src/Components/FileLoader/FileLoader.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/FileLoader/FileLoader.js -------------------------------------------------------------------------------- /frontend/src/Components/LogManager/GraphPanel/GraphPanel.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/LogManager/GraphPanel/GraphPanel.js -------------------------------------------------------------------------------- /frontend/src/Components/LogManager/LogPanel/LogPanel.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/LogManager/LogPanel/LogPanel.js -------------------------------------------------------------------------------- /frontend/src/Components/LogManager/Logs.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/LogManager/Logs.js -------------------------------------------------------------------------------- /frontend/src/Components/LogManager/ProgressBar/ProgressBar.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/LogManager/ProgressBar/ProgressBar.js -------------------------------------------------------------------------------- /frontend/src/Components/LogManager/TabPanel/TabPanel.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/LogManager/TabPanel/TabPanel.js -------------------------------------------------------------------------------- /frontend/src/Components/MainAppBar/MainAppBar.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/MainAppBar/MainAppBar.js -------------------------------------------------------------------------------- /frontend/src/Components/MainBuilder/MainBuilder.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/MainBuilder/MainBuilder.js -------------------------------------------------------------------------------- /frontend/src/Components/MessageBuilder/ContentTemplateRenderer/ContentTemplateRenderer.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/MessageBuilder/ContentTemplateRenderer/ContentTemplateRenderer.js -------------------------------------------------------------------------------- /frontend/src/Components/MessageBuilder/ContentTemplateRenderer/TemplateVariablesInput.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/MessageBuilder/ContentTemplateRenderer/TemplateVariablesInput.js -------------------------------------------------------------------------------- /frontend/src/Components/MessageBuilder/MessageBuilder.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/MessageBuilder/MessageBuilder.js -------------------------------------------------------------------------------- /frontend/src/Components/MessageBuilder/MessageTypeSelection/MessageTypeSelection.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/MessageBuilder/MessageTypeSelection/MessageTypeSelection.js -------------------------------------------------------------------------------- /frontend/src/Components/MessageBuilder/TemplateOptions/TemplateOptions.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/MessageBuilder/TemplateOptions/TemplateOptions.js -------------------------------------------------------------------------------- /frontend/src/Components/MessageOptions/LinkShortening/LinkShortening.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/MessageOptions/LinkShortening/LinkShortening.js -------------------------------------------------------------------------------- /frontend/src/Components/MessageOptions/MessageOptions.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/MessageOptions/MessageOptions.js -------------------------------------------------------------------------------- /frontend/src/Components/MessageOptions/MessageScheduler/MessageScheduler.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/MessageOptions/MessageScheduler/MessageScheduler.js -------------------------------------------------------------------------------- /frontend/src/Components/NumberColumnSelection/NumberColumnSelection.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/NumberColumnSelection/NumberColumnSelection.js -------------------------------------------------------------------------------- /frontend/src/Components/ProTip/ProTip.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/ProTip/ProTip.js -------------------------------------------------------------------------------- /frontend/src/Components/ResultsExport/ResultsExport.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/ResultsExport/ResultsExport.js -------------------------------------------------------------------------------- /frontend/src/Components/SenderBuilder/MessagingServiceSelection/MessagingServiceSelection.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/SenderBuilder/MessagingServiceSelection/MessagingServiceSelection.js -------------------------------------------------------------------------------- /frontend/src/Components/SenderBuilder/SenderBuilder.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/SenderBuilder/SenderBuilder.js -------------------------------------------------------------------------------- /frontend/src/Components/SenderBuilder/SenderTypeSelection/SenderTypeSelection.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/SenderBuilder/SenderTypeSelection/SenderTypeSelection.js -------------------------------------------------------------------------------- /frontend/src/Components/Settings/Settings.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Components/Settings/Settings.js -------------------------------------------------------------------------------- /frontend/src/Redux/localStorage.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Redux/localStorage.js -------------------------------------------------------------------------------- /frontend/src/Redux/rootReducer.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Redux/rootReducer.js -------------------------------------------------------------------------------- /frontend/src/Redux/slices/actionSlice.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Redux/slices/actionSlice.js -------------------------------------------------------------------------------- /frontend/src/Redux/slices/authSlice.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Redux/slices/authSlice.js -------------------------------------------------------------------------------- /frontend/src/Redux/slices/csvDataSlice.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Redux/slices/csvDataSlice.js -------------------------------------------------------------------------------- /frontend/src/Redux/slices/messagingSlice.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Redux/slices/messagingSlice.js -------------------------------------------------------------------------------- /frontend/src/Redux/slices/settingsSlice.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Redux/slices/settingsSlice.js -------------------------------------------------------------------------------- /frontend/src/Redux/store.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Redux/store.js -------------------------------------------------------------------------------- /frontend/src/TODO.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/TODO.txt -------------------------------------------------------------------------------- /frontend/src/Utils/functions.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Utils/functions.js -------------------------------------------------------------------------------- /frontend/src/Utils/variables.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/Utils/variables.js -------------------------------------------------------------------------------- /frontend/src/exponential-backoff.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/exponential-backoff.js -------------------------------------------------------------------------------- /frontend/src/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/index.js -------------------------------------------------------------------------------- /frontend/src/theme.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/src/theme.js -------------------------------------------------------------------------------- /frontend/yarn.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/frontend/yarn.lock -------------------------------------------------------------------------------- /serverless/.env.example: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/serverless/.env.example -------------------------------------------------------------------------------- /serverless/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/serverless/.gitignore -------------------------------------------------------------------------------- /serverless/functions/check-auth.private.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/serverless/functions/check-auth.private.js -------------------------------------------------------------------------------- /serverless/functions/check-numbers.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/serverless/functions/check-numbers.js -------------------------------------------------------------------------------- /serverless/functions/check-user-authenticated.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/serverless/functions/check-user-authenticated.js -------------------------------------------------------------------------------- /serverless/functions/exponential-backoff.private.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/serverless/functions/exponential-backoff.private.js -------------------------------------------------------------------------------- /serverless/functions/fetch-services.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/serverless/functions/fetch-services.js -------------------------------------------------------------------------------- /serverless/functions/fetch-templates.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/serverless/functions/fetch-templates.js -------------------------------------------------------------------------------- /serverless/functions/get-message-status.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/serverless/functions/get-message-status.js -------------------------------------------------------------------------------- /serverless/functions/jwt.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/serverless/functions/jwt.js -------------------------------------------------------------------------------- /serverless/functions/remove-token.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/serverless/functions/remove-token.js -------------------------------------------------------------------------------- /serverless/functions/send-broadcast.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/serverless/functions/send-broadcast.js -------------------------------------------------------------------------------- /serverless/functions/send-prepare.private.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/serverless/functions/send-prepare.private.js -------------------------------------------------------------------------------- /serverless/functions/send.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/serverless/functions/send.js -------------------------------------------------------------------------------- /serverless/package-lock.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/serverless/package-lock.json -------------------------------------------------------------------------------- /serverless/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/serverless/package.json -------------------------------------------------------------------------------- /setup-local-diff-port.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/setup-local-diff-port.sh -------------------------------------------------------------------------------- /setup-local-same-port.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/setup-local-same-port.sh -------------------------------------------------------------------------------- /setup-remote.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/setup-remote.sh -------------------------------------------------------------------------------- /test.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evanTheTerribleWarrior/Twilio-Outbound-Messaging/HEAD/test.csv --------------------------------------------------------------------------------